面谈/面试

This commit is contained in:
zhangchenbiao
2024-03-19 17:52:09 +08:00
parent a758b07bed
commit 202d356a60
19 changed files with 466 additions and 1261 deletions

View File

@@ -84,12 +84,12 @@ public class EnterpriseUserDAO {
public Map<String, String> getUserNameAndMobile(List<String> userIds){
List<EnterpriseUserDO> userList = getUserInfoByUserIds(userIds);
return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile(), o.getName())).collect(Collectors.toMap(k -> k.getUserId(), v -> v.getName() + " " + v.getMobile()));
return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile())).collect(Collectors.toMap(k -> k.getUserId(), v -> v.getName() + " " + v.getMobile()));
}
public Map<String, String> getUserNameMap(List<String> userIds){
List<EnterpriseUserDO> userList = getUserInfoByUserIds(userIds);
return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getMobile(), o.getName())).collect(Collectors.toMap(k -> k.getUserId(), v -> v.getName()));
return userList.stream().filter(o->!StringUtils.isAnyBlank(o.getName())).collect(Collectors.toMap(k -> k.getUserId(), v -> v.getName()));
}
public Map<String, EnterpriseUserDO> getUserMap(List<String> userIds){

View File

@@ -94,12 +94,12 @@ public class HyOpenAreaInfoDAO {
return ListUtils.emptyIfNull(hyOpenAreaInfoDOS).stream().collect(Collectors.toMap(k->k.getId(), v->v.getAreaName(), (k1, k2)->k1));
}
public Map<String, String> selectNameMapByIds(List<Long> ids){
public Map<Long, String> selectNameMapByIds(List<Long> ids){
if (CollectionUtils.isEmpty(ids)){
return Maps.newHashMap();
}
List<HyOpenAreaInfoDO> hyOpenAreaInfoDOS = hyOpenAreaInfoMapper.selectByIds(ids);
return ListUtils.emptyIfNull(hyOpenAreaInfoDOS).stream().collect(Collectors.toMap(k->String.valueOf(k.getId()), v->v.getAreaPath().replace("/"," ")));
return ListUtils.emptyIfNull(hyOpenAreaInfoDOS).stream().collect(Collectors.toMap(k->k.getId(), v->v.getAreaPath().replace("/"," ").trim()));
}

View File

@@ -66,4 +66,11 @@ public class LineCalendarsEventDAO {
return param.getId();
}
public Integer updateCalendarsEvent(LineCalendarsEventDO param){
if(Objects.isNull(param.getId())){
return null;
}
return lineCalendarsEventMapper.updateByPrimaryKeySelective(param);
}
}

View File

@@ -2,9 +2,11 @@ package com.cool.store.dao;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.mapper.LineInfoMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.Objects;
/**
* @author zhangchenbiao
@@ -12,6 +14,7 @@ import javax.annotation.Resource;
* @Description:
* @date 2024-03-19 10:49
*/
@Slf4j
@Repository
public class LineInfoDAO {
@@ -23,7 +26,11 @@ public class LineInfoDAO {
return lineInfoMapper.selectByPrimaryKey(lineId);
}
public Integer updateLineStage(Long lineId){
return lineInfoMapper.updateByPrimaryKeySelective(null);
public Integer updateLineInfo(LineInfoDO param){
if(Objects.isNull(param.getId())){
log.error("线索id为空");
return null;
}
return lineInfoMapper.updateByPrimaryKeySelective(param);
}
}

View File

@@ -1,8 +1,13 @@
package com.cool.store.dao;
import com.cool.store.dto.interview.LineInterviewPageDTO;
import com.cool.store.entity.LineInterviewDO;
import com.cool.store.enums.InterviewTypeEnum;
import com.cool.store.mapper.LineInterviewMapper;
import com.cool.store.request.LineInterviewPageRequest;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
@@ -36,4 +41,14 @@ public class LineInterviewDAO {
return interview.getId();
}
/**
* 获取面试分页列表
* @param request
* @return
*/
public Page<LineInterviewPageDTO> getInterviewerPage(LineInterviewPageRequest request){
PageHelper.startPage(request.getPageNum(), request.getPageSize());
return lineInterviewMapper.getInterviewerPage(request);
}
}

View File

@@ -1,6 +1,9 @@
package com.cool.store.mapper;
import com.cool.store.dto.interview.LineInterviewPageDTO;
import com.cool.store.entity.LineInterviewDO;
import com.cool.store.request.LineInterviewPageRequest;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
@@ -14,4 +17,10 @@ public interface LineInterviewMapper extends Mapper<LineInterviewDO> {
*/
LineInterviewDO getInterviewInfo(@Param("lineId") Long lineId, @Param("interviewType") Integer interviewType);
/**
* 获取面试分页
* @param request
* @return
*/
Page<LineInterviewPageDTO> getInterviewerPage(LineInterviewPageRequest request);
}

View File

@@ -8,7 +8,7 @@
<result column="mobile" jdbcType="VARCHAR" property="mobile" />
<result column="username" jdbcType="VARCHAR" property="username" />
<result column="sex" jdbcType="VARCHAR" property="sex" />
<result column="want_shop_area_id" jdbcType="VARCHAR" property="wantShopAreaId" />
<result column="want_shop_area_id" jdbcType="BIGINT" property="wantShopAreaId" />
<result column="live_address" jdbcType="VARCHAR" property="liveAddress" />
<result column="workflow_stage" jdbcType="TINYINT" property="workflowStage" />
<result column="workflow_sub_stage" jdbcType="TINYINT" property="workflowSubStage" />
@@ -23,6 +23,7 @@
<result column="second_interviewer" jdbcType="VARCHAR" property="secondInterviewer" />
<result column="user_portrait" jdbcType="VARCHAR" property="userPortrait" />
<result column="is_join" jdbcType="BIT" property="isJoin" />
<result column="line_status" jdbcType="TINYINT" property="lineStatus" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="create_user_id" jdbcType="VARCHAR" property="createUserId" />

View File

@@ -29,4 +29,50 @@
<select id="getInterviewInfo" resultMap="BaseResultMap">
select * from xfsg_line_interview where line_id = #{lineId} and interview_type = #{interviewType} and deleted = '0'
</select>
<select id="getInterviewerPage" resultType="com.cool.store.dto.interview.LineInterviewPageDTO">
select
a.line_id as lineId,
a.start_time as startTime,
a.end_time as endTime,
a.actual_start_time as actualStartTime,
a.actual_end_time as actualEndTime,
a.interviewer as interviewer,
a.interview_status as interviewStatus,
a.interview_type as interviewType,
a.room_id as roomId,
b.username as username,
b.mobile as mobile,
b.user_portrait as userPortrait,
b.want_shop_area_id as wantShopAreaId,
b.investment_manager as investmentManager,
b.user_portrait as userPortrait,
b.line_source as lineSource
from
xfsg_line_interview a inner join xfsg_line_info b on a.line_id = b.id
where
a.deleted = '0' and b.deleted = '0' and a.interview_type = #{interviewType}
<if test="username != null and username != ''">
and b.username like concat('%', #{username}, '%')
</if>
<if test="mobile != null and mobile != ''">
and b.mobile like concat('%', #{mobile}, '%')
</if>
<if test="workflowStage != null and workflowStage != ''">
and b.workflow_stage = #{workflowStage}
</if>
<if test="workflowSubStage != null and workflowSubStage != ''">
and b.workflow_sub_stage = #{workflowSubStage}
</if>
<if test="interviewStatus != null and interviewStatus != ''">
and a.interview_status = #{interviewStatus}
</if>
<if test="lineSource != null and lineSource != ''">
and b.line_source = #{lineSource}
</if>
<if test="interviewer != null and interviewer != ''">
and a.interviewer = #{interviewer}
</if>
</select>
</mapper>

View File

@@ -0,0 +1,54 @@
package com.cool.store.dto.interview;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zhangchenbiao
* @FileName: LineInterviewPageDTO
* @Description:
* @date 2024-03-19 16:11
*/
@Data
public class LineInterviewPageDTO {
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("线索姓名")
private String username;
@ApiModelProperty("手机号")
private String mobile;
@ApiModelProperty("意向区域")
private Long wantShopAreaId;
@ApiModelProperty("用户标签")
private String userPortrait;
@ApiModelProperty("计划开始时间")
private String startTime;
@ApiModelProperty("计划结束时间")
private String endTime;
@ApiModelProperty("面试状态")
private Integer interviewStatus;
@ApiModelProperty("招商经理")
private String investmentManager;
@ApiModelProperty("线索来源")
private Integer lineSource;
@ApiModelProperty("实际开始时间")
private String actualStartTime;
@ApiModelProperty("实际结束时间")
private String actualEndTime;
@ApiModelProperty("面审人")
private String interviewer;
}

View File

@@ -1,8 +1,11 @@
package com.cool.store.entity;
import lombok.Data;
import java.util.Date;
import javax.persistence.*;
@Data
@Table(name = "xfsg_line_audit_info")
public class LineAuditInfoDO {
@Id
@@ -68,197 +71,4 @@ public class LineAuditInfoDO {
*/
private Boolean deleted;
/**
* @return id
*/
public Long getId() {
return id;
}
/**
* @param id
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取partner_user_info.partner_id
*
* @return partner_id - partner_user_info.partner_id
*/
public String getPartnerId() {
return partnerId;
}
/**
* 设置partner_user_info.partner_id
*
* @param partnerId partner_user_info.partner_id
*/
public void setPartnerId(String partnerId) {
this.partnerId = partnerId;
}
/**
* 获取line_info.id
*
* @return line_id - line_info.id
*/
public Long getLineId() {
return lineId;
}
/**
* 设置line_info.id
*
* @param lineId line_info.id
*/
public void setLineId(Long lineId) {
this.lineId = lineId;
}
/**
* 获取结果类型 0通过,1拒绝,2结束跟进
*
* @return result_type - 结果类型 0通过,1拒绝,2结束跟进
*/
public Integer getResultType() {
return resultType;
}
/**
* 设置结果类型 0通过,1拒绝,2结束跟进
*
* @param resultType 结果类型 0通过,1拒绝,2结束跟进
*/
public void setResultType(Integer resultType) {
this.resultType = resultType;
}
/**
* 获取通过原因
*
* @return pass_reason - 通过原因
*/
public String getPassReason() {
return passReason;
}
/**
* 设置通过原因
*
* @param passReason 通过原因
*/
public void setPassReason(String passReason) {
this.passReason = passReason;
}
/**
* 获取公开拒绝原因
*
* @return reject_public_reason - 公开拒绝原因
*/
public String getRejectPublicReason() {
return rejectPublicReason;
}
/**
* 设置公开拒绝原因
*
* @param rejectPublicReason 公开拒绝原因
*/
public void setRejectPublicReason(String rejectPublicReason) {
this.rejectPublicReason = rejectPublicReason;
}
/**
* 获取真实拒绝原因
*
* @return reject_real_reason - 真实拒绝原因
*/
public String getRejectRealReason() {
return rejectRealReason;
}
/**
* 设置真实拒绝原因
*
* @param rejectRealReason 真实拒绝原因
*/
public void setRejectRealReason(String rejectRealReason) {
this.rejectRealReason = rejectRealReason;
}
/**
* 获取证明文件或凭证
*
* @return certify_file - 证明文件或凭证
*/
public String getCertifyFile() {
return certifyFile;
}
/**
* 设置证明文件或凭证
*
* @param certifyFile 证明文件或凭证
*/
public void setCertifyFile(String certifyFile) {
this.certifyFile = certifyFile;
}
/**
* 获取创建时间
*
* @return create_time - 创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置创建时间
*
* @param createTime 创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取更新时间
*
* @return update_time - 更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* 设置更新时间
*
* @param updateTime 更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取是否删除0.否 1.是
*
* @return deleted - 是否删除0.否 1.是
*/
public Boolean getDeleted() {
return deleted;
}
/**
* 设置是否删除0.否 1.是
*
* @param deleted 是否删除0.否 1.是
*/
public void setDeleted(Boolean deleted) {
this.deleted = deleted;
}
}

View File

@@ -1,8 +1,11 @@
package com.cool.store.entity;
import lombok.Data;
import java.util.Date;
import javax.persistence.*;
@Data
@Table(name = "xfsg_line_calendars_event")
public class LineCalendarsEventDO {
@Id
@@ -34,7 +37,7 @@ public class LineCalendarsEventDO {
private String eventTitle;
/**
* 房间状态:0面谈;1面试;
* 面试类型:0面谈;1一审;2二审
*/
@Column(name = "interview_type")
private Integer interviewType;
@@ -79,215 +82,4 @@ public class LineCalendarsEventDO {
@Column(name = "update_time")
private Date updateTime;
/**
* @return id
*/
public Long getId() {
return id;
}
/**
* @param id
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取区域ID
*
* @return region_id - 区域ID
*/
public Long getRegionId() {
return regionId;
}
/**
* 设置区域ID
*
* @param regionId 区域ID
*/
public void setRegionId(Long regionId) {
this.regionId = regionId;
}
/**
* 获取line_info.id
*
* @return line_id - line_info.id
*/
public Long getLineId() {
return lineId;
}
/**
* 设置line_info.id
*
* @param lineId line_info.id
*/
public void setLineId(Long lineId) {
this.lineId = lineId;
}
/**
* 获取partner_user_info.partner_id
*
* @return partner_id - partner_user_info.partner_id
*/
public String getPartnerId() {
return partnerId;
}
/**
* 设置partner_user_info.partner_id
*
* @param partnerId partner_user_info.partner_id
*/
public void setPartnerId(String partnerId) {
this.partnerId = partnerId;
}
/**
* 获取事件标题
*
* @return event_title - 事件标题
*/
public String getEventTitle() {
return eventTitle;
}
/**
* 设置事件标题
*
* @param eventTitle 事件标题
*/
public void setEventTitle(String eventTitle) {
this.eventTitle = eventTitle;
}
/**
* 获取房间状态:0面谈;1面试;
*
* @return interview_type - 房间状态:0面谈;1面试;
*/
public Integer getInterviewType() {
return interviewType;
}
/**
* 设置房间状态:0面谈;1面试;
*
* @param interviewType 房间状态:0面谈;1面试;
*/
public void setInterviewType(Integer interviewType) {
this.interviewType = interviewType;
}
/**
* 获取面试开始时间
*
* @return start_time - 面试开始时间
*/
public Date getStartTime() {
return startTime;
}
/**
* 设置面试开始时间
*
* @param startTime 面试开始时间
*/
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
/**
* 获取面试结束时间
*
* @return end_time - 面试结束时间
*/
public Date getEndTime() {
return endTime;
}
/**
* 设置面试结束时间
*
* @param endTime 面试结束时间
*/
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
/**
* 获取面试官
*
* @return interviewer - 面试官
*/
public String getInterviewer() {
return interviewer;
}
/**
* 设置面试官
*
* @param interviewer 面试官
*/
public void setInterviewer(String interviewer) {
this.interviewer = interviewer;
}
/**
* 获取删除标识
*
* @return deleted - 删除标识
*/
public Boolean getDeleted() {
return deleted;
}
/**
* 设置删除标识
*
* @param deleted 删除标识
*/
public void setDeleted(Boolean deleted) {
this.deleted = deleted;
}
/**
* 获取创建时间
*
* @return create_time - 创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置创建时间
*
* @param createTime 创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取更新时间
*
* @return update_time - 更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* 设置更新时间
*
* @param updateTime 更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

View File

@@ -1,8 +1,11 @@
package com.cool.store.entity;
import lombok.Data;
import java.util.Date;
import javax.persistence.*;
@Data
@Table(name = "xfsg_line_info")
public class LineInfoDO {
@Id
@@ -37,7 +40,7 @@ public class LineInfoDO {
* 意向开店区域
*/
@Column(name = "want_shop_area_id")
private String wantShopAreaId;
private Long wantShopAreaId;
/**
* 居住地址
@@ -123,6 +126,12 @@ public class LineInfoDO {
@Column(name = "is_join")
private Boolean isJoin;
/**
* 0.公海 1.私海 2黑名单
*/
@Column(name = "line_status")
private Integer lineStatus;
/**
* 创建时间
*/
@@ -152,457 +161,4 @@ public class LineInfoDO {
*/
private Boolean deleted;
/**
* @return id
*/
public Long getId() {
return id;
}
/**
* @param id
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取partner_user_info.partner_id
*
* @return partner_id - partner_user_info.partner_id
*/
public String getPartnerId() {
return partnerId;
}
/**
* 设置partner_user_info.partner_id
*
* @param partnerId partner_user_info.partner_id
*/
public void setPartnerId(String partnerId) {
this.partnerId = partnerId;
}
public Long getRegionId() {
return regionId;
}
public void setRegionId(Long regionId) {
this.regionId = regionId;
}
/**
* 获取手机号
*
* @return mobile - 手机号
*/
public String getMobile() {
return mobile;
}
/**
* 设置手机号
*
* @param mobile 手机号
*/
public void setMobile(String mobile) {
this.mobile = mobile;
}
/**
* 获取申请人姓名
*
* @return username - 申请人姓名
*/
public String getUsername() {
return username;
}
/**
* 设置申请人姓名
*
* @param username 申请人姓名
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取性别0未选,1男,2女
*
* @return sex - 性别0未选,1男,2女
*/
public String getSex() {
return sex;
}
/**
* 设置性别0未选,1男,2女
*
* @param sex 性别0未选,1男,2女
*/
public void setSex(String sex) {
this.sex = sex;
}
/**
* 获取意向开店区域
*
* @return want_shop_area_id - 意向开店区域
*/
public String getWantShopAreaId() {
return wantShopAreaId;
}
/**
* 设置意向开店区域
*
* @param wantShopAreaId 意向开店区域
*/
public void setWantShopAreaId(String wantShopAreaId) {
this.wantShopAreaId = wantShopAreaId;
}
/**
* 获取居住地址
*
* @return live_address - 居住地址
*/
public String getLiveAddress() {
return liveAddress;
}
/**
* 设置居住地址
*
* @param liveAddress 居住地址
*/
public void setLiveAddress(String liveAddress) {
this.liveAddress = liveAddress;
}
/**
* 获取流程阶段:1意向加盟;2新店进展;
*
* @return workflow_stage - 流程阶段:1意向加盟;2新店进展;
*/
public Integer getWorkflowStage() {
return workflowStage;
}
/**
* 设置流程阶段:1意向加盟;2新店进展;
*
* @param workflowStage 流程阶段:1意向加盟;2新店进展;
*/
public void setWorkflowStage(Integer workflowStage) {
this.workflowStage = workflowStage;
}
/**
* 获取流程子阶段
*
* @return workflow_sub_stage - 流程子阶段
*/
public Integer getWorkflowSubStage() {
return workflowSubStage;
}
/**
* 设置流程子阶段
*
* @param workflowSubStage 流程子阶段
*/
public void setWorkflowSubStage(Integer workflowSubStage) {
this.workflowSubStage = workflowSubStage;
}
/**
* 获取流程子阶段状态
*
* @return workflow_sub_stage_status - 流程子阶段状态
*/
public Integer getWorkflowSubStageStatus() {
return workflowSubStageStatus;
}
/**
* 设置流程子阶段状态
*
* @param workflowSubStageStatus 流程子阶段状态
*/
public void setWorkflowSubStageStatus(Integer workflowSubStageStatus) {
this.workflowSubStageStatus = workflowSubStageStatus;
}
/**
* 获取待选址铺位
*
* @return select_site_num - 待选址铺位
*/
public Integer getSelectSiteNum() {
return selectSiteNum;
}
/**
* 设置待选址铺位
*
* @param selectSiteNum 待选址铺位
*/
public void setSelectSiteNum(Integer selectSiteNum) {
this.selectSiteNum = selectSiteNum;
}
/**
* 获取筹备中铺位
*
* @return prepare_shop_num - 筹备中铺位
*/
public Integer getPrepareShopNum() {
return prepareShopNum;
}
/**
* 设置筹备中铺位
*
* @param prepareShopNum 筹备中铺位
*/
public void setPrepareShopNum(Integer prepareShopNum) {
this.prepareShopNum = prepareShopNum;
}
/**
* 获取营业中铺位
*
* @return open_shop_num - 营业中铺位
*/
public Integer getOpenShopNum() {
return openShopNum;
}
/**
* 设置营业中铺位
*
* @param openShopNum 营业中铺位
*/
public void setOpenShopNum(Integer openShopNum) {
this.openShopNum = openShopNum;
}
/**
* 获取线索来源
*
* @return line_source - 线索来源
*/
public Integer getLineSource() {
return lineSource;
}
/**
* 设置线索来源
*
* @param lineSource 线索来源
*/
public void setLineSource(Integer lineSource) {
this.lineSource = lineSource;
}
/**
* 获取招商经理
*
* @return investment_manager - 招商经理
*/
public String getInvestmentManager() {
return investmentManager;
}
/**
* 设置招商经理
*
* @param investmentManager 招商经理
*/
public void setInvestmentManager(String investmentManager) {
this.investmentManager = investmentManager;
}
/**
* 获取拓展经理
*
* @return development_manager - 拓展经理
*/
public String getDevelopmentManager() {
return developmentManager;
}
/**
* 设置拓展经理
*
* @param developmentManager 拓展经理
*/
public void setDevelopmentManager(String developmentManager) {
this.developmentManager = developmentManager;
}
/**
* 获取一审面试官
*
* @return first_interviewer - 一审面试官
*/
public String getFirstInterviewer() {
return firstInterviewer;
}
/**
* 设置一审面试官
*
* @param firstInterviewer 一审面试官
*/
public void setFirstInterviewer(String firstInterviewer) {
this.firstInterviewer = firstInterviewer;
}
/**
* 获取二审面试官
*
* @return second_interviewer - 二审面试官
*/
public String getSecondInterviewer() {
return secondInterviewer;
}
/**
* 设置二审面试官
*
* @param secondInterviewer 二审面试官
*/
public void setSecondInterviewer(String secondInterviewer) {
this.secondInterviewer = secondInterviewer;
}
/**
* 获取用户画像
*
* @return user_portrait - 用户画像
*/
public String getUserPortrait() {
return userPortrait;
}
/**
* 设置用户画像
*
* @param userPortrait 用户画像
*/
public void setUserPortrait(String userPortrait) {
this.userPortrait = userPortrait;
}
/**
* 获取是否是加盟商0.否 1.是
*
* @return is_join - 是否是加盟商0.否 1.是
*/
public Boolean getIsJoin() {
return isJoin;
}
/**
* 设置是否是加盟商0.否 1.是
*
* @param isJoin 是否是加盟商0.否 1.是
*/
public void setIsJoin(Boolean isJoin) {
this.isJoin = isJoin;
}
/**
* 获取创建时间
*
* @return create_time - 创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置创建时间
*
* @param createTime 创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取更新时间
*
* @return update_time - 更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* 设置更新时间
*
* @param updateTime 更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
/**
* 获取创建人
*
* @return create_user_id - 创建人
*/
public String getCreateUserId() {
return createUserId;
}
/**
* 设置创建人
*
* @param createUserId 创建人
*/
public void setCreateUserId(String createUserId) {
this.createUserId = createUserId;
}
/**
* 获取更新人
*
* @return update_user_id - 更新人
*/
public String getUpdateUserId() {
return updateUserId;
}
/**
* 设置更新人
*
* @param updateUserId 更新人
*/
public void setUpdateUserId(String updateUserId) {
this.updateUserId = updateUserId;
}
/**
* 获取是否删除0.否 1.是
*
* @return deleted - 是否删除0.否 1.是
*/
public Boolean getDeleted() {
return deleted;
}
/**
* 设置是否删除0.否 1.是
*
* @param deleted 是否删除0.否 1.是
*/
public void setDeleted(Boolean deleted) {
this.deleted = deleted;
}
}

View File

@@ -1,8 +1,11 @@
package com.cool.store.entity;
import lombok.Data;
import java.util.Date;
import javax.persistence.*;
@Data
@Table(name = "xfsg_line_interview")
public class LineInterviewDO {
@Id
@@ -133,395 +136,4 @@ public class LineInterviewDO {
@Column(name = "update_time")
private Date updateTime;
/**
* @return id
*/
public Long getId() {
return id;
}
/**
* @param id
*/
public void setId(Long id) {
this.id = id;
}
/**
* 获取line_info.id
*
* @return line_id - line_info.id
*/
public Long getLineId() {
return lineId;
}
/**
* 设置line_info.id
*
* @param lineId line_info.id
*/
public void setLineId(Long lineId) {
this.lineId = lineId;
}
/**
* 获取partner_user_info.partner_id
*
* @return partner_id - partner_user_info.partner_id
*/
public String getPartnerId() {
return partnerId;
}
/**
* 设置partner_user_info.partner_id
*
* @param partnerId partner_user_info.partner_id
*/
public void setPartnerId(String partnerId) {
this.partnerId = partnerId;
}
/**
* 获取区域ID
*
* @return region_id - 区域ID
*/
public Long getRegionId() {
return regionId;
}
/**
* 设置区域ID
*
* @param regionId 区域ID
*/
public void setRegionId(Long regionId) {
this.regionId = regionId;
}
/**
* 获取面试日期
*
* @return interview_date - 面试日期
*/
public Date getInterviewDate() {
return interviewDate;
}
/**
* 设置面试日期
*
* @param interviewDate 面试日期
*/
public void setInterviewDate(Date interviewDate) {
this.interviewDate = interviewDate;
}
/**
* 获取面试开始时间
*
* @return start_time - 面试开始时间
*/
public Date getStartTime() {
return startTime;
}
/**
* 设置面试开始时间
*
* @param startTime 面试开始时间
*/
public void setStartTime(Date startTime) {
this.startTime = startTime;
}
/**
* 获取面试结束时间
*
* @return end_time - 面试结束时间
*/
public Date getEndTime() {
return endTime;
}
/**
* 设置面试结束时间
*
* @param endTime 面试结束时间
*/
public void setEndTime(Date endTime) {
this.endTime = endTime;
}
/**
* 获取0未参加1参加
*
* @return is_partner_interview - 0未参加1参加
*/
public Integer getIsPartnerInterview() {
return isPartnerInterview;
}
/**
* 设置0未参加1参加
*
* @param isPartnerInterview 0未参加1参加
*/
public void setIsPartnerInterview(Integer isPartnerInterview) {
this.isPartnerInterview = isPartnerInterview;
}
/**
* 获取实际开始时间
*
* @return actual_start_time - 实际开始时间
*/
public Date getActualStartTime() {
return actualStartTime;
}
/**
* 设置实际开始时间
*
* @param actualStartTime 实际开始时间
*/
public void setActualStartTime(Date actualStartTime) {
this.actualStartTime = actualStartTime;
}
/**
* 获取实际结束时间
*
* @return actual_end_time - 实际结束时间
*/
public Date getActualEndTime() {
return actualEndTime;
}
/**
* 设置实际结束时间
*
* @param actualEndTime 实际结束时间
*/
public void setActualEndTime(Date actualEndTime) {
this.actualEndTime = actualEndTime;
}
/**
* 获取房间号
*
* @return room_id - 房间号
*/
public String getRoomId() {
return roomId;
}
/**
* 设置房间号
*
* @param roomId 房间号
*/
public void setRoomId(String roomId) {
this.roomId = roomId;
}
/**
* 获取房间密码
*
* @return room_password - 房间密码
*/
public String getRoomPassword() {
return roomPassword;
}
/**
* 设置房间密码
*
* @param roomPassword 房间密码
*/
public void setRoomPassword(String roomPassword) {
this.roomPassword = roomPassword;
}
/**
* 获取面试官
*
* @return interviewer - 面试官
*/
public String getInterviewer() {
return interviewer;
}
/**
* 设置面试官
*
* @param interviewer 面试官
*/
public void setInterviewer(String interviewer) {
this.interviewer = interviewer;
}
/**
* 获取房间状态:0待开放;1已开放; 2已关闭
*
* @return room_status - 房间状态:0待开放;1已开放; 2已关闭
*/
public Integer getRoomStatus() {
return roomStatus;
}
/**
* 设置房间状态:0待开放;1已开放; 2已关闭
*
* @param roomStatus 房间状态:0待开放;1已开放; 2已关闭
*/
public void setRoomStatus(Integer roomStatus) {
this.roomStatus = roomStatus;
}
/**
* 获取面试状态 0待面试 1已通过 2未通过
*
* @return interview_status - 面试状态 0待面试 1已通过 2未通过
*/
public Integer getInterviewStatus() {
return interviewStatus;
}
/**
* 设置面试状态 0待面试 1已通过 2未通过
*
* @param interviewStatus 面试状态 0待面试 1已通过 2未通过
*/
public void setInterviewStatus(Integer interviewStatus) {
this.interviewStatus = interviewStatus;
}
/**
* 获取面试类型:0面谈1一审2二审
*
* @return interview_type - 面试类型:0面谈1一审2二审
*/
public Integer getInterviewType() {
return interviewType;
}
/**
* 设置面试类型:0面谈1一审2二审
*
* @param interviewType 面试类型:0面谈1一审2二审
*/
public void setInterviewType(Integer interviewType) {
this.interviewType = interviewType;
}
/**
* 获取视频链接
*
* @return video_url - 视频链接
*/
public String getVideoUrl() {
return videoUrl;
}
/**
* 设置视频链接
*
* @param videoUrl 视频链接
*/
public void setVideoUrl(String videoUrl) {
this.videoUrl = videoUrl;
}
/**
* 获取line_audit_info.id
*
* @return audit_id - line_audit_info.id
*/
public Long getAuditId() {
return auditId;
}
/**
* 设置line_audit_info.id
*
* @param auditId line_audit_info.id
*/
public void setAuditId(Long auditId) {
this.auditId = auditId;
}
/**
* 获取line_calendars_event.id
*
* @return calendars_event_id - line_calendars_event.id
*/
public Long getCalendarsEventId() {
return calendarsEventId;
}
/**
* 设置line_calendars_event.id
*
* @param calendarsEventId line_calendars_event.id
*/
public void setCalendarsEventId(Long calendarsEventId) {
this.calendarsEventId = calendarsEventId;
}
/**
* 获取删除标识
*
* @return deleted - 删除标识
*/
public Boolean getDeleted() {
return deleted;
}
/**
* 设置删除标识
*
* @param deleted 删除标识
*/
public void setDeleted(Boolean deleted) {
this.deleted = deleted;
}
/**
* 获取创建时间
*
* @return create_time - 创建时间
*/
public Date getCreateTime() {
return createTime;
}
/**
* 设置创建时间
*
* @param createTime 创建时间
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* 获取更新时间
*
* @return update_time - 更新时间
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* 设置更新时间
*
* @param updateTime 更新时间
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}

View File

@@ -0,0 +1,39 @@
package com.cool.store.request;
import com.cool.store.common.PageBasicInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @author zhangchenbiao
* @FileName: LineInterviewPageRequest
* @Description:面试列表
* @date 2024-03-19 15:51
*/
@Data
public class LineInterviewPageRequest extends PageBasicInfo {
@ApiModelProperty("线索姓名")
private String username;
@ApiModelProperty("手机号")
private String mobile;
@ApiModelProperty("流程阶段")
private String workflowStage;
@ApiModelProperty("流程子阶段")
private String workflowSubStage;
@ApiModelProperty("面试状态")
private Integer interviewStatus;
@ApiModelProperty("线索来源")
private Integer lineSource;
@ApiModelProperty("面试类型:0面谈;1一审;2二审")
private Integer interviewType;
private String interviewer;
}

View File

@@ -0,0 +1,27 @@
package com.cool.store.request;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @author zhangchenbiao
* @FileName: AppointmentTimeRequest
* @Description:预约时间
* @date 2024-03-19 9:57
*/
@Data
public class ModifyInterviewerRequest {
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("面试类型:0面谈1一审2二审")
private Integer interviewType;
@NotNull(message = "面审官不能为空")
@ApiModelProperty("面审官")
private String interviewer;
}

View File

@@ -0,0 +1,102 @@
package com.cool.store.vo.interview;
import com.cool.store.dto.interview.LineInterviewPageDTO;
import com.cool.store.utils.StringUtil;
import com.google.common.collect.Lists;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author zhangchenbiao
* @FileName: LineInterviewPageVO
* @Description:
* @date 2024-03-19 15:55
*/
@Data
public class LineInterviewPageVO {
@ApiModelProperty("线索id")
private Long lineId;
@ApiModelProperty("线索姓名")
private String username;
@ApiModelProperty("手机号")
private String mobile;
@ApiModelProperty("意向区域")
private String wantShopArea;
@ApiModelProperty("用户标签")
private List<String> userPortraitList;
@ApiModelProperty("计划开始时间")
private String startTime;
@ApiModelProperty("计划结束时间")
private String endTime;
@ApiModelProperty("面试状态")
private Integer interviewStatus;
@ApiModelProperty("招商经理")
private String investmentManagerUsername;
@ApiModelProperty("线索来源")
private Integer lineSource;
@ApiModelProperty("实际开始时间")
private String actualStartTime;
@ApiModelProperty("实际结束时间")
private String actualEndTime;
@ApiModelProperty("面审人")
private String interviewerUsername;
public static List<LineInterviewPageVO> convertList(List<LineInterviewPageDTO> list, Map<Long, String> userPortraitMap, Map<String, String> userNameMap, Map<Long, String> cityNameMap){
if(CollectionUtils.isEmpty(list)){
return Lists.newArrayList();
}
List<LineInterviewPageVO> resultList = new ArrayList<>();
for (LineInterviewPageDTO lineInterviewPage : list) {
LineInterviewPageVO result = new LineInterviewPageVO();
result.setLineId(lineInterviewPage.getLineId());
result.setUsername(lineInterviewPage.getUsername());
result.setMobile(lineInterviewPage.getMobile());
result.setWantShopArea(cityNameMap.get(lineInterviewPage.getWantShopAreaId()));
result.setStartTime(lineInterviewPage.getStartTime());
result.setEndTime(lineInterviewPage.getEndTime());
result.setInterviewStatus(lineInterviewPage.getInterviewStatus());
result.setInvestmentManagerUsername(userNameMap.get(lineInterviewPage.getInvestmentManager()));
result.setLineSource(lineInterviewPage.getLineSource());
result.setActualStartTime(lineInterviewPage.getActualStartTime());
result.setActualEndTime(lineInterviewPage.getActualEndTime());
result.setInterviewerUsername(userNameMap.get(lineInterviewPage.getInterviewer()));
List<String> userPortraitList = new ArrayList<>();
if(StringUtils.isNotBlank(lineInterviewPage.getUserPortrait())){
String[] parts = lineInterviewPage.getUserPortrait().split(",");
for (String part : parts) {
String trimmedPart = part.trim();
if (StringUtils.isNotBlank(trimmedPart)) {
String s = userPortraitMap.get(Long.valueOf(part));
if(StringUtils.isNotBlank(s)){
userPortraitList.add(s);
}
}
}
result.setUserPortraitList(userPortraitList);
}
resultList.add(result);
}
return resultList;
}
}

View File

@@ -1,7 +1,11 @@
package com.cool.store.service;
import com.cool.store.request.AppointmentTimeRequest;
import com.cool.store.request.LineInterviewPageRequest;
import com.cool.store.request.ModifyInterviewerRequest;
import com.cool.store.vo.interview.AppointmentTimeVO;
import com.cool.store.vo.interview.LineInterviewPageVO;
import com.github.pagehelper.PageInfo;
import java.time.LocalDate;
import java.util.List;
@@ -29,4 +33,25 @@ public interface LineInterviewService {
* @return
*/
Boolean appointmentTime(AppointmentTimeRequest request);
/**
* 修改面试时间
* @param request
* @return
*/
Boolean modifyAppointmentTime(AppointmentTimeRequest request);
/**
* 修改面审官
* @param request
* @return
*/
Boolean modifyInterviewer(ModifyInterviewerRequest request);
/**
* 获取分页
* @param request
* @return
*/
PageInfo<LineInterviewPageVO> getInterviewerPage(LineInterviewPageRequest request);
}

View File

@@ -1,8 +1,8 @@
package com.cool.store.service.impl;
import com.cool.store.dao.LineCalendarsEventDAO;
import com.cool.store.dao.LineInfoDAO;
import com.cool.store.dao.LineInterviewDAO;
import com.cool.store.dao.*;
import com.cool.store.dto.interview.LineInterviewPageDTO;
import com.cool.store.entity.HyOpenAreaInfoDO;
import com.cool.store.entity.LineCalendarsEventDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.LineInterviewDO;
@@ -10,10 +10,17 @@ import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.InterviewTypeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.AppointmentTimeRequest;
import com.cool.store.request.LineInterviewPageRequest;
import com.cool.store.request.ModifyInterviewerRequest;
import com.cool.store.service.LabelService;
import com.cool.store.service.LineInterviewService;
import com.cool.store.utils.UUIDUtils;
import com.cool.store.utils.poi.DateUtils;
import com.cool.store.vo.interview.AppointmentTimeVO;
import com.cool.store.vo.interview.LineInterviewPageVO;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.stereotype.Service;
@@ -21,7 +28,10 @@ import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author zhangchenbiao
@@ -38,6 +48,12 @@ public class LineInterviewServiceImpl implements LineInterviewService {
private LineInterviewDAO lineInterviewDAO;
@Resource
private LineCalendarsEventDAO lineCalendarsEventDAO;
@Resource
private LabelService labelService;
@Resource
private EnterpriseUserDAO enterpriseUserDAO;
@Resource
private HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
@Override
public List<AppointmentTimeVO> getAppointmentTime(Long lineId, Integer interviewType, LocalDate appointmentDate) {
@@ -80,12 +96,13 @@ public class LineInterviewServiceImpl implements LineInterviewService {
calendarsEvent.setPartnerId(lineInfo.getPartnerId());
calendarsEvent.setEventTitle(lineInfo.getUsername() + " " + (InterviewTypeEnum.MEET.equals(interviewType) ? "面谈" :"面审"));
calendarsEvent.setInterviewType(request.getInterviewType());
calendarsEvent.setInterviewDate(startTime);
calendarsEvent.setStartTime(startTime);
calendarsEvent.setEndTime(endTime);
calendarsEvent.setInterviewer(interviewer);
Long eventId = lineCalendarsEventDAO.addCalendarsEvent(calendarsEvent);
//跟新线索状态为已预约
lineInfoDAO.updateLineStage(request.getLineId());
lineInfoDAO.updateLineInfo(lineInfo);
LineInterviewDO interviewInfo = lineInterviewDAO.getInterviewInfo(lineInfo.getId(), interviewType);
if(Objects.isNull(interviewInfo)){
LineInterviewDO addInterview = new LineInterviewDO();
@@ -109,4 +126,68 @@ public class LineInterviewServiceImpl implements LineInterviewService {
lineInterviewDAO.updateInterviewInfo(interviewInfo);
return Boolean.TRUE;
}
@Override
public Boolean modifyAppointmentTime(AppointmentTimeRequest request) {
InterviewTypeEnum interviewType = InterviewTypeEnum.match(request.getInterviewType());
LineInterviewDO interviewInfo = lineInterviewDAO.getInterviewInfo(request.getLineId(), interviewType);
if(Objects.isNull(interviewInfo)){
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
Date startTime = DateUtils.strToDate(request.getStartTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
Date endTime = DateUtils.strToDate(request.getEndTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
interviewInfo.setInterviewDate(startTime);
interviewInfo.setStartTime(startTime);
interviewInfo.setEndTime(endTime);
lineInterviewDAO.updateInterviewInfo(interviewInfo);
LineCalendarsEventDO update = new LineCalendarsEventDO();
update.setId(interviewInfo.getCalendarsEventId());
update.setStartTime(startTime);
update.setEndTime(endTime);
update.setInterviewDate(startTime);
lineCalendarsEventDAO.updateCalendarsEvent(update);
return true;
}
@Override
public Boolean modifyInterviewer(ModifyInterviewerRequest request) {
InterviewTypeEnum interviewType = InterviewTypeEnum.match(request.getInterviewType());
LineInterviewDO interviewInfo = lineInterviewDAO.getInterviewInfo(request.getLineId(), interviewType);
if(Objects.isNull(interviewInfo)){
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
}
interviewInfo.setInterviewer(request.getInterviewer());
lineInterviewDAO.updateInterviewInfo(interviewInfo);
LineCalendarsEventDO update = new LineCalendarsEventDO();
update.setId(interviewInfo.getCalendarsEventId());
update.setInterviewer(request.getInterviewer());
lineCalendarsEventDAO.updateCalendarsEvent(update);
LineInfoDO lineInfo = new LineInfoDO();
lineInfo.setId(request.getLineId());
if(InterviewTypeEnum.INTERVIEW.equals(interviewType)){
lineInfo.setFirstInterviewer(request.getInterviewer());
}
if(InterviewTypeEnum.SECOND_INTERVIEW.equals(interviewType)){
lineInfo.setSecondInterviewer(request.getInterviewer());
}
lineInfoDAO.updateLineInfo(lineInfo);
return true;
}
@Override
public PageInfo<LineInterviewPageVO> getInterviewerPage(LineInterviewPageRequest request) {
Page<LineInterviewPageDTO> pageInfo = lineInterviewDAO.getInterviewerPage(request);
List<String> userPortraitList = pageInfo.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(LineInterviewPageDTO::getUserPortrait).collect(Collectors.toList());
List<String> investmentManagerUserIds = pageInfo.stream().filter(x -> StringUtils.isNotEmpty(x.getInvestmentManager() )).map(LineInterviewPageDTO::getInvestmentManager).collect(Collectors.toList());
List<String> interviewerIds = pageInfo.stream().filter(x -> StringUtils.isNotEmpty(x.getInterviewer() )).map(LineInterviewPageDTO::getInterviewer).collect(Collectors.toList());
List<Long> wantShopAreaIds = pageInfo.stream().filter(x -> Objects.nonNull(x.getWantShopAreaId() )).map(LineInterviewPageDTO::getWantShopAreaId).collect(Collectors.toList());
Map<Long, String> cityNameMap = hyOpenAreaInfoDAO.selectNameMapByIds(wantShopAreaIds);
List<String> userIds = Stream.concat(investmentManagerUserIds.stream(), interviewerIds.stream()).distinct().collect(Collectors.toList());
Map<String, String> userNameMap = enterpriseUserDAO.getUserNameMap(userIds);
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(userPortraitList);
List<LineInterviewPageVO> resultList = LineInterviewPageVO.convertList(pageInfo, userPortraitMap, userNameMap, cityNameMap);
PageInfo resultPage = new PageInfo(pageInfo);
resultPage.setList(resultList);
return resultPage;
}
}

View File

@@ -1,9 +1,13 @@
package com.cool.store.controller.webc;
import com.cool.store.request.AppointmentTimeRequest;
import com.cool.store.request.LineInterviewPageRequest;
import com.cool.store.request.ModifyInterviewerRequest;
import com.cool.store.response.ResponseResult;
import com.cool.store.service.LineInterviewService;
import com.cool.store.vo.interview.AppointmentTimeVO;
import com.cool.store.vo.interview.LineInterviewPageVO;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
@@ -52,4 +56,22 @@ public class LineInterviewController {
return ResponseResult.success(lineInterviewService.appointmentTime(request));
}
@ApiOperation("修改面审时间")
@PostMapping("/appointment/time/modify")
public ResponseResult<Boolean> modifyAppointmentTime(@RequestBody @Validated AppointmentTimeRequest request) {
return ResponseResult.success(lineInterviewService.modifyAppointmentTime(request));
}
@ApiOperation("修改面试官")
@PostMapping("/interviewer/modify")
public ResponseResult<Boolean> modifyInterviewer(@RequestBody @Validated ModifyInterviewerRequest request) {
return ResponseResult.success(lineInterviewService.modifyInterviewer(request));
}
@ApiOperation("面试列表")
@PostMapping("/interviewer/page")
public ResponseResult<PageInfo<LineInterviewPageVO>> getInterviewerPage(@RequestBody LineInterviewPageRequest request) {
return ResponseResult.success(lineInterviewService.getInterviewerPage(request));
}
}