init
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
package com.newyetai.recruit.company.constant;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: guixinman
|
||||
* @create: 2023-02-27 14:29
|
||||
**/
|
||||
public interface CompanyConstants {
|
||||
/**
|
||||
* 岗位文件类型 1:图片 2:视频
|
||||
*/
|
||||
String COMPANY_FILE_TYPE_IMG = "1";
|
||||
String COMPANY_FILE_TYPE_VIDEO = "2";
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
package com.newyetai.recruit.company.controller;
|
||||
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.common.validation.Create;
|
||||
import com.newyetai.common.validation.Update;
|
||||
import com.newyetai.recruit.company.dto.HrCompanyDTO;
|
||||
import com.newyetai.recruit.company.dto.HrCompanyPageQueryDTO;
|
||||
import com.newyetai.recruit.company.entity.HrCompany;
|
||||
import com.newyetai.recruit.company.service.IHrCompanyService;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-企业管理 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@Api(tags = "企业管理信息")
|
||||
@RestController
|
||||
@RequestMapping("/company")
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class HrCompanyController {
|
||||
|
||||
private final IHrCompanyService companyService;
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*/
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("创建企业信息")
|
||||
public AlitaResult<Void> create(@Validated(Create.class) @RequestBody HrCompanyDTO hrCompanyDTO) {
|
||||
companyService.create(hrCompanyDTO);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@PutMapping("/update")
|
||||
@ApiOperation("修改企业信息")
|
||||
public AlitaResult<Integer> update(
|
||||
@Validated(Update.class) @RequestBody HrCompanyDTO hrCompanyDTO) {
|
||||
return AlitaResult.success(companyService.update(hrCompanyDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 详情
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
@ApiOperation("企业信息详情")
|
||||
public AlitaResult<HrCompanyDTO> detail(HrCompanyDTO hrCompanyDTO) {
|
||||
return AlitaResult.success(companyService.detail(hrCompanyDTO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*/
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("分页查询")
|
||||
public AlitaResult<Page<HrCompanyDTO>> page(@Validated HrCompanyPageQueryDTO queryDTO) {
|
||||
queryDTO.check();
|
||||
companyService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
/**
|
||||
* 不分页查询
|
||||
*/
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("不分页查询")
|
||||
public AlitaResult<List<HrCompanyDTO>> list(@Validated HrCompanyPageQueryDTO queryDTO) {
|
||||
queryDTO.check();
|
||||
return AlitaResult.success(companyService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/export")
|
||||
@ApiOperation("导出")
|
||||
public void export(@Validated HrCompanyPageQueryDTO queryDTO) {
|
||||
queryDTO.check();
|
||||
companyService.export(queryDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ApiOperation("查询单个")
|
||||
public AlitaResult<HrCompany> findById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(companyService.findById(id));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.newyetai.recruit.company.dao;
|
||||
|
||||
|
||||
import com.newyetai.recruit.company.dto.HrCompanyDTO;
|
||||
import com.newyetai.recruit.company.dto.HrCompanyPageQueryDTO;
|
||||
import com.newyetai.recruit.company.entity.HrCompany;
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-企业信息表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@Mapper
|
||||
public interface HrCompanyMapper extends MyMapper<HrCompany> {
|
||||
List<HrCompanyDTO> page(HrCompanyPageQueryDTO hrCompanyPageQueryDTO);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.newyetai.recruit.company.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
import com.newyetai.common.validation.Create;
|
||||
import com.newyetai.common.validation.Update;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 人力资源公司dto
|
||||
*
|
||||
* @author Carlye
|
||||
* @date 2021/01/08
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel("招聘系统客户信息DTO")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class HrCompanyDTO extends BaseDTO {
|
||||
|
||||
private static final long serialVersionUID = -2216352275325005059L;
|
||||
|
||||
@ApiModelProperty("机构ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("统一社会信用代码")
|
||||
private String creditCode;
|
||||
|
||||
@ApiModelProperty("企业LOGO FileRecord")
|
||||
private String companyLogo;
|
||||
|
||||
@ApiModelProperty("名称")
|
||||
@NotNull(message = "名称不能为空", groups = {Create.class, Update.class})
|
||||
@Length(max = 32,message = "名称超长", groups = {Create.class, Update.class})
|
||||
private String companyName;
|
||||
|
||||
@ApiModelProperty("机构名称")
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty("联系人")
|
||||
@Length(max = 20,message = "联系人长度超长", groups = {Create.class, Update.class})
|
||||
private String contactPerson;
|
||||
|
||||
@Length(max = 50,message = "联系方式长度超长", groups = {Create.class, Update.class})
|
||||
@ApiModelProperty("联系方式")
|
||||
private String contactWay;
|
||||
|
||||
@Length(max = 100,message = "企业简介长度超长", groups = {Create.class, Update.class})
|
||||
@ApiModelProperty("公司简介")
|
||||
private String companyProfile;
|
||||
|
||||
@ApiModelProperty("公司描述")
|
||||
private String companyDescription;
|
||||
|
||||
@ApiModelProperty("行业 (数据字典)")
|
||||
private String companyIndustry;
|
||||
|
||||
@ApiModelProperty("规模 (数据字典)")
|
||||
private String companySize;
|
||||
|
||||
@ApiModelProperty("公司注册地址")
|
||||
@Length(max = 32,message = "企业地址长度超长", groups = {Create.class, Update.class})
|
||||
private String companyRegisterAddress;
|
||||
|
||||
@ApiModelProperty("省份 (数据字典)")
|
||||
private Integer province;
|
||||
|
||||
@ApiModelProperty("市 (数据字典)")
|
||||
private Integer city;
|
||||
|
||||
@ApiModelProperty("区 (数据字典)")
|
||||
private Integer district;
|
||||
|
||||
/**
|
||||
* 类型(数据字典 1.客户 2.供应商)
|
||||
*/
|
||||
@NotNull(message = "类型不能为空", groups = {Create.class, Update.class})
|
||||
private String companyType;
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
package com.newyetai.recruit.company.dto;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: guixinman
|
||||
* @create: 2024-04-11 15:03
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class HrCompanyExportDTO implements Serializable {
|
||||
|
||||
@ExcelProperty("名称")
|
||||
@ApiModelProperty("名称")
|
||||
private String companyName;
|
||||
|
||||
@ExcelProperty("行业")
|
||||
@ApiModelProperty("行业 (数据字典)")
|
||||
private String companyIndustry;
|
||||
|
||||
@ExcelProperty("规模")
|
||||
@ApiModelProperty("规模 (数据字典)")
|
||||
private String companySize;
|
||||
|
||||
@ExcelProperty("联系人")
|
||||
@ApiModelProperty("联系人")
|
||||
private String contactPerson;
|
||||
|
||||
@ExcelProperty("联系方式")
|
||||
@ApiModelProperty("联系方式")
|
||||
private String contactWay;
|
||||
|
||||
@ExcelProperty("公司简介")
|
||||
@ApiModelProperty("公司简介")
|
||||
private String companyProfile;
|
||||
|
||||
@ExcelProperty("公司描述")
|
||||
@ApiModelProperty("公司描述")
|
||||
private String companyDescription;
|
||||
|
||||
@ExcelProperty("创建时间")
|
||||
private String createTime;
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
package com.newyetai.recruit.company.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
import com.newyetai.common.exception.BusinessException;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 人力资源公司dto
|
||||
*
|
||||
* @author Carlye
|
||||
* @date 2021/01/08
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel("招聘系统客户信息DTO")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class HrCompanyPageQueryDTO extends PageQueryDTO<HrCompanyDTO> {
|
||||
private static final long serialVersionUID = -2216352275325005059L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("机构ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("统一社会信用代码")
|
||||
private String creditCode;
|
||||
|
||||
|
||||
@ApiModelProperty("企业LOGO FileRecord")
|
||||
private String companyLogo;
|
||||
|
||||
|
||||
@ApiModelProperty("公司名称")
|
||||
private String companyName;
|
||||
|
||||
@ApiModelProperty("联系人")
|
||||
private String contactPerson;
|
||||
|
||||
@ApiModelProperty("联系方式")
|
||||
private String contactWay;
|
||||
|
||||
|
||||
@ApiModelProperty("公司简介")
|
||||
private String companyProfile;
|
||||
|
||||
|
||||
@ApiModelProperty("公司描述")
|
||||
private String companyDescription;
|
||||
|
||||
|
||||
@ApiModelProperty("行业 (数据字典)")
|
||||
private String companyIndustry;
|
||||
|
||||
|
||||
@ApiModelProperty("规模 (数据字典)")
|
||||
private String companySize;
|
||||
|
||||
|
||||
@ApiModelProperty("公司注册地址")
|
||||
private String companyRegisterAddress;
|
||||
|
||||
|
||||
@ApiModelProperty("省份 (数据字典)")
|
||||
private Integer province;
|
||||
|
||||
|
||||
@ApiModelProperty("市 (数据字典)")
|
||||
private Integer city;
|
||||
|
||||
|
||||
@ApiModelProperty("区 (数据字典)")
|
||||
private Integer district;
|
||||
|
||||
/**
|
||||
* 类型(数据字典 1.客户 2.供应商)
|
||||
*/
|
||||
private String companyType;
|
||||
|
||||
|
||||
private List<String> companyTypes;
|
||||
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
public void check(){
|
||||
if (StringUtils.isBlank(companyType) && CollectionUtils.isEmpty(companyTypes)) {
|
||||
throw new BusinessException("请选择类型");
|
||||
}
|
||||
}
|
||||
}
|
||||
102
src/main/java/com/newyetai/recruit/company/entity/HrCompany.java
Normal file
102
src/main/java/com/newyetai/recruit/company/entity/HrCompany.java
Normal file
@@ -0,0 +1,102 @@
|
||||
package com.newyetai.recruit.company.entity;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import com.newyetai.common.entity.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-企业信息表
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@TableName(value = "hr_company")
|
||||
@Builder
|
||||
public class HrCompany extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = -7847448702358215622L;
|
||||
/**
|
||||
* 机构ID
|
||||
*/
|
||||
private Long orgId;
|
||||
|
||||
/**
|
||||
* 统一社会信用代码
|
||||
*/
|
||||
private String creditCode;
|
||||
|
||||
/**
|
||||
* 企业LOGO FileRecord
|
||||
*/
|
||||
private String companyLogo;
|
||||
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
private String companyName;
|
||||
|
||||
/**
|
||||
* 联系人(负责人)
|
||||
*/
|
||||
private String contactPerson;
|
||||
|
||||
/**
|
||||
* 联系方式
|
||||
*/
|
||||
private String contactWay;
|
||||
|
||||
/**
|
||||
* 公司简介
|
||||
*/
|
||||
private String companyProfile;
|
||||
|
||||
/**
|
||||
* 公司描述
|
||||
*/
|
||||
private String companyDescription;
|
||||
|
||||
/**
|
||||
* 行业 (数据字典)
|
||||
*/
|
||||
private String companyIndustry;
|
||||
|
||||
/**
|
||||
* 规模 (数据字典)
|
||||
*/
|
||||
private String companySize;
|
||||
|
||||
/**
|
||||
* 公司注册地址
|
||||
*/
|
||||
private String companyRegisterAddress;
|
||||
|
||||
/**
|
||||
* 省份 (数据字典)
|
||||
*/
|
||||
private Integer province;
|
||||
|
||||
/**
|
||||
* 市 (数据字典)
|
||||
*/
|
||||
private Integer city;
|
||||
|
||||
/**
|
||||
* 区 (数据字典)
|
||||
*/
|
||||
private Integer district;
|
||||
|
||||
/**
|
||||
* 类型(数据字典 1.客户 2.供应商)
|
||||
*/
|
||||
private String companyType;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.newyetai.recruit.company.enums;
|
||||
|
||||
public enum HrCompanyEnum {
|
||||
KH("1","客户"),
|
||||
GYS("2","供应商"),
|
||||
SELF("3", "机构本身"),
|
||||
;
|
||||
|
||||
private String type;
|
||||
/**
|
||||
* 类型描述
|
||||
*/
|
||||
private String desc;
|
||||
|
||||
|
||||
HrCompanyEnum(String type, String desc) {
|
||||
this.type = type;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public String getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<?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.newyetai.recruit.company.dao.HrCompanyMapper">
|
||||
<sql id="orgRelationTail">
|
||||
(select org_id
|
||||
from uc_org_relation
|
||||
where deleted = 0
|
||||
and platform_code = 13
|
||||
<if test='parentOrgId != null'>
|
||||
and FIND_IN_SET(#{parentOrgId}, path)
|
||||
</if>
|
||||
<if test='orgId != null'>
|
||||
and FIND_IN_SET(#{orgId}, path)
|
||||
|
||||
</if>
|
||||
)
|
||||
</sql>
|
||||
|
||||
<select id="page" resultType="com.newyetai.recruit.company.dto.HrCompanyDTO">
|
||||
select hc.*,o.org_name
|
||||
from hr_company hc
|
||||
left join xs_org o on o.id = hc.org_id and o.deleted = 0
|
||||
where hc.deleted = 0
|
||||
<if test='id != null'>
|
||||
AND hc.id = #{id}
|
||||
</if>
|
||||
<if test='orgId != null'>
|
||||
AND hc.org_id = #{orgId}
|
||||
</if>
|
||||
<if test='companyName != null and companyName.trim() != ""'>
|
||||
<bind name="companyNameLike" value="'%' + companyName + '%'"/>
|
||||
AND hc.company_name like #{companyNameLike}
|
||||
</if>
|
||||
<if test='companySize != null and companySize.trim() != ""'>
|
||||
AND hc.company_size = #{companySize}
|
||||
</if>
|
||||
<if test='contactPerson != null and contactPerson.trim() != ""'>
|
||||
AND hc.contact_person = #{contactPerson}
|
||||
</if>
|
||||
<if test='companyIndustry != null and companyIndustry.trim() != ""'>
|
||||
AND hc.company_industry = #{companyIndustry}
|
||||
</if>
|
||||
<if test='createTimeStart != null'>
|
||||
AND hc.create_time >= #{createTimeStart}
|
||||
</if>
|
||||
<if test='createTimeEnd != null'>
|
||||
AND hc.create_time <= #{createTimeEnd}
|
||||
</if>
|
||||
<if test='companyType != null and companyType.trim() != ""'>
|
||||
AND hc.company_type = #{companyType}
|
||||
</if>
|
||||
<if test="companyTypes != null and companyTypes.size()>0">
|
||||
AND hc.company_type in
|
||||
<foreach collection="companyTypes" open="(" separator="," close=")" item="item">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
order by hc.company_type desc, hc.id desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.newyetai.recruit.company.mapstruct;
|
||||
|
||||
|
||||
import com.newyetai.recruit.company.dto.HrCompanyDTO;
|
||||
import com.newyetai.recruit.company.entity.HrCompany;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* dto-entity
|
||||
*
|
||||
* @author sr on 2019-12-17
|
||||
*/
|
||||
@Mapper
|
||||
public interface HrCompanyMapMapper {
|
||||
|
||||
HrCompanyMapMapper INSTANCE = Mappers.getMapper(HrCompanyMapMapper.class);
|
||||
|
||||
HrCompanyDTO exchange(HrCompany company);
|
||||
|
||||
HrCompany exchange(HrCompanyDTO hrCompanyDTO);
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package com.newyetai.recruit.company.service;
|
||||
|
||||
|
||||
import com.newyetai.recruit.company.dto.HrCompanyDTO;
|
||||
import com.newyetai.recruit.company.dto.HrCompanyPageQueryDTO;
|
||||
import com.newyetai.recruit.company.entity.HrCompany;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-客户信息表 服务类
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
public interface IHrCompanyService {
|
||||
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param hrCompanyDTO 人力资源公司dto
|
||||
* @return {@link HrCompanyDTO}
|
||||
* @throws RuntimeException 运行时异常
|
||||
*/
|
||||
void create(HrCompanyDTO hrCompanyDTO);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param hrCompanyDTO 人力资源公司dto
|
||||
* @return {@link HrCompanyDTO}
|
||||
* @throws RuntimeException 运行时异常
|
||||
*/
|
||||
Integer update(HrCompanyDTO hrCompanyDTO);
|
||||
|
||||
/**
|
||||
* 细节
|
||||
*
|
||||
* @param hrCompanyDTO 人力资源公司dto
|
||||
* @return {@link HrCompanyDTO}
|
||||
*/
|
||||
HrCompanyDTO detail(HrCompanyDTO hrCompanyDTO);
|
||||
|
||||
/**
|
||||
* 分页查询
|
||||
*
|
||||
* @param pageQueryDTO 页面查询dto
|
||||
* @return {@link List< HrCompanyDTO >}
|
||||
*/
|
||||
List<HrCompanyDTO> page(HrCompanyPageQueryDTO pageQueryDTO);
|
||||
|
||||
void export(HrCompanyPageQueryDTO pageQueryDTO);
|
||||
|
||||
/**
|
||||
* 不分页查询
|
||||
*/
|
||||
List<HrCompanyDTO> list(HrCompanyPageQueryDTO pageQueryDTO);
|
||||
|
||||
HrCompany findById(Long id);
|
||||
|
||||
HrCompanyDTO find(HrCompanyPageQueryDTO pageQueryDTO);
|
||||
}
|
||||
@@ -0,0 +1,226 @@
|
||||
package com.newyetai.recruit.company.service.impl;
|
||||
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.newyetai.common.constant.CommonConstants;
|
||||
import com.newyetai.common.dto.ExportHeadDetailInfoDTO;
|
||||
import com.newyetai.common.dto.ExportHeadInfoDTO;
|
||||
import com.newyetai.common.easyexcel.ExcelUtil;
|
||||
import com.newyetai.common.exception.BusinessException;
|
||||
import com.newyetai.common.exception.util.Assert;
|
||||
import com.newyetai.common.util.UserContextHolder;
|
||||
import com.newyetai.recruit.company.dao.HrCompanyMapper;
|
||||
import com.newyetai.recruit.company.dto.HrCompanyDTO;
|
||||
import com.newyetai.recruit.company.dto.HrCompanyExportDTO;
|
||||
import com.newyetai.recruit.company.dto.HrCompanyPageQueryDTO;
|
||||
import com.newyetai.recruit.company.entity.HrCompany;
|
||||
import com.newyetai.recruit.company.enums.HrCompanyEnum;
|
||||
import com.newyetai.recruit.company.mapstruct.HrCompanyMapMapper;
|
||||
import com.newyetai.recruit.company.service.IHrCompanyService;
|
||||
import com.newyetai.component.dict.util.DictUtils;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 招聘系统-企业信息表 服务实现类
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class HrCompanyServiceImpl implements IHrCompanyService {
|
||||
|
||||
private final HrCompanyMapper hrCompanyMapper;
|
||||
|
||||
@Override
|
||||
public void create(HrCompanyDTO hrCompanyDTO) {
|
||||
List<HrCompany> HrCompanyList = hrCompanyMapper.selectList(new LambdaQueryWrapper<HrCompany>()
|
||||
.eq(HrCompany::getOrgId, UserContextHolder.getLoginOrgId())
|
||||
.eq(HrCompany::getCompanyName, hrCompanyDTO.getCompanyName())
|
||||
.eq(HrCompany::getCompanyType, hrCompanyDTO.getCompanyType())
|
||||
.eq(HrCompany::getDeleted, false)
|
||||
);
|
||||
if (CollectionUtils.isNotEmpty(HrCompanyList)) {
|
||||
throw new BusinessException("名称重复");
|
||||
}
|
||||
|
||||
HrCompany HrCompany = HrCompanyMapMapper.INSTANCE.exchange(hrCompanyDTO);
|
||||
HrCompany.setOrgId(UserContextHolder.getLoginOrgId());
|
||||
hrCompanyMapper.saveEntity(HrCompany, UserContextHolder.getLoginUserId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer update(HrCompanyDTO hrCompanyDTO) {
|
||||
HrCompany hrCompany = hrCompanyMapper.selectOne(new LambdaQueryWrapper<HrCompany>()
|
||||
.eq(HrCompany::getId, hrCompanyDTO.getId())
|
||||
.eq(HrCompany::getDeleted, false));
|
||||
Assert.notNull(hrCompany, "未查询到要修改的数据");
|
||||
|
||||
if (!CommonConstants.PLATFORM_ORG_ID.equals(UserContextHolder.getExistLoginOrgId())) {
|
||||
Assert.isTrue(hrCompany.getOrgId().equals(UserContextHolder.getExistLoginOrgId()), "未查询到要修改的数据");
|
||||
}
|
||||
|
||||
List<HrCompany> HrCompanyList = hrCompanyMapper.selectList(new LambdaQueryWrapper<HrCompany>()
|
||||
.eq(HrCompany::getOrgId, hrCompany.getOrgId())
|
||||
.eq(HrCompany::getCompanyName, hrCompanyDTO.getCompanyName())
|
||||
.eq(HrCompany::getCompanyType, hrCompanyDTO.getCompanyType())
|
||||
.notIn(HrCompany::getId, hrCompanyDTO.getId())
|
||||
.eq(HrCompany::getDeleted, false)
|
||||
);
|
||||
if (CollectionUtils.isNotEmpty(HrCompanyList)) {
|
||||
throw new BusinessException("名称重复");
|
||||
}
|
||||
|
||||
HrCompany HrCompany = HrCompanyMapMapper.INSTANCE.exchange(hrCompanyDTO);
|
||||
HrCompany.setOrgId(hrCompany.getOrgId());
|
||||
return hrCompanyMapper.updateEntity(HrCompany, UserContextHolder.getLoginUserId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public HrCompanyDTO detail(HrCompanyDTO hrCompanyDTO) {
|
||||
return HrCompanyMapMapper.INSTANCE.exchange(hrCompanyMapper.getById(hrCompanyDTO.getId()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HrCompanyDTO> page(HrCompanyPageQueryDTO pageQueryDTO) {
|
||||
if (pageQueryDTO.getOrgId() == null) {
|
||||
if (!CommonConstants.PLATFORM_ORG_ID.equals(UserContextHolder.getExistLoginOrgId())) {
|
||||
pageQueryDTO.setOrgId(UserContextHolder.getLoginOrgId());
|
||||
}
|
||||
}
|
||||
return hrCompanyMapper.page(pageQueryDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void export(HrCompanyPageQueryDTO pageQueryDTO) {
|
||||
boolean flag = true;
|
||||
Integer pageNo = 1;
|
||||
Integer pageSize = 100;
|
||||
|
||||
List<HrCompanyDTO> listAll = new ArrayList<>();
|
||||
|
||||
while (flag) {
|
||||
pageQueryDTO.setPageNo(pageNo);
|
||||
pageQueryDTO.setPageSize(pageSize);
|
||||
List<HrCompanyDTO> list = this.page(pageQueryDTO);
|
||||
if (org.springframework.util.CollectionUtils.isEmpty(list)) {
|
||||
flag = false;
|
||||
continue;
|
||||
}
|
||||
if (list.size() < pageSize) {
|
||||
flag = false;
|
||||
}
|
||||
pageNo = pageNo + 1;
|
||||
listAll.addAll(list);
|
||||
}
|
||||
List<HrCompanyExportDTO> collect = listAll.stream().map(dto -> {
|
||||
HrCompanyExportDTO companyExportDTO = new HrCompanyExportDTO();
|
||||
BeanUtils.copyProperties(dto, companyExportDTO);
|
||||
companyExportDTO.setCreateTime(DateUtil.format(dto.getCreateTime(), "yyyy-MM-dd HH:mm:ss"));
|
||||
companyExportDTO.setCompanyIndustry(DictUtils.getCodeNameMap("industry_type").get(dto.getCompanyIndustry()));
|
||||
companyExportDTO.setCompanySize(DictUtils.getCodeNameMap("company_size").get(dto.getCompanySize()));
|
||||
return companyExportDTO;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
if (org.springframework.util.CollectionUtils.isEmpty(collect)) {
|
||||
return;
|
||||
}
|
||||
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
|
||||
String fileName;
|
||||
|
||||
if (pageQueryDTO.getCompanyType().equals(HrCompanyEnum.KH.getType())) {
|
||||
fileName = HrCompanyEnum.KH.getDesc() + "明细导出" + "(" + formatter.format(LocalDateTime.now()) + ")";
|
||||
} else {
|
||||
fileName = HrCompanyEnum.GYS.getDesc() + "明细导出" + "(" + formatter.format(LocalDateTime.now()) + ")";
|
||||
}
|
||||
|
||||
|
||||
ExportHeadInfoDTO infoDTO = ExportHeadInfoDTO.builder()
|
||||
.fileName(fileName)
|
||||
.build();
|
||||
List<ExportHeadDetailInfoDTO> heads = infoDTO.getHeads();
|
||||
List<List> datas = Lists.newArrayList();
|
||||
|
||||
if (pageQueryDTO.getCompanyType().equals(HrCompanyEnum.KH.getType())) {
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("客户名称").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("所属行业").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("企业规模").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("联系人").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("联系方式").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("创建时间").build());
|
||||
for (HrCompanyExportDTO dto : collect) {
|
||||
List objects = Lists.newArrayList();
|
||||
datas.add(objects);
|
||||
objects.add(dto.getCompanyName());
|
||||
objects.add(dto.getCompanyIndustry());
|
||||
objects.add(dto.getCompanySize());
|
||||
objects.add(dto.getContactPerson());
|
||||
objects.add(dto.getContactWay());
|
||||
objects.add(dto.getCreateTime());
|
||||
}
|
||||
} else {
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("供应商名称").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("企业规模").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("联系人").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("联系方式").build());
|
||||
heads.add(ExportHeadDetailInfoDTO.builder().head("创建时间").build());
|
||||
for (HrCompanyExportDTO dto : collect) {
|
||||
List objects = Lists.newArrayList();
|
||||
datas.add(objects);
|
||||
objects.add(dto.getCompanyName());
|
||||
objects.add(dto.getCompanySize());
|
||||
objects.add(dto.getContactPerson());
|
||||
objects.add(dto.getContactWay());
|
||||
objects.add(dto.getCreateTime());
|
||||
}
|
||||
}
|
||||
|
||||
infoDTO.setDatas(datas);
|
||||
|
||||
ExcelUtil.dynamicExportTemplate(infoDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HrCompanyDTO> list(HrCompanyPageQueryDTO pageQueryDTO) {
|
||||
pageQueryDTO.disablePage();
|
||||
return this.page(pageQueryDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public HrCompany findById(Long id) {
|
||||
Assert.notNull(id, "id不能为空");
|
||||
LambdaQueryWrapper<HrCompany> queryWrapper = new LambdaQueryWrapper<HrCompany>()
|
||||
.eq(HrCompany::getId, id)
|
||||
.eq(HrCompany::getDeleted, false);
|
||||
if (!CommonConstants.PLATFORM_ORG_ID.equals(UserContextHolder.getExistLoginOrgId())) {
|
||||
queryWrapper.eq(HrCompany::getOrgId, UserContextHolder.getLoginOrgId());
|
||||
}
|
||||
HrCompany hrCompany = hrCompanyMapper.selectOne(queryWrapper);
|
||||
return hrCompany;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HrCompanyDTO find(HrCompanyPageQueryDTO pageQueryDTO) {
|
||||
pageQueryDTO.disablePage();
|
||||
List<HrCompanyDTO> hrCompanyDTOS = this.page(pageQueryDTO);
|
||||
if (CollectionUtils.isEmpty(hrCompanyDTOS)) {
|
||||
return null;
|
||||
}
|
||||
return hrCompanyDTOS.get(0);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
package com.newyetai.recruit.device.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
import com.newyetai.recruit.device.dto.*;
|
||||
import com.newyetai.recruit.device.service.DeviceService;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@Api(tags = "设备")
|
||||
@RestController
|
||||
@RequestMapping("/device/")
|
||||
public class DeviceController {
|
||||
|
||||
@Autowired
|
||||
private DeviceService deviceService;
|
||||
|
||||
@PostMapping("create")
|
||||
@ApiOperation("设备-创建")
|
||||
public AlitaResult<DeviceDTO> create(@RequestBody @Validated DeviceOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(deviceService.create(operatorDTO));
|
||||
}
|
||||
|
||||
@PutMapping("modify")
|
||||
@ApiOperation("设备-修改")
|
||||
public AlitaResult<DeviceDTO> modify(@RequestBody DeviceOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(deviceService.modify(operatorDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("{id}")
|
||||
@ApiOperation("设备-删除")
|
||||
public AlitaResult<DeviceDTO> delete(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(deviceService.delete(id));
|
||||
}
|
||||
|
||||
@GetMapping("{id}")
|
||||
@ApiOperation("设备-查询单个")
|
||||
public AlitaResult<DeviceDTO> findById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(deviceService.findById(id));
|
||||
}
|
||||
|
||||
@GetMapping("list")
|
||||
@ApiOperation("设备-列表查询")
|
||||
public AlitaResult<List<DeviceDTO>> list(DeviceQueryDTO queryDTO) {
|
||||
return AlitaResult.success(deviceService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("page")
|
||||
@ApiOperation("设备-分页查询")
|
||||
public AlitaResult<Page<DeviceDTO>> page(DevicePageQueryDTO queryDTO) {
|
||||
deviceService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.newyetai.recruit.device.convert;
|
||||
|
||||
import com.newyetai.recruit.device.entity.Device;
|
||||
import com.newyetai.recruit.device.dto.DeviceDTO;
|
||||
import com.newyetai.recruit.device.dto.DeviceOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceConvert {
|
||||
DeviceConvert INSTANCE = Mappers.getMapper(DeviceConvert.class);
|
||||
|
||||
Device convert(DeviceDTO dto);
|
||||
|
||||
DeviceDTO convert(Device entity);
|
||||
|
||||
Device convert(DeviceOperatorDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.newyetai.recruit.device.dao;
|
||||
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.device.entity.Device;
|
||||
import com.newyetai.recruit.device.dto.DeviceDTO;
|
||||
import com.newyetai.recruit.device.dto.DeviceQueryDTO;
|
||||
import com.newyetai.recruit.device.dto.DevicePageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@Mapper
|
||||
public interface DeviceMapper extends MyMapper<Device> {
|
||||
|
||||
List<DeviceDTO> page(@Param("param") DevicePageQueryDTO queryDTO);
|
||||
|
||||
List<DeviceDTO> list(@Param("param") DeviceQueryDTO queryDTO);
|
||||
}
|
||||
38
src/main/java/com/newyetai/recruit/device/dto/DeviceDTO.java
Normal file
38
src/main/java/com/newyetai/recruit/device/dto/DeviceDTO.java
Normal file
@@ -0,0 +1,38 @@
|
||||
package com.newyetai.recruit.device.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@ApiModel("设备")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DeviceDTO extends BaseDTO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("场所地址")
|
||||
private String address;
|
||||
|
||||
private String geocoderJson;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package com.newyetai.recruit.device.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@ApiModel("设备")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DeviceOperatorDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@Length(max = 128,message = "编号长度超长")
|
||||
@NotBlank(message = "请输入编号")
|
||||
@ApiModelProperty("编号")
|
||||
private String code;
|
||||
|
||||
@Length(max = 64,message = "名称长度超长")
|
||||
@NotBlank(message = "请输入名称")
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
|
||||
@Length(max = 255,message = "场所地址长度超长")
|
||||
@NotBlank(message = "请输入场所地址")
|
||||
@ApiModelProperty("场所地址")
|
||||
private String address;
|
||||
|
||||
private String geocoderJson;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
package com.newyetai.recruit.device.dto;
|
||||
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
|
||||
@ApiModel("设备")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class DevicePageQueryDTO extends PageQueryDTO<DeviceDTO> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long notId;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("名称 (模糊匹配)")
|
||||
private String nameLike;
|
||||
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("场所地址")
|
||||
private String address;
|
||||
|
||||
private String addressLike;
|
||||
|
||||
private String geocoderJson;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.newyetai.recruit.device.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@ApiModel("设备")
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DeviceQueryDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long notId;
|
||||
|
||||
@ApiModelProperty("编号")
|
||||
private String code;
|
||||
|
||||
@ApiModelProperty("名称")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty("名称 (模糊匹配)")
|
||||
private String nameLike;
|
||||
|
||||
@ApiModelProperty("场所地址")
|
||||
private String address;
|
||||
|
||||
private String addressLike;
|
||||
|
||||
private String geocoderJson;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
37
src/main/java/com/newyetai/recruit/device/entity/Device.java
Normal file
37
src/main/java/com/newyetai/recruit/device/entity/Device.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package com.newyetai.recruit.device.entity;
|
||||
|
||||
import lombok.*;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import java.math.BigDecimal;
|
||||
import com.newyetai.common.entity.BaseEntity;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@TableName(value = "hr_device")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class Device extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
private String code;
|
||||
/**
|
||||
* 名称
|
||||
*/
|
||||
private String name;
|
||||
/**
|
||||
* 场所地址
|
||||
*/
|
||||
private String address;
|
||||
private String geocoderJson;
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
<?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.newyetai.recruit.device.dao.DeviceMapper">
|
||||
|
||||
<select id="list" resultType="com.newyetai.recruit.device.dto.DeviceDTO">
|
||||
SELECT t.*
|
||||
<include refid="queryFromSql"></include>
|
||||
</select>
|
||||
|
||||
<select id="page" resultType="com.newyetai.recruit.device.dto.DeviceDTO">
|
||||
SELECT t.*
|
||||
<include refid="queryFromSql"></include>
|
||||
</select>
|
||||
|
||||
<sql id="queryFromSql">
|
||||
FROM
|
||||
hr_device t
|
||||
WHERE t.deleted = 0
|
||||
<if test='param.id != null'>
|
||||
AND t.id = #{param.id}
|
||||
</if>
|
||||
<if test='param.notId != null'>
|
||||
AND t.id <![CDATA[ <> ]]> #{param.notId}
|
||||
</if>
|
||||
<if test='param.code != null and param.code.trim() != ""'>
|
||||
AND t.code = #{param.code}
|
||||
</if>
|
||||
<if test='param.name != null and param.name.trim() != ""'>
|
||||
AND t.name = #{param.name}
|
||||
</if>
|
||||
<if test='param.nameLike != null and param.nameLike.trim() != ""'>
|
||||
<bind name="nameLike" value="'%' + param.nameLike + '%'"/>
|
||||
AND t.name like #{nameLike}
|
||||
</if>
|
||||
<if test='param.address != null and param.address.trim() != ""'>
|
||||
AND t.address = #{param.address}
|
||||
</if>
|
||||
<if test='param.addressLike != null and param.addressLike.trim() != ""'>
|
||||
<bind name="addressLike" value="'%' + param.addressLike + '%'"/>
|
||||
AND t.address like #{addressLike}
|
||||
</if>
|
||||
<if test='param.createTimeStart != null'>
|
||||
AND t.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test='param.createTimeEnd != null'>
|
||||
AND t.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
<if test='param.updateTimeStart != null'>
|
||||
AND t.update_time >= #{param.updateTimeStart}
|
||||
</if>
|
||||
<if test='param.updateTimeEnd != null'>
|
||||
AND t.update_time <= #{param.updateTimeEnd}
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.newyetai.recruit.device.service;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.groups.Default;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.newyetai.recruit.device.dto.*;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@Validated(Default.class)
|
||||
public interface DeviceService {
|
||||
|
||||
/**
|
||||
* 设备 - 创建
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link DeviceDTO}
|
||||
*/
|
||||
DeviceDTO create(@Valid DeviceOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 设备 - 修改
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link DeviceDTO}
|
||||
*/
|
||||
DeviceDTO modify(@Valid DeviceOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 设备 - 删除
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link DeviceDTO}
|
||||
*/
|
||||
DeviceDTO delete(Long id);
|
||||
|
||||
/**
|
||||
* 设备 - 根据ID查询单个
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link DeviceDTO}
|
||||
*/
|
||||
DeviceDTO findById(Long id);
|
||||
|
||||
/**
|
||||
* 设备 - 列表查询
|
||||
*
|
||||
* @param queryDTO 列表查询dto
|
||||
* @return {@link List}<{@link DeviceDTO}>
|
||||
*/
|
||||
List<DeviceDTO> list(DeviceQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 设备 - 分页查询
|
||||
*
|
||||
* @param queryDTO 分页查询dto
|
||||
* @return {@link DeviceDTO}
|
||||
*/
|
||||
List<DeviceDTO> page(DevicePageQueryDTO queryDTO);
|
||||
}
|
||||
@@ -0,0 +1,154 @@
|
||||
package com.newyetai.recruit.device.service.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.common.exception.BusinessException;
|
||||
import com.newyetai.common.util.JsonUtils;
|
||||
import com.newyetai.recruit.device.convert.DeviceConvert;
|
||||
import com.newyetai.recruit.device.entity.Device;
|
||||
import com.newyetai.recruit.device.dto.*;
|
||||
import com.newyetai.recruit.device.dao.DeviceMapper;
|
||||
import com.newyetai.recruit.device.service.DeviceService;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.newyetai.common.util.UserContextHolder;
|
||||
import com.newyetai.sdk.tencent.map.TencentMapContext;
|
||||
import com.newyetai.sdk.tencent.map.dto.TencentMapGeocoderReqDTO;
|
||||
import com.newyetai.sdk.tencent.map.dto.TencentMapGeocoderResDTO;
|
||||
import com.newyetai.sdk.tencent.map.dto.TencentMapLocationV1IpResDTO;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 设备
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-14
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class DeviceServiceImpl implements DeviceService {
|
||||
|
||||
@Resource
|
||||
private DeviceMapper deviceMapper;
|
||||
|
||||
@Autowired
|
||||
private TencentMapContext tencentMapContext;
|
||||
|
||||
|
||||
@Override
|
||||
public DeviceDTO create(DeviceOperatorDTO operatorDto) {
|
||||
List<DeviceDTO> deviceDTOList = this.list(DeviceQueryDTO.builder().code(operatorDto.getCode()).name(operatorDto.getName()).build());
|
||||
if (CollectionUtils.isNotEmpty(deviceDTOList)) {
|
||||
throw new BusinessException("该设备编码已存在");
|
||||
}
|
||||
|
||||
AlitaResult<TencentMapGeocoderResDTO> alitaResult = tencentMapContext.webServiceGeocoder(TencentMapGeocoderReqDTO.builder()
|
||||
.address(operatorDto.getAddress())
|
||||
.build());
|
||||
|
||||
if (Boolean.TRUE.equals(alitaResult.getSuccess())) {
|
||||
TencentMapGeocoderResDTO resultData = alitaResult.getData();
|
||||
|
||||
TencentMapGeocoderResDTO.TencentMapGeocoderLocationResDTO location = resultData.getLocation();
|
||||
TencentMapGeocoderResDTO.TencentMapGeocoderAddressComponentsDTO address_components = resultData.getAddress_components();
|
||||
TencentMapGeocoderResDTO.TencentMapGeocoderAdInfo ad_info = resultData.getAd_info();
|
||||
|
||||
if (Objects.nonNull(location)) {
|
||||
TencentMapLocationV1IpResDTO tencentMapLocationV1IpResDTO = new TencentMapLocationV1IpResDTO();
|
||||
tencentMapLocationV1IpResDTO.setLocation(TencentMapLocationV1IpResDTO.TencentMapLocationDTO.builder().lat(location.getLat()).lng(location.getLng()).build());
|
||||
tencentMapLocationV1IpResDTO.setAd_info(TencentMapLocationV1IpResDTO.TencentMapLocationAdInfoDTO.builder()
|
||||
.province(address_components.getProvince())
|
||||
.city(address_components.getCity())
|
||||
.district(address_components.getDistrict())
|
||||
.adcode(ad_info.getAdcode())
|
||||
.build());
|
||||
operatorDto.setGeocoderJson(JsonUtils.toJsonString(tencentMapLocationV1IpResDTO));
|
||||
}
|
||||
}
|
||||
Device device = DeviceConvert.INSTANCE.convert(operatorDto);
|
||||
deviceMapper.saveEntity(device);
|
||||
return DeviceConvert.INSTANCE.convert(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceDTO modify(DeviceOperatorDTO operatorDto) {
|
||||
List<DeviceDTO> deviceDTOList = this.list(DeviceQueryDTO.builder().notId(operatorDto.getId()).name(operatorDto.getName()).build());
|
||||
if (CollectionUtils.isNotEmpty(deviceDTOList)) {
|
||||
throw new BusinessException("该设备编码已存在");
|
||||
}
|
||||
|
||||
DeviceDTO deviceDto = this.findById(operatorDto.getId());
|
||||
if (Objects.isNull(deviceDto)) {
|
||||
return null;
|
||||
}
|
||||
if (!StringUtils.equals(operatorDto.getAddress(), deviceDto.getAddress())) {
|
||||
AlitaResult<TencentMapGeocoderResDTO> alitaResult = tencentMapContext.webServiceGeocoder(TencentMapGeocoderReqDTO.builder()
|
||||
.address(operatorDto.getAddress())
|
||||
.build());
|
||||
|
||||
if (Boolean.TRUE.equals(alitaResult.getSuccess())) {
|
||||
TencentMapGeocoderResDTO resultData = alitaResult.getData();
|
||||
|
||||
TencentMapGeocoderResDTO.TencentMapGeocoderLocationResDTO location = resultData.getLocation();
|
||||
TencentMapGeocoderResDTO.TencentMapGeocoderAddressComponentsDTO address_components = resultData.getAddress_components();
|
||||
TencentMapGeocoderResDTO.TencentMapGeocoderAdInfo ad_info = resultData.getAd_info();
|
||||
|
||||
if (Objects.nonNull(location)) {
|
||||
TencentMapLocationV1IpResDTO tencentMapLocationV1IpResDTO = new TencentMapLocationV1IpResDTO();
|
||||
tencentMapLocationV1IpResDTO.setLocation(TencentMapLocationV1IpResDTO.TencentMapLocationDTO.builder().lat(location.getLat()).lng(location.getLng()).build());
|
||||
tencentMapLocationV1IpResDTO.setAd_info(TencentMapLocationV1IpResDTO.TencentMapLocationAdInfoDTO.builder()
|
||||
.province(address_components.getProvince())
|
||||
.city(address_components.getCity())
|
||||
.district(address_components.getDistrict())
|
||||
.adcode(ad_info.getAdcode())
|
||||
.build());
|
||||
operatorDto.setGeocoderJson(JsonUtils.toJsonString(tencentMapLocationV1IpResDTO));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Device device = DeviceConvert.INSTANCE.convert(operatorDto);
|
||||
device.setCode(null);
|
||||
deviceMapper.updateEntitySelective(device);
|
||||
return this.findById(operatorDto.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceDTO delete(Long id) {
|
||||
DeviceDTO deviceDto = this.findById(id);
|
||||
if (Objects.isNull(deviceDto)) {
|
||||
return null;
|
||||
}
|
||||
Device device = Device.builder().build();
|
||||
device.setId(id);
|
||||
deviceMapper.deleteEntity(device, UserContextHolder.getLoginUserId());
|
||||
return deviceDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeviceDTO findById(Long id) {
|
||||
Device device = deviceMapper.getById(id);
|
||||
if (Objects.isNull(device)) {
|
||||
return null;
|
||||
}
|
||||
return DeviceConvert.INSTANCE.convert(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceDTO> list(DeviceQueryDTO queryDTO) {
|
||||
return deviceMapper.list(queryDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceDTO> page(DevicePageQueryDTO queryDTO) {
|
||||
return deviceMapper.page(queryDTO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.newyetai.recruit.eventtrack.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
import com.newyetai.recruit.eventtrack.dto.*;
|
||||
import com.newyetai.recruit.eventtrack.service.EventTrackService;
|
||||
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@Api(tags = " 埋点")
|
||||
@RestController
|
||||
@RequestMapping("/event_track")
|
||||
public class EventTrackController {
|
||||
|
||||
@Autowired
|
||||
private EventTrackService eventTrackService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation(" 埋点-创建")
|
||||
public AlitaResult<EventTrackDTO> create(@RequestBody EventTrackOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(eventTrackService.create(operatorDTO));
|
||||
}
|
||||
|
||||
@PutMapping("/modify")
|
||||
@ApiOperation(" 埋点-修改")
|
||||
public AlitaResult<EventTrackDTO> modify(@RequestBody EventTrackOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(eventTrackService.modify(operatorDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("{id}")
|
||||
@ApiOperation(" 埋点-删除")
|
||||
public AlitaResult<EventTrackDTO> delete(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(eventTrackService.delete(id));
|
||||
}
|
||||
|
||||
@GetMapping("{id}")
|
||||
@ApiOperation(" 埋点-查询单个")
|
||||
public AlitaResult<EventTrackDTO> findById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(eventTrackService.findById(id));
|
||||
}
|
||||
|
||||
@GetMapping("list")
|
||||
@ApiOperation(" 埋点-列表查询")
|
||||
public AlitaResult<List<EventTrackDTO>> list(EventTrackQueryDTO queryDTO) {
|
||||
return AlitaResult.success(eventTrackService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("page")
|
||||
@ApiOperation(" 埋点-分页查询")
|
||||
public AlitaResult<Page<EventTrackDTO>> page(EventTrackPageQueryDTO queryDTO) {
|
||||
eventTrackService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("statistics")
|
||||
public AlitaResult<List<EventTrackStatisticsResDTO>> statistics(EventTrackStatisticsQueryDTO queryDTO) {
|
||||
return AlitaResult.success(eventTrackService.statistics(queryDTO));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.newyetai.recruit.eventtrack.convert;
|
||||
|
||||
import com.newyetai.recruit.eventtrack.entity.EventTrack;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackDTO;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface EventTrackConvert {
|
||||
EventTrackConvert INSTANCE = Mappers.getMapper(EventTrackConvert.class);
|
||||
|
||||
EventTrack convert(EventTrackDTO dto);
|
||||
|
||||
EventTrackDTO convert(EventTrack entity);
|
||||
|
||||
EventTrack convert(EventTrackOperatorDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.newyetai.recruit.eventtrack.dao;
|
||||
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsQueryDTO;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsResDTO;
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.eventtrack.entity.EventTrack;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackDTO;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackQueryDTO;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackPageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface EventTrackMapper extends MyMapper<EventTrack> {
|
||||
|
||||
List<EventTrackDTO> page(@Param("param") EventTrackPageQueryDTO queryDTO);
|
||||
|
||||
List<EventTrackDTO> list(@Param("param") EventTrackQueryDTO queryDTO);
|
||||
|
||||
List<EventTrackStatisticsResDTO> statistics(@Param("param") EventTrackStatisticsQueryDTO queryDTO);
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.newyetai.recruit.eventtrack.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@ApiModel(" 埋点")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class EventTrackDTO extends BaseDTO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("设备编号")
|
||||
private String deviceCode;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("类型")
|
||||
private String type;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.newyetai.recruit.eventtrack.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: guixinman
|
||||
* @create: 2025-01-23 16:43
|
||||
**/
|
||||
@Data
|
||||
public class EventTrackMachineReqDTO implements Serializable {
|
||||
/**
|
||||
* 机器编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String name;
|
||||
|
||||
private String address;
|
||||
|
||||
/**
|
||||
* 日期
|
||||
*/
|
||||
private String createDate;
|
||||
|
||||
/**
|
||||
* 当日使用人数
|
||||
*/
|
||||
private Long userNumber;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.newyetai.recruit.eventtrack.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@ApiModel(" 埋点")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EventTrackOperatorDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("设备编号")
|
||||
private String deviceCode;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("类型")
|
||||
private String type;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.newyetai.recruit.eventtrack.dto;
|
||||
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
|
||||
@ApiModel(" 埋点")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class EventTrackPageQueryDTO extends PageQueryDTO<EventTrackDTO> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("设备编号")
|
||||
private String deviceCode;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("类型")
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.newyetai.recruit.eventtrack.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@ApiModel(" 埋点")
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class EventTrackQueryDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("设备编号")
|
||||
private String deviceCode;
|
||||
|
||||
@ApiModelProperty("用户id")
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("类型")
|
||||
private String type;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.newyetai.recruit.eventtrack.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: guixinman
|
||||
* @create: 2025-01-23 16:04
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class EventTrackStatisticsQueryDTO implements Serializable {
|
||||
|
||||
private String createTimeStart;
|
||||
|
||||
private String createTimeEnd;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.newyetai.recruit.eventtrack.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 埋点分组DTO
|
||||
* @author: guixinman
|
||||
* @create: 2025-01-23 15:59
|
||||
**/
|
||||
@Data
|
||||
public class EventTrackStatisticsResDTO implements Serializable {
|
||||
private String deviceCode;
|
||||
private Long userId;
|
||||
private String type;
|
||||
private String name;
|
||||
private String address;
|
||||
private String createDate;
|
||||
private Long userNumber;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.newyetai.recruit.eventtrack.entity;
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.newyetai.common.entity.BaseEntity;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@TableName(value = "hr_event_track")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class EventTrack extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 设备编号
|
||||
*/
|
||||
private String deviceCode;
|
||||
/**
|
||||
* 用户id
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String type;
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.newyetai.recruit.eventtrack.job;
|
||||
|
||||
import com.newyetai.common.util.JsonUtils;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackMachineReqDTO;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsQueryDTO;
|
||||
import com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsResDTO;
|
||||
import com.newyetai.recruit.eventtrack.service.EventTrackService;
|
||||
import com.newyetai.sdk.common.dto.DefaultSdkInvokeLogDTO;
|
||||
import com.newyetai.sdk.common.util.HttpUtils;
|
||||
import com.newyetai.sdk.tencent.map.dto.TencentMapBaseResDTO;
|
||||
import com.newyetai.sdk.tencent.map.dto.TencentWsDistanceV1MatrixResDTO;
|
||||
import com.newyetai.security.util.MockUtils;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.ParameterizedTypeReference;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.http.HttpRequest;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* @description: 埋点job
|
||||
* @author: guixinman
|
||||
* @create: 2025-01-23 14:54
|
||||
**/
|
||||
@Slf4j
|
||||
@Component
|
||||
public class EventTrackJob {
|
||||
|
||||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
@Autowired
|
||||
private EventTrackService eventTrackService;
|
||||
|
||||
@Scheduled(cron = "0 0/30 * * * *")
|
||||
public void statistics() {
|
||||
String createTimeStart = DateUtil.format(DateUtil.beginOfDay(DateUtil.yesterday()), "yyyy-MM-dd HH:mm:ss");
|
||||
String createTimeEnd = DateUtil.format(DateUtil.endOfDay(DateUtil.yesterday()), "yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
log.info("埋点数据推送宝就业后台 ======开始");
|
||||
MockUtils.mockPlatUser();
|
||||
try {
|
||||
List<EventTrackStatisticsResDTO> statistics = eventTrackService.statistics(EventTrackStatisticsQueryDTO.builder().createTimeStart(createTimeStart).createTimeEnd(createTimeEnd).build());
|
||||
List<EventTrackMachineReqDTO> machineReqDTOList = new ArrayList();
|
||||
for (EventTrackStatisticsResDTO statistic : statistics) {
|
||||
EventTrackMachineReqDTO machineReqDTO = new EventTrackMachineReqDTO();
|
||||
BeanUtils.copyProperties(statistic,machineReqDTO);
|
||||
machineReqDTOList.add(machineReqDTO);
|
||||
}
|
||||
String result = null;
|
||||
if (CollectionUtils.isNotEmpty(machineReqDTOList)) {
|
||||
try {
|
||||
result = HttpRequest.post("https://baoanhr-1gj59gl3122cad49-1331397164.ap-shanghai.app.tcloudbase.com/v1/api/machine")
|
||||
.header("Content-Type", "application/json") // 必须声明 JSON 格式
|
||||
.body(JsonUtils.toJsonString(machineReqDTOList))
|
||||
.timeout(5000)
|
||||
.execute()
|
||||
.body();
|
||||
} catch (Exception e) {
|
||||
log.error("EventTrackJob invoke:{} error:{}",JsonUtils.toJsonString(machineReqDTOList),
|
||||
e);
|
||||
} finally {
|
||||
log.info("EventTrackJob invoke:{}",
|
||||
JsonUtils
|
||||
.toJsonString(
|
||||
DefaultSdkInvokeLogDTO.builder().requestData(machineReqDTOList).responseData(result)
|
||||
.build()));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
log.info("埋点数据推送宝就业后台 ======结束");
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
<?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.newyetai.recruit.eventtrack.dao.EventTrackMapper">
|
||||
|
||||
<select id="list" resultType="com.newyetai.recruit.eventtrack.dto.EventTrackDTO">
|
||||
SELECT t.*
|
||||
<include refid="queryFromSql"></include>
|
||||
</select>
|
||||
|
||||
<select id="page" resultType="com.newyetai.recruit.eventtrack.dto.EventTrackDTO">
|
||||
SELECT t.*
|
||||
<include refid="queryFromSql"></include>
|
||||
</select>
|
||||
<select id="statistics"
|
||||
resultType="com.newyetai.recruit.eventtrack.dto.EventTrackStatisticsResDTO">
|
||||
select a.device_code,
|
||||
a."user_id",
|
||||
a."type",
|
||||
b."name",
|
||||
b.address,
|
||||
DATE_FORMAT(a.create_time, '%Y-%m-%d') as createDate,
|
||||
count(a.id) as userNumber
|
||||
from hr_event_track a
|
||||
left join hr_device b on a."device_code" = b."code" and b."deleted" = 0
|
||||
where a."deleted" = 0
|
||||
<if test='param.createTimeStart != null'>
|
||||
AND a.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test='param.createTimeEnd != null'>
|
||||
AND a.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
group by a."device_code",DATE_FORMAT(a.create_time, '%Y-%m-%d')
|
||||
|
||||
</select>
|
||||
|
||||
<sql id="queryFromSql">
|
||||
FROM
|
||||
hr_event_track t
|
||||
WHERE t.deleted = 0
|
||||
<if test='param.id != null'>
|
||||
AND t.id = #{param.id}
|
||||
</if>
|
||||
<if test='param.deviceCode != null and param.deviceCode.trim() != ""'>
|
||||
AND t.device_code = #{param.deviceCode}
|
||||
</if>
|
||||
<if test='param.userId != null'>
|
||||
AND t.user_id = #{param.userId}
|
||||
</if>
|
||||
<if test='param.type != null and param.type.trim() != ""'>
|
||||
AND t.type = #{param.type}
|
||||
</if>
|
||||
<if test='param.createTimeStart != null'>
|
||||
AND t.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test='param.createTimeEnd != null'>
|
||||
AND t.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
<if test='param.updateTimeStart != null'>
|
||||
AND t.update_time >= #{param.updateTimeStart}
|
||||
</if>
|
||||
<if test='param.updateTimeEnd != null'>
|
||||
AND t.update_time <= #{param.updateTimeEnd}
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.newyetai.recruit.eventtrack.service;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.groups.Default;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.newyetai.recruit.eventtrack.dto.*;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@Validated(Default.class)
|
||||
public interface EventTrackService {
|
||||
|
||||
/**
|
||||
* 埋点 - 创建
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link EventTrackDTO}
|
||||
*/
|
||||
EventTrackDTO create(@Valid EventTrackOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 埋点 - 修改
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link EventTrackDTO}
|
||||
*/
|
||||
EventTrackDTO modify(@Valid EventTrackOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 埋点 - 删除
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link EventTrackDTO}
|
||||
*/
|
||||
EventTrackDTO delete(Long id);
|
||||
|
||||
/**
|
||||
* 埋点 - 根据ID查询单个
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link EventTrackDTO}
|
||||
*/
|
||||
EventTrackDTO findById(Long id);
|
||||
|
||||
/**
|
||||
* 埋点 - 列表查询
|
||||
*
|
||||
* @param queryDTO 列表查询dto
|
||||
* @return {@link List}<{@link EventTrackDTO}>
|
||||
*/
|
||||
List<EventTrackDTO> list(EventTrackQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 埋点 - 分页查询
|
||||
*
|
||||
* @param queryDTO 分页查询dto
|
||||
* @return {@link EventTrackDTO}
|
||||
*/
|
||||
List<EventTrackDTO> page(EventTrackPageQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* @description: 按日统计
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
List<EventTrackStatisticsResDTO> statistics(EventTrackStatisticsQueryDTO queryDTO);
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.newyetai.recruit.eventtrack.service.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.newyetai.common.util.JsonUtils;
|
||||
import com.newyetai.recruit.eventtrack.convert.EventTrackConvert;
|
||||
import com.newyetai.recruit.eventtrack.entity.EventTrack;
|
||||
import com.newyetai.recruit.eventtrack.dto.*;
|
||||
import com.newyetai.recruit.eventtrack.dao.EventTrackMapper;
|
||||
import com.newyetai.recruit.eventtrack.service.EventTrackService;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.newyetai.common.util.UserContextHolder;
|
||||
import com.newyetai.sdk.tencent.map.dto.TencentMapLocationV1IpResDTO;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 埋点
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2025-01-22
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class EventTrackServiceImpl implements EventTrackService {
|
||||
|
||||
@Resource
|
||||
private EventTrackMapper eventTrackMapper;
|
||||
|
||||
@Override
|
||||
public EventTrackDTO create(EventTrackOperatorDTO operatorDto) {
|
||||
EventTrack eventTrack = EventTrackConvert.INSTANCE.convert(operatorDto);
|
||||
eventTrackMapper.saveEntity(eventTrack);
|
||||
return EventTrackConvert.INSTANCE.convert(eventTrack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventTrackDTO modify(EventTrackOperatorDTO operatorDto) {
|
||||
EventTrackDTO eventTrackDto = this.findById(operatorDto.getId());
|
||||
if (Objects.isNull(eventTrackDto)) {
|
||||
return null;
|
||||
}
|
||||
EventTrack eventTrack = EventTrackConvert.INSTANCE.convert(operatorDto);
|
||||
eventTrackMapper.updateEntitySelective(eventTrack);
|
||||
return this.findById(operatorDto.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventTrackDTO delete(Long id) {
|
||||
EventTrackDTO eventTrackDto = this.findById(id);
|
||||
if (Objects.isNull(eventTrackDto)) {
|
||||
return null;
|
||||
}
|
||||
EventTrack eventTrack = EventTrack.builder().build();
|
||||
eventTrack.setId(id);
|
||||
eventTrackMapper.deleteEntity(eventTrack, UserContextHolder.getLoginUserId());
|
||||
return eventTrackDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public EventTrackDTO findById(Long id) {
|
||||
EventTrack eventTrack = eventTrackMapper.getById(id);
|
||||
if (Objects.isNull(eventTrack)) {
|
||||
return null;
|
||||
}
|
||||
return EventTrackConvert.INSTANCE.convert(eventTrack);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EventTrackDTO> list(EventTrackQueryDTO queryDTO) {
|
||||
return eventTrackMapper.list(queryDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EventTrackDTO> page(EventTrackPageQueryDTO queryDTO) {
|
||||
return eventTrackMapper.page(queryDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EventTrackStatisticsResDTO> statistics(EventTrackStatisticsQueryDTO queryDTO) {
|
||||
List<EventTrackStatisticsResDTO> statisticList = eventTrackMapper.statistics(queryDTO);
|
||||
return statisticList;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.newyetai.recruit.jobhelp.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.common.validation.Create;
|
||||
import com.newyetai.common.validation.Update;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
import com.newyetai.recruit.jobhelp.dto.*;
|
||||
import com.newyetai.recruit.jobhelp.service.JobHelpService;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@Api(tags = "就业帮扶")
|
||||
@RestController
|
||||
@RequestMapping("/jobhelp")
|
||||
public class JobHelpController {
|
||||
|
||||
@Autowired
|
||||
private JobHelpService jobHelpService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("就业帮扶-创建")
|
||||
public AlitaResult<JobHelpDTO> create(@RequestBody @Validated(value = Create.class) JobHelpOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(jobHelpService.create(operatorDTO));
|
||||
}
|
||||
|
||||
@PutMapping("/modify")
|
||||
@ApiOperation("就业帮扶-修改")
|
||||
public AlitaResult<JobHelpDTO> modify(@RequestBody @Validated(value = Update.class) JobHelpOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(jobHelpService.modify(operatorDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
@ApiOperation("就业帮扶-删除")
|
||||
public AlitaResult<JobHelpDTO> delete(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(jobHelpService.delete(id));
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ApiOperation("就业帮扶-查询单个")
|
||||
public AlitaResult<JobHelpDTO> findById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(jobHelpService.findById(id));
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("就业帮扶-列表查询")
|
||||
public AlitaResult<List<JobHelpDTO>> list(JobHelpQueryDTO queryDTO) {
|
||||
return AlitaResult.success(jobHelpService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("就业帮扶-分页查询")
|
||||
public AlitaResult<Page<JobHelpDTO>> page(JobHelpPageQueryDTO queryDTO) {
|
||||
jobHelpService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("/user_page")
|
||||
@ApiOperation("就业帮扶-分页查询")
|
||||
public AlitaResult<Page<JobHelpDTO>> userPage(JobHelpPageQueryDTO queryDTO) {
|
||||
jobHelpService.userPage(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.newyetai.recruit.jobhelp.convert;
|
||||
|
||||
import com.newyetai.recruit.jobhelp.entity.JobHelp;
|
||||
import com.newyetai.recruit.jobhelp.dto.JobHelpDTO;
|
||||
import com.newyetai.recruit.jobhelp.dto.JobHelpOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@Mapper
|
||||
public interface JobHelpConvert {
|
||||
JobHelpConvert INSTANCE = Mappers.getMapper(JobHelpConvert.class);
|
||||
|
||||
JobHelp convert(JobHelpDTO dto);
|
||||
|
||||
JobHelpDTO convert(JobHelp entity);
|
||||
|
||||
JobHelp convert(JobHelpOperatorDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.newyetai.recruit.jobhelp.dao;
|
||||
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.jobhelp.entity.JobHelp;
|
||||
import com.newyetai.recruit.jobhelp.dto.JobHelpDTO;
|
||||
import com.newyetai.recruit.jobhelp.dto.JobHelpQueryDTO;
|
||||
import com.newyetai.recruit.jobhelp.dto.JobHelpPageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@Mapper
|
||||
public interface JobHelpMapper extends MyMapper<JobHelp> {
|
||||
|
||||
List<JobHelpDTO> page(@Param("param") JobHelpPageQueryDTO queryDTO);
|
||||
|
||||
List<JobHelpDTO> list(@Param("param") JobHelpQueryDTO queryDTO);
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.newyetai.recruit.jobhelp.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@ApiModel("就业帮扶")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class JobHelpDTO extends BaseDTO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("问题")
|
||||
private String question;
|
||||
|
||||
@ApiModelProperty("状态:1、待回复 2、已回复")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("回答")
|
||||
private String answer;
|
||||
|
||||
@ApiModelProperty("回复时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date answerTime;
|
||||
|
||||
private String nickname;
|
||||
|
||||
private String phone;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.newyetai.recruit.jobhelp.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.newyetai.common.validation.Create;
|
||||
import com.newyetai.common.validation.Update;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@ApiModel("就业帮扶")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class JobHelpOperatorDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@NotNull(message = "参数缺失",groups = Update.class)
|
||||
private Long id;
|
||||
|
||||
private Long userId;
|
||||
|
||||
@Length(max = 512,message = "问题描述超长了",groups = Create.class)
|
||||
@NotBlank(message = "请输入问题描述",groups = Create.class)
|
||||
@ApiModelProperty("问题")
|
||||
private String question;
|
||||
|
||||
@ApiModelProperty("状态:1、待回复 2、已回复")
|
||||
private String status;
|
||||
|
||||
@NotBlank(message = "请输入回复内容",groups = Update.class)
|
||||
@ApiModelProperty("回答")
|
||||
private String answer;
|
||||
|
||||
@ApiModelProperty("回复时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date answerTime;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.newyetai.recruit.jobhelp.dto;
|
||||
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
|
||||
@ApiModel("就业帮扶")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class JobHelpPageQueryDTO extends PageQueryDTO<JobHelpDTO> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("问题")
|
||||
private String question;
|
||||
|
||||
@ApiModelProperty("状态:1、待回复 2、已回复")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("回答")
|
||||
private String answer;
|
||||
|
||||
@ApiModelProperty("回复时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date answerTime;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package com.newyetai.recruit.jobhelp.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@ApiModel("就业帮扶")
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class JobHelpQueryDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long userId;
|
||||
|
||||
@ApiModelProperty("问题")
|
||||
private String question;
|
||||
|
||||
@ApiModelProperty("状态:1、待回复 2、已回复")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("回答")
|
||||
private String answer;
|
||||
|
||||
@ApiModelProperty("回复时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date answerTime;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.newyetai.recruit.jobhelp.entity;
|
||||
|
||||
|
||||
import lombok.*;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import com.newyetai.common.entity.BaseEntity;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@TableName(value = "hr_job_help")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class JobHelp extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private Long userId;
|
||||
/**
|
||||
* 问题
|
||||
*/
|
||||
private String question;
|
||||
/**
|
||||
* 状态:1、待回复 2、已回复
|
||||
*/
|
||||
private String status;
|
||||
/**
|
||||
* 回答
|
||||
*/
|
||||
private String answer;
|
||||
/**
|
||||
* 回复时间
|
||||
*/
|
||||
private Date answerTime;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.newyetai.recruit.jobhelp.enums;
|
||||
|
||||
public enum JobHelpStatusEnum {
|
||||
INIT("1", "待回复"),
|
||||
ANSWER("2", "已回复")
|
||||
;
|
||||
|
||||
private String status;
|
||||
/**
|
||||
* 类型描述
|
||||
*/
|
||||
private String desc;
|
||||
|
||||
|
||||
JobHelpStatusEnum(String status, String desc) {
|
||||
this.status = status;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
<?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.newyetai.recruit.jobhelp.dao.JobHelpMapper">
|
||||
|
||||
<select id="list" resultType="com.newyetai.recruit.jobhelp.dto.JobHelpDTO">
|
||||
SELECT t.*
|
||||
<include refid="queryFromSql"></include>
|
||||
</select>
|
||||
|
||||
<select id="page" resultType="com.newyetai.recruit.jobhelp.dto.JobHelpDTO">
|
||||
SELECT t.*,u.nickname,u.phone
|
||||
FROM
|
||||
hr_job_help t
|
||||
LEFT JOIN uc_user u ON t.user_id = u.id AND u.deleted = 0
|
||||
WHERE t.deleted = 0
|
||||
<if test='param.userId != null'>
|
||||
AND t.user_id = #{param.userId}
|
||||
</if>
|
||||
<if test='param.status != null and param.status.trim() != ""'>
|
||||
AND t.status = #{param.status}
|
||||
</if>
|
||||
<if test='param.createTimeStart != null'>
|
||||
AND t.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test='param.createTimeEnd != null'>
|
||||
AND t.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</select>
|
||||
|
||||
<sql id="queryFromSql">
|
||||
FROM
|
||||
hr_job_help t
|
||||
WHERE t.deleted = 0
|
||||
<if test='param.id != null'>
|
||||
AND t.id = #{param.id}
|
||||
</if>
|
||||
<if test='param.userId != null'>
|
||||
AND t.user_id = #{param.userId}
|
||||
</if>
|
||||
<if test='param.question != null and param.question.trim() != ""'>
|
||||
AND t.question = #{param.question}
|
||||
</if>
|
||||
<if test='param.status != null and param.status.trim() != ""'>
|
||||
AND t.status = #{param.status}
|
||||
</if>
|
||||
<if test='param.answer != null and param.answer.trim() != ""'>
|
||||
AND t.answer = #{param.answer}
|
||||
</if>
|
||||
<if test='param.answerTime != null'>
|
||||
AND t.answer_time = #{param.answerTime}
|
||||
</if>
|
||||
<if test='param.createTimeStart != null'>
|
||||
AND t.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test='param.createTimeEnd != null'>
|
||||
AND t.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
<if test='param.updateTimeStart != null'>
|
||||
AND t.update_time >= #{param.updateTimeStart}
|
||||
</if>
|
||||
<if test='param.updateTimeEnd != null'>
|
||||
AND t.update_time <= #{param.updateTimeEnd}
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.newyetai.recruit.jobhelp.service;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.groups.Default;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.newyetai.recruit.jobhelp.dto.*;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@Validated(Default.class)
|
||||
public interface JobHelpService {
|
||||
|
||||
/**
|
||||
* 就业帮扶 - 创建
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link JobHelpDTO}
|
||||
*/
|
||||
JobHelpDTO create(@Valid JobHelpOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 就业帮扶 - 修改
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link JobHelpDTO}
|
||||
*/
|
||||
JobHelpDTO modify(@Valid JobHelpOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 就业帮扶 - 删除
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link JobHelpDTO}
|
||||
*/
|
||||
JobHelpDTO delete(Long id);
|
||||
|
||||
/**
|
||||
* 就业帮扶 - 根据ID查询单个
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link JobHelpDTO}
|
||||
*/
|
||||
JobHelpDTO findById(Long id);
|
||||
|
||||
/**
|
||||
* 就业帮扶 - 列表查询
|
||||
*
|
||||
* @param queryDTO 列表查询dto
|
||||
* @return {@link List}<{@link JobHelpDTO}>
|
||||
*/
|
||||
List<JobHelpDTO> list(JobHelpQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 就业帮扶 - 分页查询
|
||||
*
|
||||
* @param queryDTO 分页查询dto
|
||||
* @return {@link JobHelpDTO}
|
||||
*/
|
||||
List<JobHelpDTO> page(JobHelpPageQueryDTO queryDTO);
|
||||
|
||||
List<JobHelpDTO> userPage(JobHelpPageQueryDTO queryDTO);
|
||||
}
|
||||
@@ -0,0 +1,106 @@
|
||||
package com.newyetai.recruit.jobhelp.service.impl;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.newyetai.common.constant.CommonConstants;
|
||||
import com.newyetai.common.exception.BusinessException;
|
||||
import com.newyetai.common.util.SensitiveWordUtils;
|
||||
import com.newyetai.recruit.jobhelp.convert.JobHelpConvert;
|
||||
import com.newyetai.recruit.jobhelp.entity.JobHelp;
|
||||
import com.newyetai.recruit.jobhelp.dto.*;
|
||||
import com.newyetai.recruit.jobhelp.dao.JobHelpMapper;
|
||||
import com.newyetai.recruit.jobhelp.enums.JobHelpStatusEnum;
|
||||
import com.newyetai.recruit.jobhelp.service.JobHelpService;
|
||||
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.newyetai.common.util.UserContextHolder;
|
||||
import com.newyetai.usercenter.enums.OrgTypeEnum;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 就业帮扶
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-17
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class JobHelpServiceImpl implements JobHelpService {
|
||||
|
||||
@Resource
|
||||
private JobHelpMapper jobHelpMapper;
|
||||
|
||||
@Override
|
||||
public JobHelpDTO create(JobHelpOperatorDTO operatorDto) {
|
||||
if (!SensitiveWordUtils.check(operatorDto.getQuestion())) {
|
||||
throw new BusinessException("非法问题描述");
|
||||
}
|
||||
Long userId = UserContextHolder.getExistLoginUserId();
|
||||
|
||||
operatorDto.setUserId(userId);
|
||||
operatorDto.setStatus(JobHelpStatusEnum.INIT.getStatus());
|
||||
JobHelp jobHelp = JobHelpConvert.INSTANCE.convert(operatorDto);
|
||||
jobHelpMapper.saveEntity(jobHelp);
|
||||
return JobHelpConvert.INSTANCE.convert(jobHelp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobHelpDTO modify(JobHelpOperatorDTO operatorDto) {
|
||||
JobHelpDTO jobHelpDto = this.findById(operatorDto.getId());
|
||||
if (Objects.isNull(jobHelpDto)) {
|
||||
return null;
|
||||
}
|
||||
JobHelp jobHelp = new JobHelp();
|
||||
jobHelp.setId(operatorDto.getId());
|
||||
jobHelp.setAnswer(operatorDto.getAnswer());
|
||||
jobHelp.setAnswerTime(new Date());
|
||||
jobHelp.setStatus(JobHelpStatusEnum.ANSWER.getStatus());
|
||||
jobHelpMapper.updateEntitySelective(jobHelp);
|
||||
return this.findById(operatorDto.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobHelpDTO delete(Long id) {
|
||||
JobHelpDTO jobHelpDto = this.findById(id);
|
||||
if (Objects.isNull(jobHelpDto)) {
|
||||
return null;
|
||||
}
|
||||
JobHelp jobHelp = JobHelp.builder().build();
|
||||
jobHelp.setId(id);
|
||||
jobHelpMapper.deleteEntity(jobHelp, UserContextHolder.getLoginUserId());
|
||||
return jobHelpDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobHelpDTO findById(Long id) {
|
||||
JobHelp jobHelp = jobHelpMapper.getById(id);
|
||||
if (Objects.isNull(jobHelp)) {
|
||||
return null;
|
||||
}
|
||||
return JobHelpConvert.INSTANCE.convert(jobHelp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JobHelpDTO> list(JobHelpQueryDTO queryDTO) {
|
||||
return jobHelpMapper.list(queryDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JobHelpDTO> page(JobHelpPageQueryDTO queryDTO) {
|
||||
if (OrgTypeEnum.ORG_TYPE_PLATFORM.getType().equals(UserContextHolder.getOrgType()) || OrgTypeEnum.ORG_TYPE_GOV.getType().equals(UserContextHolder.getOrgType()) ) {
|
||||
return jobHelpMapper.page(queryDTO);
|
||||
}else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JobHelpDTO> userPage(JobHelpPageQueryDTO queryDTO) {
|
||||
queryDTO.setUserId(UserContextHolder.getExistLoginUserId());
|
||||
return jobHelpMapper.page(queryDTO);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,89 @@
|
||||
package com.newyetai.recruit.orgapply.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.recruit.orgapply.entity.OrgApply;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
import com.newyetai.recruit.orgapply.dto.*;
|
||||
import com.newyetai.recruit.orgapply.service.OrgApplyService;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@Api(tags = "入驻申请表")
|
||||
@RestController
|
||||
public class OrgApplyController {
|
||||
|
||||
@Autowired
|
||||
private OrgApplyService orgApplyService;
|
||||
|
||||
@PostMapping("/anon/org_apply/create")
|
||||
@ApiOperation("入驻申请表-创建")
|
||||
public AlitaResult<OrgApplyDTO> create(@RequestBody @Validated OrgApplyOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(orgApplyService.create(operatorDTO));
|
||||
}
|
||||
|
||||
@PostMapping("/org_apply/modify")
|
||||
@ApiOperation("入驻申请表-修改")
|
||||
public AlitaResult<OrgApplyDTO> modify(@RequestBody OrgApplyOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(orgApplyService.modify(operatorDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/org_apply/{id}")
|
||||
@ApiOperation("入驻申请表-删除")
|
||||
public AlitaResult<OrgApplyDTO> delete(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(orgApplyService.delete(id));
|
||||
}
|
||||
|
||||
@GetMapping("/org_apply/{id}")
|
||||
@ApiOperation("入驻申请表-查询单个")
|
||||
public AlitaResult<OrgApplyDTO> findById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(orgApplyService.findById(id));
|
||||
}
|
||||
|
||||
@GetMapping("/org_apply/list")
|
||||
@ApiOperation("入驻申请表-列表查询")
|
||||
public AlitaResult<List<OrgApplyDTO>> list(OrgApplyQueryDTO queryDTO) {
|
||||
return AlitaResult.success(orgApplyService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/org_apply/page")
|
||||
@ApiOperation("入驻申请表-分页查询")
|
||||
public AlitaResult<Page<OrgApplyDTO>> page(OrgApplyPageQueryDTO queryDTO) {
|
||||
orgApplyService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@PostMapping("/org_apply/approve")
|
||||
@ApiOperation("审批")
|
||||
public AlitaResult<Void> approve(@RequestBody @Validated OrgApplyApproveDTO applyApproveDTO) {
|
||||
orgApplyService.approve(applyApproveDTO);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation("查看审批单")
|
||||
@GetMapping("/anon/org_apply/getInfo")
|
||||
public AlitaResult<List<OrgApply>> getInfoByPhone(@RequestParam("phone") String phone) {
|
||||
List<OrgApply> infoByPhone = orgApplyService.getInfoByPhone(phone);
|
||||
return AlitaResult.success(infoByPhone);
|
||||
}
|
||||
|
||||
@ApiOperation("分享")
|
||||
@GetMapping("/org_apply/user/share")
|
||||
public AlitaResult<String> share(){
|
||||
return AlitaResult.success(orgApplyService.share());
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.newyetai.recruit.orgapply.convert;
|
||||
|
||||
import com.newyetai.recruit.orgapply.entity.OrgApply;
|
||||
import com.newyetai.recruit.orgapply.dto.OrgApplyDTO;
|
||||
import com.newyetai.recruit.orgapply.dto.OrgApplyOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrgApplyConvert {
|
||||
OrgApplyConvert INSTANCE = Mappers.getMapper(OrgApplyConvert.class);
|
||||
|
||||
OrgApply convert(OrgApplyDTO dto);
|
||||
|
||||
OrgApplyDTO convert(OrgApply entity);
|
||||
|
||||
OrgApply convert(OrgApplyOperatorDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.newyetai.recruit.orgapply.dao;
|
||||
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.orgapply.entity.OrgApply;
|
||||
import com.newyetai.recruit.orgapply.dto.OrgApplyDTO;
|
||||
import com.newyetai.recruit.orgapply.dto.OrgApplyQueryDTO;
|
||||
import com.newyetai.recruit.orgapply.dto.OrgApplyPageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@Mapper
|
||||
public interface OrgApplyMapper extends MyMapper<OrgApply> {
|
||||
|
||||
List<OrgApplyDTO> page(@Param("param") OrgApplyPageQueryDTO queryDTO);
|
||||
|
||||
List<OrgApplyDTO> list(@Param("param") OrgApplyQueryDTO queryDTO);
|
||||
|
||||
int approve(@Param("id") Long id, @Param("oldStatus") String oldStatus, @Param("newStatus") String newStatus, @Param("cause") String cause, @Param("operateUserId") Long operateUserId);
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.newyetai.recruit.orgapply.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 入驻审批
|
||||
* @author: guixinman
|
||||
* @create: 2024-04-08 14:55
|
||||
**/
|
||||
@Data
|
||||
public class OrgApplyApproveDTO implements Serializable {
|
||||
|
||||
@NotNull(message = "请选择要处理的数据")
|
||||
private Long id;
|
||||
|
||||
@NotNull(message = "请选择状态")
|
||||
private String status;
|
||||
|
||||
private String cause;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.newyetai.recruit.orgapply.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@ApiModel("入驻申请表")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OrgApplyDTO extends BaseDTO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("统一社会信用代码")
|
||||
private String creditCode;
|
||||
|
||||
@ApiModelProperty("公司名称")
|
||||
private String companyName;
|
||||
|
||||
@ApiModelProperty("企业所在地")
|
||||
private String areaCode;
|
||||
|
||||
private String areaCodeName;
|
||||
|
||||
@ApiModelProperty("邀请人")
|
||||
private Long inviterUserId;
|
||||
|
||||
@ApiModelProperty("邀请机构")
|
||||
private Long inviterOrgId;
|
||||
|
||||
private String inviterOrgName;
|
||||
|
||||
@ApiModelProperty("企业联系手机")
|
||||
private String phone;
|
||||
|
||||
@ApiModelProperty("企业类型")
|
||||
private String companyType;
|
||||
|
||||
@ApiModelProperty("状态 1:待处理 2:已通过 3:已驳回")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("营业执照")
|
||||
private String businessLicenseCode;
|
||||
|
||||
/**
|
||||
* 原因
|
||||
*/
|
||||
private String cause;
|
||||
|
||||
/**
|
||||
* 招聘岗位类型
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
private String recruitPositionTypeName;
|
||||
|
||||
/**
|
||||
* 注册地址
|
||||
*/
|
||||
private String registeredAddress;
|
||||
|
||||
/**
|
||||
* 企业所在地:文本
|
||||
*/
|
||||
private String addressName;
|
||||
|
||||
@ApiModelProperty("管理员姓名")
|
||||
private String realName;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.newyetai.recruit.orgapply.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 入驻邀请人dto
|
||||
* @author: guixinman
|
||||
* @create: 2024-04-10 17:16
|
||||
**/
|
||||
@Data
|
||||
public class OrgApplyInviterDTO implements Serializable {
|
||||
|
||||
/**
|
||||
* 邀请人
|
||||
*/
|
||||
private Long inviterUserId;
|
||||
/**
|
||||
* 邀请机构
|
||||
*/
|
||||
private Long inviterOrgId;
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.newyetai.recruit.orgapply.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import org.hibernate.validator.constraints.Length;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@ApiModel("入驻申请表")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OrgApplyOperatorDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@Length(max = 64,message = "统一社会信用代码超长了")
|
||||
@ApiModelProperty("统一社会信用代码")
|
||||
private String creditCode;
|
||||
|
||||
@NotBlank(message = "企业名称不能为空")
|
||||
@Length(max = 32,message = "企业名称超长了")
|
||||
@ApiModelProperty("公司名称")
|
||||
private String companyName;
|
||||
|
||||
@Length(max = 50,message = "企业所在地超长了")
|
||||
@ApiModelProperty("企业所在地")
|
||||
private String areaCode;
|
||||
|
||||
@ApiModelProperty("邀请人")
|
||||
private Long inviterUserId;
|
||||
|
||||
@ApiModelProperty("邀请机构")
|
||||
private Long inviterOrgId;
|
||||
|
||||
@NotBlank(message = "企业联系手机不能为空")
|
||||
@Length(max = 20,message = "企业联系手机超长了")
|
||||
@ApiModelProperty("企业联系手机")
|
||||
private String phone;
|
||||
|
||||
@NotBlank(message = "管理员姓名不能为空")
|
||||
@ApiModelProperty("管理员姓名")
|
||||
private String realName;
|
||||
|
||||
@NotNull(message = "企业类型不能为空")
|
||||
@ApiModelProperty("企业类型")
|
||||
private String companyType;
|
||||
|
||||
@ApiModelProperty("状态 1:待处理 2:已通过 3:已驳回")
|
||||
private String status;
|
||||
|
||||
@NotBlank(message = "营业执照不能为空")
|
||||
@ApiModelProperty("营业执照")
|
||||
private String businessLicenseCode;
|
||||
|
||||
private String uniqueCode;
|
||||
|
||||
private String smsCode;
|
||||
|
||||
/**
|
||||
* 招聘岗位类型
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
/**
|
||||
* 注册地址
|
||||
*/
|
||||
@Length(max = 128,message = "注册地址超长了")
|
||||
@NotBlank(message = "企业注册地址不能为空")
|
||||
private String registeredAddress;
|
||||
|
||||
/**
|
||||
* 企业所在地:文本
|
||||
*/
|
||||
@Length(max = 128,message = "企业所在地超长了")
|
||||
private String addressName;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.newyetai.recruit.orgapply.dto;
|
||||
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
|
||||
@ApiModel("入驻申请表")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OrgApplyPageQueryDTO extends PageQueryDTO<OrgApplyDTO> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("统一社会信用代码")
|
||||
private String creditCode;
|
||||
|
||||
@ApiModelProperty("公司名称 (模糊匹配)")
|
||||
private String companyNameLike;
|
||||
|
||||
@ApiModelProperty("企业所在地")
|
||||
private String areaCode;
|
||||
|
||||
@ApiModelProperty("邀请人")
|
||||
private Long inviterUserId;
|
||||
|
||||
@ApiModelProperty("邀请机构")
|
||||
private Long inviterOrgId;
|
||||
|
||||
@ApiModelProperty("企业联系手机")
|
||||
private String phone;
|
||||
|
||||
@ApiModelProperty("企业类型")
|
||||
private String companyType;
|
||||
|
||||
@ApiModelProperty("状态 1:待处理 2:已通过 3:已驳回")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("营业执照")
|
||||
private String businessLicenseCode;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
package com.newyetai.recruit.orgapply.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@ApiModel("入驻申请表")
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class OrgApplyQueryDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("统一社会信用代码")
|
||||
private String creditCode;
|
||||
|
||||
@ApiModelProperty("公司名称 (模糊匹配)")
|
||||
private String companyNameLike;
|
||||
|
||||
@ApiModelProperty("企业所在地")
|
||||
private String areaCode;
|
||||
|
||||
@ApiModelProperty("邀请人")
|
||||
private Long inviterUserId;
|
||||
|
||||
@ApiModelProperty("邀请机构")
|
||||
private Long inviterOrgId;
|
||||
|
||||
@ApiModelProperty("企业联系手机")
|
||||
private String phone;
|
||||
|
||||
@ApiModelProperty("企业类型")
|
||||
private String companyType;
|
||||
|
||||
@ApiModelProperty("状态 1:待处理 2:已通过 3:已驳回")
|
||||
private String status;
|
||||
|
||||
@ApiModelProperty("营业执照")
|
||||
private String businessLicenseCode;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
package com.newyetai.recruit.orgapply.entity;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
|
||||
import com.newyetai.common.entity.BaseEntity;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@TableName(value = "org_apply")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class OrgApply extends BaseEntity {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 统一社会信用代码
|
||||
*/
|
||||
private String creditCode;
|
||||
/**
|
||||
* 公司名称
|
||||
*/
|
||||
private String companyName;
|
||||
/**
|
||||
* 企业所在地
|
||||
*/
|
||||
private String areaCode;
|
||||
/**
|
||||
* 邀请人
|
||||
*/
|
||||
private Long inviterUserId;
|
||||
/**
|
||||
* 邀请机构
|
||||
*/
|
||||
private Long inviterOrgId;
|
||||
/**
|
||||
* 企业联系手机
|
||||
*/
|
||||
private String phone;
|
||||
/**
|
||||
* 企业类型
|
||||
*/
|
||||
private String companyType;
|
||||
/**
|
||||
* 状态 1:待处理 2:已通过 3:已驳回
|
||||
*/
|
||||
private String status;
|
||||
/**
|
||||
* 营业执照
|
||||
*/
|
||||
private String businessLicenseCode;
|
||||
/**
|
||||
* 原因
|
||||
*/
|
||||
private String cause;
|
||||
|
||||
/**
|
||||
* 招聘岗位类型
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
/**
|
||||
* 注册地址
|
||||
*/
|
||||
private String registeredAddress;
|
||||
|
||||
/**
|
||||
* 企业所在地:文本
|
||||
*/
|
||||
private String addressName;
|
||||
|
||||
@ApiModelProperty("管理员姓名")
|
||||
private String realName;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.newyetai.recruit.orgapply.enums;
|
||||
|
||||
public enum OrgApplyEnum {
|
||||
INIT("1","待处理"),
|
||||
SUCCESS("2","已通过"),
|
||||
REJECT("3","已驳回")
|
||||
;
|
||||
|
||||
private String status;
|
||||
/**
|
||||
* 类型描述
|
||||
*/
|
||||
private String desc;
|
||||
|
||||
|
||||
OrgApplyEnum(String status, String desc) {
|
||||
this.status = status;
|
||||
this.desc = desc;
|
||||
}
|
||||
|
||||
public String getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
public String getDesc() {
|
||||
return desc;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
<?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.newyetai.recruit.orgapply.dao.OrgApplyMapper">
|
||||
<update id="approve">
|
||||
update org_apply set status = #{newStatus}, cause=#{cause}, update_by = #{operateUserId}, update_time = now() where id = #{id} and status = #{oldStatus}
|
||||
</update>
|
||||
|
||||
<select id="list" resultType="com.newyetai.recruit.orgapply.dto.OrgApplyDTO">
|
||||
SELECT t.*
|
||||
<include refid="queryFromSql"></include>
|
||||
</select>
|
||||
|
||||
<select id="page" resultType="com.newyetai.recruit.orgapply.dto.OrgApplyDTO">
|
||||
SELECT
|
||||
t.*,
|
||||
xo.org_name inviterOrgName,concat(xd3.name,xd2.name,xd1.name) areaCodeName
|
||||
FROM
|
||||
org_apply t
|
||||
LEFT JOIN xs_org xo ON t.inviter_org_id = xo.id AND xo.deleted = 0
|
||||
left join xs_district xd1 on t.area_code = xd1.code
|
||||
left join xs_district xd2 on xd1.parent_id = xd2.id
|
||||
left join xs_district xd3 on xd2.parent_id = xd3.id
|
||||
WHERE t.deleted = 0
|
||||
<if test='param.companyNameLike != null and param.companyNameLike.trim() != ""'>
|
||||
<bind name="companyNameLike" value="'%' + param.companyNameLike + '%'"/>
|
||||
AND t.company_name like #{companyNameLike}
|
||||
</if>
|
||||
<if test='param.creditCode != null and param.creditCode.trim() != ""'>
|
||||
AND t.credit_code = #{param.creditCode}
|
||||
</if>
|
||||
<if test='param.status != null and param.status.trim() != ""'>
|
||||
AND t.status = #{param.status}
|
||||
</if>
|
||||
<if test='param.createTimeStart != null'>
|
||||
AND t.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test='param.createTimeEnd != null'>
|
||||
AND t.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
<if test='param.inviterOrgId != null'>
|
||||
AND t.inviter_org_id = #{param.inviterOrgId}
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</select>
|
||||
|
||||
<sql id="queryFromSql">
|
||||
FROM
|
||||
org_apply t
|
||||
WHERE t.deleted = 0
|
||||
<if test='param.id != null'>
|
||||
AND t.id = #{param.id}
|
||||
</if>
|
||||
<if test='param.creditCode != null and param.creditCode.trim() != ""'>
|
||||
AND t.credit_code = #{param.creditCode}
|
||||
</if>
|
||||
<if test='param.companyNameLike != null and param.companyNameLike.trim() != ""'>
|
||||
<bind name="companyNameLike" value="'%' + param.companyNameLike + '%'"/>
|
||||
AND t.company_name like #{companyNameLike}
|
||||
</if>
|
||||
<if test='param.areaCode != null and param.areaCode.trim() != ""'>
|
||||
AND t.area_code = #{param.areaCode}
|
||||
</if>
|
||||
<if test='param.inviterUserId != null'>
|
||||
AND t.inviter_user_id = #{param.inviterUserId}
|
||||
</if>
|
||||
<if test='param.inviterOrgId != null'>
|
||||
AND t.inviter_org_id = #{param.inviterOrgId}
|
||||
</if>
|
||||
<if test='param.phone != null and param.phone.trim() != ""'>
|
||||
AND t.phone = #{param.phone}
|
||||
</if>
|
||||
<if test='param.companyType != null'>
|
||||
AND t.company_type = #{param.companyType}
|
||||
</if>
|
||||
<if test='param.status != null'>
|
||||
AND t.status = #{param.status}
|
||||
</if>
|
||||
<if test='param.businessLicenseCode != null and param.businessLicenseCode.trim() != ""'>
|
||||
AND t.business_license_code = #{param.businessLicenseCode}
|
||||
</if>
|
||||
<if test='param.createTimeStart != null'>
|
||||
AND t.create_time >= #{param.createTimeStart}
|
||||
</if>
|
||||
<if test='param.createTimeEnd != null'>
|
||||
AND t.create_time <= #{param.createTimeEnd}
|
||||
</if>
|
||||
<if test='param.updateTimeStart != null'>
|
||||
AND t.update_time >= #{param.updateTimeStart}
|
||||
</if>
|
||||
<if test='param.updateTimeEnd != null'>
|
||||
AND t.update_time <= #{param.updateTimeEnd}
|
||||
</if>
|
||||
ORDER BY t.id DESC
|
||||
</sql>
|
||||
</mapper>
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.newyetai.recruit.orgapply.service;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.groups.Default;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.newyetai.recruit.orgapply.dto.*;
|
||||
import com.newyetai.recruit.orgapply.entity.OrgApply;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@Validated(Default.class)
|
||||
public interface OrgApplyService {
|
||||
|
||||
/**
|
||||
* 入驻申请表 - 创建
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link OrgApplyDTO}
|
||||
*/
|
||||
OrgApplyDTO create(@Valid OrgApplyOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 入驻申请表 - 修改
|
||||
*
|
||||
* @param operatorDto 操作dto
|
||||
* @return {@link OrgApplyDTO}
|
||||
*/
|
||||
OrgApplyDTO modify(@Valid OrgApplyOperatorDTO operatorDto);
|
||||
|
||||
/**
|
||||
* 入驻申请表 - 删除
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link OrgApplyDTO}
|
||||
*/
|
||||
OrgApplyDTO delete(Long id);
|
||||
|
||||
/**
|
||||
* 入驻申请表 - 根据ID查询单个
|
||||
*
|
||||
* @param id id
|
||||
* @return {@link OrgApplyDTO}
|
||||
*/
|
||||
OrgApplyDTO findById(Long id);
|
||||
|
||||
/**
|
||||
* 入驻申请表 - 列表查询
|
||||
*
|
||||
* @param queryDTO 列表查询dto
|
||||
* @return {@link List}<{@link OrgApplyDTO}>
|
||||
*/
|
||||
List<OrgApplyDTO> list(OrgApplyQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 入驻申请表 - 分页查询
|
||||
*
|
||||
* @param queryDTO 分页查询dto
|
||||
* @return {@link OrgApplyDTO}
|
||||
*/
|
||||
List<OrgApplyDTO> page(OrgApplyPageQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* @description: 审批
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
void approve(OrgApplyApproveDTO orgApplyApproveDTO);
|
||||
|
||||
/**
|
||||
* @description: 根据手机号获取 入驻申请单
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
|
||||
List<OrgApply> getInfoByPhone(String phone);
|
||||
|
||||
String share();
|
||||
}
|
||||
@@ -0,0 +1,297 @@
|
||||
package com.newyetai.recruit.orgapply.service.impl;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.newyetai.common.constant.CommonConstants;
|
||||
import com.newyetai.common.exception.BusinessException;
|
||||
import com.newyetai.common.exception.util.Assert;
|
||||
import com.newyetai.common.function.TransactionAfterCommit;
|
||||
import com.newyetai.component.dict.util.DictUtils;
|
||||
import com.newyetai.config.service.ConfigService;
|
||||
import com.newyetai.frame.redis.aop.annotation.AutoUnLock;
|
||||
import com.newyetai.frame.redis.dto.LockDTO;
|
||||
import com.newyetai.frame.redis.redisson.RedissonUtils;
|
||||
import com.newyetai.recruit.orgapply.convert.OrgApplyConvert;
|
||||
import com.newyetai.recruit.orgapply.entity.OrgApply;
|
||||
import com.newyetai.recruit.orgapply.dto.*;
|
||||
import com.newyetai.recruit.orgapply.dao.OrgApplyMapper;
|
||||
import com.newyetai.recruit.orgapply.enums.OrgApplyEnum;
|
||||
import com.newyetai.recruit.orgapply.service.OrgApplyService;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.compress.utils.Lists;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import com.newyetai.common.util.UserContextHolder;
|
||||
import com.newyetai.security.expection.BadLoginException;
|
||||
import com.newyetai.usercenter.common.dto.SlickParamCreateDTO;
|
||||
import com.newyetai.usercenter.common.service.SlickParamService;
|
||||
import com.newyetai.usercenter.enums.OrgTypeEnum;
|
||||
import com.newyetai.usercenter.enums.SmsTemplateCodeEnum;
|
||||
import com.newyetai.usercenter.org.dto.OrgCreateDTO;
|
||||
import com.newyetai.usercenter.org.service.OrgService;
|
||||
import com.newyetai.usercenter.user.dto.UserRegisterCodeInfoDTO;
|
||||
import com.newyetai.usercenter.user.phone.constant.PhoneCodeProviderEnum;
|
||||
import com.newyetai.usercenter.user.phone.dto.PhoneCodeDTO;
|
||||
import com.newyetai.usercenter.user.phone.dto.SmsSimpleSendDTO;
|
||||
import com.newyetai.usercenter.user.phone.dto.SmsSimpleSendDetailDTO;
|
||||
import com.newyetai.usercenter.user.phone.provider.simple.ISimpleSms;
|
||||
import com.newyetai.usercenter.user.phone.util.PhoneCodeUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* 入驻申请表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-08
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class OrgApplyServiceImpl implements OrgApplyService {
|
||||
|
||||
@Resource
|
||||
private OrgApplyMapper orgApplyMapper;
|
||||
|
||||
@Autowired
|
||||
private ISimpleSms simpleSms;
|
||||
|
||||
@Autowired
|
||||
private SlickParamService slickParamService;
|
||||
|
||||
@Autowired
|
||||
private OrgService orgService;
|
||||
|
||||
@Autowired
|
||||
private ConfigService configService;
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @description: 企业名称 + 手机号只能申请一次,不能重复申请,驳回后可以重新提交
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
|
||||
@AutoUnLock
|
||||
@Override
|
||||
public OrgApplyDTO create(OrgApplyOperatorDTO operatorDto) {
|
||||
Assert.isTrue(
|
||||
RedissonUtils.tryLockAutomatically(
|
||||
LockDTO.builder()
|
||||
.tryLockWaitTime(0L)
|
||||
.lockTimeout(60 * 5L)
|
||||
.methodName("org_apply:create")
|
||||
.arg(operatorDto.getCompanyName())
|
||||
.arg(operatorDto.getPhone())
|
||||
.build()
|
||||
),
|
||||
"请稍后再试");
|
||||
String inviterOrgId = configService.getConfigValue("org_apply_inviter_org_id", CommonConstants.PLATFORM_ORG_ID, true);
|
||||
operatorDto.setInviterOrgId(Long.parseLong(inviterOrgId));
|
||||
|
||||
//取消验证码
|
||||
/*boolean match = PhoneCodeUtils.match(PhoneCodeDTO.builder().phone(operatorDto.getPhone())
|
||||
.code(operatorDto.getSmsCode())
|
||||
.providerType(PhoneCodeProviderEnum.ORG_APPLY.getType()).build());
|
||||
Assert.isTrue(match, new BadLoginException("验证码错误"));*/
|
||||
|
||||
Map<String, String> companyTypeMap = DictUtils.getCodeNameMap("company_type");
|
||||
Assert.notNull(companyTypeMap.get(operatorDto.getCompanyType()),"企业类型错误");
|
||||
|
||||
Map<String, String> recruitPositionTypeMap = DictUtils.getCodeNameMap("recruit_position_type");
|
||||
Assert.notNull(recruitPositionTypeMap.get(operatorDto.getRecruitPositionType()),"招聘岗位类型错误");
|
||||
|
||||
List<OrgApply> orgApplys = orgApplyMapper.selectList(new LambdaQueryWrapper<OrgApply>().eq(OrgApply::getDeleted, false).in(OrgApply::getStatus, OrgApplyEnum.INIT.getStatus(), OrgApplyEnum.SUCCESS.getStatus()).eq(OrgApply::getCompanyName, operatorDto.getCompanyName()).eq(OrgApply::getPhone, operatorDto.getPhone()));
|
||||
if (CollectionUtils.isNotEmpty(orgApplys)) {
|
||||
throw new BusinessException("(企业名称 + 手机号)已存在入驻申请,请勿重复提交!");
|
||||
}
|
||||
|
||||
OrgApply orgApply = OrgApplyConvert.INSTANCE.convert(operatorDto);
|
||||
orgApply.setStatus(OrgApplyEnum.INIT.getStatus());
|
||||
|
||||
if (StringUtils.isNotBlank(operatorDto.getUniqueCode())) {
|
||||
OrgApplyInviterDTO orgApplyInviterDTO = slickParamService.parseCode(operatorDto.getUniqueCode(), OrgApplyInviterDTO.class);
|
||||
orgApply.setInviterOrgId(orgApplyInviterDTO.getInviterOrgId());
|
||||
orgApply.setInviterUserId(orgApplyInviterDTO.getInviterUserId());
|
||||
}else {
|
||||
Assert.notNull(operatorDto.getInviterOrgId(),"请选择邀请机构");
|
||||
orgApply.setInviterOrgId(operatorDto.getInviterOrgId());
|
||||
}
|
||||
|
||||
orgApplyMapper.saveEntity(orgApply);
|
||||
return OrgApplyConvert.INSTANCE.convert(orgApply);
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrgApplyDTO modify(OrgApplyOperatorDTO operatorDto) {
|
||||
OrgApplyDTO orgApplyDto = this.findById(operatorDto.getId());
|
||||
if (Objects.isNull(orgApplyDto)) {
|
||||
return null;
|
||||
}
|
||||
OrgApply orgApply = OrgApplyConvert.INSTANCE.convert(operatorDto);
|
||||
orgApplyMapper.updateEntitySelective(orgApply);
|
||||
return this.findById(operatorDto.getId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrgApplyDTO delete(Long id) {
|
||||
OrgApplyDTO orgApplyDto = this.findById(id);
|
||||
if (Objects.isNull(orgApplyDto)) {
|
||||
return null;
|
||||
}
|
||||
OrgApply orgApply = OrgApply.builder().build();
|
||||
orgApply.setId(id);
|
||||
orgApplyMapper.deleteEntity(orgApply, UserContextHolder.getLoginUserId());
|
||||
return orgApplyDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
public OrgApplyDTO findById(Long id) {
|
||||
OrgApply orgApply = orgApplyMapper.getById(id);
|
||||
if (Objects.isNull(orgApply)) {
|
||||
return null;
|
||||
}
|
||||
if (!CommonConstants.PLATFORM_ORG_ID.equals(UserContextHolder.getExistLoginOrgId())) {
|
||||
Assert.isTrue(orgApply.getInviterOrgId().equals(UserContextHolder.getExistLoginOrgId()),"未查询到数据");
|
||||
}
|
||||
return OrgApplyConvert.INSTANCE.convert(orgApply);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrgApplyDTO> list(OrgApplyQueryDTO queryDTO) {
|
||||
return orgApplyMapper.list(queryDTO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrgApplyDTO> page(OrgApplyPageQueryDTO queryDTO) {
|
||||
if (!CommonConstants.PLATFORM_ORG_ID.equals(UserContextHolder.getExistLoginOrgId())) {
|
||||
queryDTO.setInviterOrgId(UserContextHolder.getExistLoginOrgId());
|
||||
}
|
||||
|
||||
List<OrgApplyDTO> list = orgApplyMapper.page(queryDTO);
|
||||
for (OrgApplyDTO orgApplyDTO : list) {
|
||||
orgApplyDTO.setRecruitPositionTypeName(DictUtils.getCodeNameMap("recruit_position_type").get(orgApplyDTO.getRecruitPositionType()));
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
@AutoUnLock
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void approve(OrgApplyApproveDTO orgApplyApproveDTO) {
|
||||
LambdaQueryWrapper<OrgApply> queryWrapper = new LambdaQueryWrapper<OrgApply>()
|
||||
.eq(OrgApply::getDeleted, false)
|
||||
.eq(OrgApply::getId, orgApplyApproveDTO.getId());
|
||||
|
||||
if (!CommonConstants.PLATFORM_ORG_ID.equals(UserContextHolder.getExistLoginOrgId())) {
|
||||
queryWrapper.eq(OrgApply::getInviterOrgId, UserContextHolder.getExistLoginOrgId());
|
||||
}
|
||||
|
||||
OrgApply orgApply = orgApplyMapper.selectOne(queryWrapper);
|
||||
Assert.notNull(orgApply, "未查询到数据");
|
||||
if (!orgApply.getStatus().equals(OrgApplyEnum.INIT.getStatus())) {
|
||||
throw new BusinessException("正在处理中...请稍后再试!");
|
||||
}
|
||||
Assert.isTrue(
|
||||
RedissonUtils.tryLockAutomatically(
|
||||
LockDTO.builder()
|
||||
.tryLockWaitTime(0L)
|
||||
.lockTimeout(60 * 5L)
|
||||
.methodName("org_apply:approve")
|
||||
.arg(String.valueOf(orgApplyApproveDTO.getId()))
|
||||
.build()
|
||||
),
|
||||
"正在处理中,请稍后再试");
|
||||
|
||||
if (orgApplyApproveDTO.getStatus().equals(OrgApplyEnum.REJECT.getStatus())) {
|
||||
Assert.isTrue(StringUtils.isNotBlank(orgApplyApproveDTO.getCause()), "请输入驳回原因");
|
||||
}
|
||||
|
||||
int rows = orgApplyMapper.approve(orgApplyApproveDTO.getId(), OrgApplyEnum.INIT.getStatus(), orgApplyApproveDTO.getStatus(), orgApplyApproveDTO.getCause(), UserContextHolder.getExistLoginUserId());
|
||||
if (rows != 1) {
|
||||
throw new BusinessException("审批失败,请稍后再试!");
|
||||
}
|
||||
|
||||
SmsSimpleSendDTO sendDTO = new SmsSimpleSendDTO();
|
||||
|
||||
if (orgApplyApproveDTO.getStatus().equals(OrgApplyEnum.REJECT.getStatus())) {
|
||||
/*//是驳回 短信通知联系人审核结果
|
||||
sendDTO.setTemplateCode(SmsTemplateCodeEnum.ORG_APPLY_REJECT.getTemplateCodeKey());
|
||||
List<SmsSimpleSendDetailDTO> detailDTOS = Lists.newArrayList();
|
||||
sendDTO.setDetailDTOS(detailDTOS);
|
||||
Map<String, Object> params = Maps.newHashMap();
|
||||
params.put("companyName", orgApply.getCompanyName());
|
||||
detailDTOS.add(SmsSimpleSendDetailDTO.builder()
|
||||
.phone(orgApply.getPhone())
|
||||
.parameters(params)
|
||||
.build());
|
||||
TransactionAfterCommit.doSomeThingAfterCommit(()->{
|
||||
simpleSms.send(sendDTO);
|
||||
});*/
|
||||
} else if (orgApplyApproveDTO.getStatus().equals(OrgApplyEnum.SUCCESS.getStatus())) {
|
||||
//审核通过了根据提交的企业信息去创建对应的机构
|
||||
OrgCreateDTO orgCreateDTO = OrgCreateDTO.builder()
|
||||
.type(orgApply.getCompanyType())
|
||||
.orgName(orgApply.getCompanyName())
|
||||
.phone(orgApply.getPhone())
|
||||
.creditCode(orgApply.getCreditCode())
|
||||
.addressCode(orgApply.getAreaCode())
|
||||
.addressName(orgApply.getAddressName())
|
||||
.parentId(orgApply.getInviterOrgId())
|
||||
.recruitPositionType(orgApply.getRecruitPositionType())
|
||||
.businessLicense(orgApply.getBusinessLicenseCode())
|
||||
.registeredAddress(orgApply.getRegisteredAddress())
|
||||
.realName(orgApply.getRealName())
|
||||
.build();
|
||||
orgService.create(orgCreateDTO);
|
||||
|
||||
/*sendDTO.setTemplateCode(SmsTemplateCodeEnum.ORG_APPLY_SUCCESS.getTemplateCodeKey());
|
||||
List<SmsSimpleSendDetailDTO> detailDTOS = Lists.newArrayList();
|
||||
sendDTO.setDetailDTOS(detailDTOS);
|
||||
Map<String, Object> params = Maps.newHashMap();
|
||||
params.put("companyName", orgApply.getCompanyName());
|
||||
detailDTOS.add(SmsSimpleSendDetailDTO.builder()
|
||||
.phone(orgApply.getPhone())
|
||||
.parameters(params)
|
||||
.build());
|
||||
TransactionAfterCommit.doSomeThingAfterCommit(()->{
|
||||
simpleSms.send(sendDTO);
|
||||
});*/
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<OrgApply> getInfoByPhone(String phone) {
|
||||
/*boolean match = PhoneCodeUtils.match(PhoneCodeDTO.builder().phone(phone)
|
||||
.code(code)
|
||||
.providerType(PhoneCodeProviderEnum.GET_ORG_APPLY.getType()).build());
|
||||
Assert.isTrue(match, new BadLoginException("验证码错误"));*/
|
||||
List<OrgApply> orgApplyList = orgApplyMapper.selectList(new LambdaQueryWrapper<OrgApply>().eq(OrgApply::getPhone, phone).eq(OrgApply::getDeleted, false));
|
||||
return orgApplyList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String share() {
|
||||
|
||||
Assert.isTrue(StringUtils.equals(OrgTypeEnum.ORG_TYPE_GOV.getType(),UserContextHolder.getOrgType()),"没有操作权限");
|
||||
|
||||
UserRegisterCodeInfoDTO codeDTO = UserRegisterCodeInfoDTO.builder()
|
||||
.inviterId(UserContextHolder.getLoginUserId())
|
||||
.inviterOrgId(UserContextHolder.getExistLoginOrgId())
|
||||
.build();
|
||||
|
||||
return slickParamService.create(SlickParamCreateDTO.builder().paramData(codeDTO).build())
|
||||
.getUniqueCode();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.newyetai.recruit.position.constant;
|
||||
|
||||
/**
|
||||
* 职位类型常量
|
||||
*
|
||||
* @author Carlye
|
||||
* @date 2022/01/24
|
||||
*/
|
||||
public interface PositionConstants {
|
||||
|
||||
String POSITION_TYPE_CACHE = "ptc";
|
||||
|
||||
|
||||
/**
|
||||
* 工作性质 0:不限 1:兼职 2:全职
|
||||
*/
|
||||
Integer JOB_CATEGORY_ALL = 0;
|
||||
Integer JOB_CATEGORY_PART = 1;
|
||||
/**
|
||||
* 工作性质完全
|
||||
*/
|
||||
Integer JOB_CATEGORY_FULL = 2;
|
||||
|
||||
/**
|
||||
* 结算类型 1日结 2周结 3月结 4完工结
|
||||
*/
|
||||
Integer SETTLEMENT_TYPE_DAY = 1;
|
||||
Integer SETTLEMENT_TYPE_WEEK = 2;
|
||||
Integer SETTLEMENT_TYPE_MONTH = 3;
|
||||
Integer SETTLEMENT_TYPE_END = 4;
|
||||
|
||||
/**
|
||||
* 岗位文件类型 1:图片 2:视频
|
||||
*/
|
||||
String POSITION_FILE_TYPE_IMG = "1";
|
||||
String POSITION_FILE_TYPE_VIDEO = "2";
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.newyetai.recruit.position.controller;
|
||||
|
||||
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.recruit.position.dto.PositionFileDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionFilePageQueryDTO;
|
||||
import com.newyetai.recruit.position.entity.PositionFile;
|
||||
import com.newyetai.recruit.position.service.PositionFileService;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
@Api(tags = "岗位附件")
|
||||
@RestController
|
||||
@RequestMapping("/position/file")
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class HrPositionFileController {
|
||||
|
||||
|
||||
private final PositionFileService positionFileService;
|
||||
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("分页查询岗位文件")
|
||||
public AlitaResult<Page<PositionFileDTO>> filePage(PositionFilePageQueryDTO queryDTO) {
|
||||
positionFileService.filePage(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("创建岗位文件信息")
|
||||
public AlitaResult<PositionFile> create(@RequestBody PositionFileDTO queryDTO) {
|
||||
return AlitaResult.success(positionFileService.create(queryDTO));
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@ApiOperation("修改岗位文件信息")
|
||||
public AlitaResult<Void> update(@RequestBody PositionFileDTO queryDTO) {
|
||||
positionFileService.update(queryDTO);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@DeleteMapping("/delete/{id}")
|
||||
@ApiOperation("根据文件Id删除企业文件信息")
|
||||
public AlitaResult<Void> delete(@PathVariable("id") Long id) {
|
||||
positionFileService.delete(id);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@PutMapping("/setDefault/{id}")
|
||||
@ApiOperation("设置为默认")
|
||||
public AlitaResult<Void> setDefault(@PathVariable("id") Long id) {
|
||||
positionFileService.setDefault(id);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
package com.newyetai.recruit.position.controller;
|
||||
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.recruit.position.dto.PositionAddressDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionAddressOperatorDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionAddressQueryDTO;
|
||||
import com.newyetai.recruit.position.service.PositionAddressService;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
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 java.util.List;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-岗位地址信息表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@Api(tags = "岗位地址信息")
|
||||
@RestController
|
||||
@RequestMapping("/hr/position/address")
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class PositionAddressController {
|
||||
|
||||
private final PositionAddressService positionAddressService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("新增岗位地址")
|
||||
public AlitaResult<Long> create(@RequestBody PositionAddressOperatorDTO queryDTO) {
|
||||
return AlitaResult.success(positionAddressService.createOrUpdate(queryDTO));
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@ApiOperation("修改岗位地址")
|
||||
public AlitaResult<Long> update(@RequestBody PositionAddressOperatorDTO queryDTO) {
|
||||
return AlitaResult.success(positionAddressService.createOrUpdate(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("岗位地址列表")
|
||||
public AlitaResult<List<PositionAddressDTO>> positionList(PositionAddressQueryDTO queryDTO) {
|
||||
return AlitaResult.success(positionAddressService.list(queryDTO));
|
||||
}
|
||||
|
||||
@ApiOperation("删除岗位地址")
|
||||
@DeleteMapping("/delete/{id}")
|
||||
public AlitaResult<Void> delete(@PathVariable("id") Long id) {
|
||||
positionAddressService.delete(id);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
package com.newyetai.recruit.position.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
import com.newyetai.recruit.position.dto.*;
|
||||
import com.newyetai.recruit.position.service.PositionAuditService;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 岗位审核表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-07-05
|
||||
*/
|
||||
@Api(tags = "岗位审核表")
|
||||
@RestController
|
||||
@RequestMapping("/position/audit")
|
||||
public class PositionAuditController {
|
||||
|
||||
@Autowired
|
||||
private PositionAuditService positionAuditService;
|
||||
|
||||
@PostMapping("/position_create")
|
||||
@ApiOperation("岗位审核表-创建")
|
||||
public AlitaResult<PositionNewDTO> positionCreate(@RequestBody @Validated PositionNewOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(positionAuditService.positionCreate(operatorDTO));
|
||||
}
|
||||
|
||||
@PutMapping("/position_modify")
|
||||
@ApiOperation("岗位审核表-修改")
|
||||
public AlitaResult<Void> positionModify(@RequestBody @Validated PositionNewOperatorDTO operatorDTO) {
|
||||
positionAuditService.positionModify(operatorDTO);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/position_find/{id}")
|
||||
@ApiOperation("岗位审核表-查询单个")
|
||||
public AlitaResult<PositionNewDTO> positionFindById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(positionAuditService.positionFindById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: PC端 岗位列表分页查询
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
@GetMapping("/position_page")
|
||||
@ApiOperation("岗位-分页查询")
|
||||
public AlitaResult<Page<PositionNewDTO>> positionPage(PositionNewPageQueryDTO queryDTO) {
|
||||
positionAuditService.positionPage(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("/position_export")
|
||||
@ApiOperation("岗位信息表-导出")
|
||||
public void positionExport(PositionNewPageQueryDTO queryDTO) {
|
||||
positionAuditService.export(queryDTO);
|
||||
}
|
||||
|
||||
@PutMapping("/position_modify_status")
|
||||
@ApiOperation("岗位信息表开启或者关闭招聘")
|
||||
public AlitaResult<Void> positionModifyStatus(@RequestParam("ids") Set<Long> ids, @RequestParam("status") String status) {
|
||||
positionAuditService.positionModifyStatus(ids, status);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制
|
||||
*/
|
||||
@GetMapping("/position_copy/{id}")
|
||||
public AlitaResult<Long> positionCopy(@PathVariable("id") Long id){
|
||||
return AlitaResult.success(positionAuditService.positionCopy(id));
|
||||
}
|
||||
|
||||
@GetMapping("list")
|
||||
@ApiOperation("岗位审核表-列表查询")
|
||||
public AlitaResult<List<PositionAuditDTO>> list(PositionAuditQueryDTO queryDTO) {
|
||||
return AlitaResult.success(positionAuditService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("岗位审核表-分页查询")
|
||||
public AlitaResult<Page<PositionAuditDTO>> page(PositionAuditPageQueryDTO queryDTO) {
|
||||
positionAuditService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ApiOperation("岗位审核信息表-查询单个")
|
||||
public AlitaResult<PositionAuditDTO> findById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(positionAuditService.findById(id));
|
||||
}
|
||||
|
||||
@PostMapping("")
|
||||
@ApiOperation("审核")
|
||||
public AlitaResult<Void> audit(@RequestBody @Validated PositionAuditReqDTO reqDTO) {
|
||||
positionAuditService.audit(reqDTO);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.newyetai.recruit.position.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
import com.newyetai.recruit.position.dto.*;
|
||||
import com.newyetai.recruit.position.service.PositionService;
|
||||
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 岗位信息表;岗位信息表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-11
|
||||
*/
|
||||
@Api(tags = "岗位信息表;岗位信息表")
|
||||
@RestController
|
||||
@RequestMapping("/position")
|
||||
public class PositionController {
|
||||
|
||||
@Autowired
|
||||
private PositionService positionService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("岗位信息表;岗位信息表-创建")
|
||||
public AlitaResult<PositionDTO> create(@RequestBody @Validated PositionOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(positionService.create(operatorDTO));
|
||||
}
|
||||
|
||||
@PutMapping("/modify")
|
||||
@ApiOperation("岗位信息表;岗位信息表-修改")
|
||||
public AlitaResult<PositionDTO> modify(@RequestBody @Validated PositionOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(positionService.modify(operatorDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
@ApiOperation("岗位信息表;岗位信息表-删除")
|
||||
public AlitaResult<PositionDTO> delete(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(positionService.delete(id));
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ApiOperation("岗位信息表;岗位信息表-查询单个")
|
||||
public AlitaResult<PositionDTO> findById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(positionService.findById(id));
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("岗位信息表;岗位信息表-列表查询")
|
||||
public AlitaResult<List<PositionDTO>> list(PositionPageQueryDTO queryDTO) {
|
||||
return AlitaResult.success(positionService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("岗位信息表;岗位信息表-分页查询")
|
||||
public AlitaResult<Page<PositionDTO>> page(PositionPageQueryDTO queryDTO) {
|
||||
positionService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("/export")
|
||||
@ApiOperation("岗位信息表;岗位信息表-导出")
|
||||
public void export(PositionPageQueryDTO queryDTO) {
|
||||
positionService.export(queryDTO);
|
||||
}
|
||||
|
||||
@PutMapping("/modify_status")
|
||||
@ApiOperation("岗位信息表开启或者关闭招聘")
|
||||
public AlitaResult<Void> modifyStatus(@RequestBody PositionOperatorDTO dto){
|
||||
positionService.modifyStatus(dto);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/template")
|
||||
@ApiOperation("岗位 - 模板下载")
|
||||
public void template() {
|
||||
positionService.template();
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制
|
||||
*/
|
||||
@GetMapping("/copy/{id}")
|
||||
public AlitaResult<Long> copy(@PathVariable("id") Long id){
|
||||
return AlitaResult.success(positionService.copy(id));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,194 @@
|
||||
package com.newyetai.recruit.position.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.common.exception.BusinessException;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
import com.newyetai.recruit.position.dto.*;
|
||||
import com.newyetai.recruit.position.service.PositionRegistrationService;
|
||||
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 岗位报名信息表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-15
|
||||
*/
|
||||
@Api(tags = "岗位报名信息表")
|
||||
@RestController
|
||||
@RequestMapping("/position_registration")
|
||||
@Slf4j
|
||||
public class PositionRegistrationController {
|
||||
|
||||
@Autowired
|
||||
private PositionRegistrationService positionRegistrationService;
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("岗位报名信息表-创建")
|
||||
public AlitaResult<String> create(@RequestBody @Validated PositionRegistrationOperatorDTO operatorDTO) {
|
||||
if (CollectionUtils.isEmpty(operatorDTO.getUserIds())) {
|
||||
throw new BusinessException("缺失参数");
|
||||
}
|
||||
int successrows = operatorDTO.getUserIds().size();
|
||||
for (Long userId : operatorDTO.getUserIds()) {
|
||||
try {
|
||||
operatorDTO.setUserId(userId);
|
||||
positionRegistrationService.create(operatorDTO);
|
||||
} catch (Exception e) {
|
||||
successrows = successrows - 1;
|
||||
log.error(String.format("用户id:%s 操作加入招聘失败,失败原因:%s",userId,e.getMessage()));
|
||||
}
|
||||
}
|
||||
return AlitaResult.success(String.format("成功数: %s条,失败数: %s条", successrows, operatorDTO.getUserIds().size() - successrows));
|
||||
}
|
||||
|
||||
@PutMapping("/modify")
|
||||
@ApiOperation("岗位报名信息表-修改")
|
||||
public AlitaResult<PositionRegistrationDTO> modify(@RequestBody PositionRegistrationOperatorDTO operatorDTO) {
|
||||
return AlitaResult.success(positionRegistrationService.modify(operatorDTO));
|
||||
}
|
||||
|
||||
@DeleteMapping("/{id}")
|
||||
@ApiOperation("岗位报名信息表-删除")
|
||||
public AlitaResult<PositionRegistrationDTO> delete(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(positionRegistrationService.delete(id));
|
||||
}
|
||||
|
||||
@GetMapping("/{id}")
|
||||
@ApiOperation("岗位报名信息表-查询单个")
|
||||
public AlitaResult<PositionRegistrationDTO> findById(@PathVariable("id") Long id, @RequestParam("childrenOrgAll") Boolean childrenOrgAll) {
|
||||
return AlitaResult.success(positionRegistrationService.findByIdAndChildrenOrgAll(id,childrenOrgAll));
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@ApiOperation("岗位报名信息表-列表查询")
|
||||
public AlitaResult<List<PositionRegistrationDTO>> list(PositionRegistrationPageQueryDTO queryDTO) {
|
||||
return AlitaResult.success(positionRegistrationService.list(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@ApiOperation("岗位报名信息表-分页查询")
|
||||
public AlitaResult<Page<PositionRegistrationDTO>> page(PositionRegistrationPageQueryDTO queryDTO) {
|
||||
positionRegistrationService.page(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 用户端报名岗位
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
@PostMapping("/user_create")
|
||||
public AlitaResult<Void> userCreate(@RequestBody @Validated UserPositionRegistrationDTO dto) {
|
||||
positionRegistrationService.userCreate(dto);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/invite")
|
||||
@ApiOperation("岗位报名信息表-邀约面试")
|
||||
public AlitaResult<String> invite(@RequestBody PositionRegistrationOperatorDTO operatorDTO) {
|
||||
if (CollectionUtils.isEmpty(operatorDTO.getIds())) {
|
||||
throw new BusinessException("缺失参数");
|
||||
}
|
||||
int successrows = operatorDTO.getIds().size();
|
||||
for (Long id : operatorDTO.getIds()) {
|
||||
try {
|
||||
operatorDTO.setId(id);
|
||||
positionRegistrationService.invite(operatorDTO);
|
||||
} catch (Exception e) {
|
||||
successrows = successrows - 1;
|
||||
log.error(String.format("邀约面试id:%s 操作邀约面试,失败原因:%s",id,e.getMessage()));
|
||||
}
|
||||
}
|
||||
return AlitaResult.success(String.format("成功数: %s条,失败数: %s条", successrows, operatorDTO.getIds().size() - successrows));
|
||||
}
|
||||
|
||||
@PostMapping("/termination")
|
||||
@ApiOperation("岗位报名信息表-结束招聘")
|
||||
public AlitaResult<String> termination(@RequestBody PositionRegistrationOperatorDTO operatorDTO) {
|
||||
if (CollectionUtils.isEmpty(operatorDTO.getIds())) {
|
||||
throw new BusinessException("缺失参数");
|
||||
}
|
||||
int successrows = operatorDTO.getIds().size();
|
||||
for (Long id : operatorDTO.getIds()) {
|
||||
try {
|
||||
operatorDTO.setId(id);
|
||||
positionRegistrationService.termination(operatorDTO);
|
||||
} catch (Exception e) {
|
||||
successrows = successrows - 1;
|
||||
log.error(String.format("结束招聘id:%s 操作结束招聘,失败原因:%s",id,e.getMessage()));
|
||||
}
|
||||
}
|
||||
return AlitaResult.success(String.format("成功数: %s条,失败数: %s条", successrows, operatorDTO.getIds().size() - successrows));
|
||||
}
|
||||
|
||||
@PostMapping("/fulfillInterview")
|
||||
@ApiOperation("岗位报名信息表-完成面试")
|
||||
public AlitaResult<String> fulfillInterview(@RequestBody PositionRegistrationOperatorDTO operatorDTO) {
|
||||
if (CollectionUtils.isEmpty(operatorDTO.getIds())) {
|
||||
throw new BusinessException("缺失参数");
|
||||
}
|
||||
int successrows = operatorDTO.getIds().size();
|
||||
for (Long id : operatorDTO.getIds()) {
|
||||
try {
|
||||
operatorDTO.setId(id);
|
||||
positionRegistrationService.fulfillInterview(operatorDTO);
|
||||
} catch (Exception e) {
|
||||
successrows = successrows - 1;
|
||||
log.error(String.format("完成面试id:%s 操作完成面试,失败原因:%s",id,e.getMessage()));
|
||||
}
|
||||
}
|
||||
return AlitaResult.success(String.format("成功数: %s条,失败数: %s条", successrows, operatorDTO.getIds().size() - successrows));
|
||||
}
|
||||
|
||||
@PostMapping("/onTheJob")
|
||||
@ApiOperation("岗位报名信息表-入职")
|
||||
public AlitaResult<Void> onTheJob(@RequestBody @Validated OnTheJobDTO dto) {
|
||||
positionRegistrationService.onTheJob(dto);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@PostMapping("/resigned")
|
||||
@ApiOperation("岗位报名信息表-离职")
|
||||
public AlitaResult<Void> resigned(@RequestBody @Validated ResignedDTO dto) {
|
||||
positionRegistrationService.resigned(dto);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@GetMapping("/export")
|
||||
@ApiOperation("岗位报名信息表-导出")
|
||||
public void export(PositionRegistrationPageQueryDTO queryDTO) {
|
||||
positionRegistrationService.export(queryDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/userPage")
|
||||
@ApiOperation("岗位报名信息表-用户端分页查询")
|
||||
public AlitaResult<Page<UserPositionRegistrationResDTO>> userPage(UserPositionRegistrationPageQueryDTO queryDTO) {
|
||||
positionRegistrationService.userPage(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("/user_cancel")
|
||||
@ApiOperation("岗位报名信息表-用户端取消报名")
|
||||
public AlitaResult<Void> cancel(@RequestParam("positionId") Long positionId) {
|
||||
positionRegistrationService.cancel(positionId);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
|
||||
@ApiOperation("查看")
|
||||
@PutMapping("/show")
|
||||
public AlitaResult<Void> show(@RequestParam("id") Long id){
|
||||
positionRegistrationService.show(id);
|
||||
return AlitaResult.success();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.newyetai.recruit.position.controller;
|
||||
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.recruit.position.dto.PositionTypeDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionTypeQueryDTO;
|
||||
import com.newyetai.recruit.position.service.PositionTypeService;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-岗位信息表 前端控制器
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@Api(tags = "岗位类型信息")
|
||||
@RestController
|
||||
@RequestMapping("/anon/hr/position/type")
|
||||
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
||||
public class PositionTypeController {
|
||||
|
||||
private final PositionTypeService positionTypeService;
|
||||
|
||||
@GetMapping("/tree")
|
||||
@ApiOperation("岗位类型树形列表")
|
||||
public AlitaResult<List<PositionTypeDTO>> positionList(PositionTypeQueryDTO queryDTO) {
|
||||
return AlitaResult.success(positionTypeService.query(queryDTO));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.newyetai.recruit.position.controller;
|
||||
|
||||
import com.newyetai.common.AlitaResult;
|
||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
||||
import com.newyetai.recruit.position.service.PositionService;
|
||||
import com.newyetai.security.util.MockUtils;
|
||||
import com.newyetai.tkmybatis.pojo.Page;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
|
||||
/**
|
||||
* @description: 用户端岗位信息查询
|
||||
* @author: guixinman
|
||||
* @create: 2024-04-18 15:48
|
||||
**/
|
||||
@Api(tags = "岗位信息表;岗位信息表")
|
||||
@RestController
|
||||
public class UserPositionController {
|
||||
|
||||
@Autowired
|
||||
private PositionService positionService;
|
||||
|
||||
|
||||
@GetMapping("/anon/user/position/page")
|
||||
@ApiOperation("岗位信息表;岗位信息表-分页查询")
|
||||
public AlitaResult<Page<PositionDTO>> page(PositionPageQueryDTO queryDTO) {
|
||||
positionService.userPage(queryDTO);
|
||||
return AlitaResult.success(queryDTO.getPageResult());
|
||||
}
|
||||
|
||||
@GetMapping("/anon/tencent_map/user/position/page")
|
||||
@ApiOperation("岗位信息腾讯地图-分页查询")
|
||||
public AlitaResult<List<PositionDTO>> tencentMapUserPage(PositionPageQueryDTO queryDTO) {
|
||||
return AlitaResult.success(positionService.tencentMapUserPage(queryDTO));
|
||||
}
|
||||
|
||||
@GetMapping("/anon/user/position/{id}")
|
||||
@ApiOperation("岗位信息表;岗位信息表-查询单个")
|
||||
public AlitaResult<PositionDTO> userFindById(@PathVariable("id") Long id) {
|
||||
return AlitaResult.success(positionService.userFindById(id));
|
||||
}
|
||||
|
||||
@GetMapping("/user/position/personPostMatching")
|
||||
@ApiOperation("人岗匹配")
|
||||
public AlitaResult<List<PositionDTO>> personPostMatching(@RequestParam("id") Long id) {
|
||||
return AlitaResult.success(positionService.personPostMatching(id));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.newyetai.recruit.position.convert;
|
||||
|
||||
import com.newyetai.recruit.position.entity.ImportDetailPosition;
|
||||
import com.newyetai.recruit.position.dto.ImportDetailPositionDTO;
|
||||
import com.newyetai.recruit.position.dto.ImportDetailPositionOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 岗位导入
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-12
|
||||
*/
|
||||
@Mapper
|
||||
public interface ImportDetailPositionConvert {
|
||||
ImportDetailPositionConvert INSTANCE = Mappers.getMapper(ImportDetailPositionConvert.class);
|
||||
|
||||
ImportDetailPosition convert(ImportDetailPositionDTO dto);
|
||||
|
||||
ImportDetailPositionDTO convert(ImportDetailPosition entity);
|
||||
|
||||
ImportDetailPosition convert(ImportDetailPositionOperatorDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.newyetai.recruit.position.convert;
|
||||
|
||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionNewDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionOperatorDTO;
|
||||
import com.newyetai.recruit.position.entity.PositionAudit;
|
||||
import com.newyetai.recruit.position.dto.PositionAuditDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionAuditOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 岗位审核表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-07-05
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionAuditConvert {
|
||||
PositionAuditConvert INSTANCE = Mappers.getMapper(PositionAuditConvert.class);
|
||||
|
||||
PositionAudit convert(PositionAuditDTO dto);
|
||||
|
||||
PositionAuditDTO convert(PositionAudit entity);
|
||||
|
||||
PositionAudit convert(PositionAuditOperatorDTO dto);
|
||||
|
||||
PositionNewDTO convert(PositionOperatorDTO dto);
|
||||
|
||||
PositionNewDTO convert(PositionDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.newyetai.recruit.position.convert;
|
||||
|
||||
import com.newyetai.recruit.position.entity.Position;
|
||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
/**
|
||||
* 岗位信息表;岗位信息表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-11
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionConvert {
|
||||
PositionConvert INSTANCE = Mappers.getMapper(PositionConvert.class);
|
||||
|
||||
Position convert(PositionDTO dto);
|
||||
|
||||
PositionDTO convert(Position entity);
|
||||
|
||||
Position convert(PositionOperatorDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.newyetai.recruit.position.convert;
|
||||
|
||||
import com.newyetai.recruit.position.entity.PositionRegistration;
|
||||
import com.newyetai.recruit.position.dto.PositionRegistrationDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionRegistrationOperatorDTO;
|
||||
|
||||
import org.mapstruct.Mapper;
|
||||
import org.mapstruct.factory.Mappers;
|
||||
|
||||
|
||||
/**
|
||||
* 岗位报名信息表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-15
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionRegistrationConvert {
|
||||
PositionRegistrationConvert INSTANCE = Mappers.getMapper(PositionRegistrationConvert.class);
|
||||
|
||||
PositionRegistration convert(PositionRegistrationDTO dto);
|
||||
|
||||
PositionRegistrationDTO convert(PositionRegistration entity);
|
||||
|
||||
PositionRegistration convert(PositionRegistrationOperatorDTO dto);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.newyetai.recruit.position.dao;
|
||||
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.position.entity.ImportDetailPosition;
|
||||
import com.newyetai.recruit.position.dto.ImportDetailPositionDTO;
|
||||
import com.newyetai.recruit.position.dto.ImportDetailPositionQueryDTO;
|
||||
import com.newyetai.recruit.position.dto.ImportDetailPositionPageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 岗位导入
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-12
|
||||
*/
|
||||
@Mapper
|
||||
public interface ImportDetailPositionMapper extends MyMapper<ImportDetailPosition> {
|
||||
|
||||
List<ImportDetailPositionDTO> page(@Param("param") ImportDetailPositionPageQueryDTO queryDTO);
|
||||
|
||||
List<ImportDetailPositionDTO> list(@Param("param") ImportDetailPositionQueryDTO queryDTO);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
package com.newyetai.recruit.position.dao;
|
||||
|
||||
|
||||
import com.newyetai.recruit.position.entity.PositionAddress;
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
|
||||
|
||||
/**
|
||||
* 位置地址映射器
|
||||
*
|
||||
* @author Carlye
|
||||
* @date 2022/03/29
|
||||
*/
|
||||
public interface PositionAddressMapper extends MyMapper<PositionAddress> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
package com.newyetai.recruit.position.dao;
|
||||
|
||||
import com.newyetai.recruit.position.dto.PositionAuditReqDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionNewDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionNewPageQueryDTO;
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.position.entity.PositionAudit;
|
||||
import com.newyetai.recruit.position.dto.PositionAuditDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionAuditQueryDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionAuditPageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 岗位审核表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-07-05
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionAuditMapper extends MyMapper<PositionAudit> {
|
||||
|
||||
List<PositionAuditDTO> page(@Param("param") PositionAuditPageQueryDTO queryDTO);
|
||||
|
||||
List<PositionAuditDTO> list(@Param("param") PositionAuditQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* @description: 岗位分页查询
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
List<PositionNewDTO> positionPage(@Param("param") PositionNewPageQueryDTO queryDTO);
|
||||
|
||||
int modifyById(@Param("param") PositionAudit positionAudit);
|
||||
|
||||
int audit(@Param("param") PositionAuditReqDTO reqDTO);
|
||||
|
||||
/**
|
||||
* @description: 根据岗位id获取审核表id
|
||||
* @return:
|
||||
* @author: guixinman
|
||||
* @param:
|
||||
*/
|
||||
Long getIdByPositionId(@Param("positionId") Long positionId);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.newyetai.recruit.position.dao;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.newyetai.recruit.position.dto.PositionFileDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionFilePageQueryDTO;
|
||||
import com.newyetai.recruit.position.entity.PositionFile;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户岗位访问记录表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author Carlye
|
||||
* @since 2021-01-21
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionFileMapper extends BaseMapper<PositionFile> {
|
||||
|
||||
|
||||
List<PositionFileDTO> filePage(PositionFilePageQueryDTO queryDTO);
|
||||
|
||||
void setDefault(@Param("positionId") Long positionId, @Param("id") Long id);
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.newyetai.recruit.position.dao;
|
||||
|
||||
import com.newyetai.recruit.position.dto.PersonPostMatchingQueryDTO;
|
||||
import com.newyetai.recruit.statistics.dto.StatisticsBaseDTO;
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.position.entity.Position;
|
||||
import com.newyetai.recruit.position.dto.PositionDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionPageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 岗位信息表;岗位信息表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-11
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionMapper extends MyMapper<Position> {
|
||||
|
||||
List<PositionDTO> page(@Param("param") PositionPageQueryDTO queryDTO);
|
||||
|
||||
|
||||
List<PositionDTO> userPage(@Param("param") PositionPageQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 岗位类型分组求数量
|
||||
*/
|
||||
List<StatisticsBaseDTO> positionTypeGroupMap(@Param("recruitPositionType") String recruitPositionType);
|
||||
|
||||
List<PositionDTO> personPostMatching(@Param("param") PersonPostMatchingQueryDTO queryDTO);
|
||||
|
||||
/**
|
||||
* 岗位过期
|
||||
*/
|
||||
void positionExpiry();
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.newyetai.recruit.position.dao;
|
||||
|
||||
import com.newyetai.recruit.position.dto.UserPositionRegistrationPageQueryDTO;
|
||||
import com.newyetai.recruit.position.dto.UserPositionRegistrationResDTO;
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
import com.newyetai.recruit.position.entity.PositionRegistration;
|
||||
import com.newyetai.recruit.position.dto.PositionRegistrationDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionRegistrationPageQueryDTO;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 岗位报名信息表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-15
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionRegistrationMapper extends MyMapper<PositionRegistration> {
|
||||
|
||||
List<PositionRegistrationDTO> page(@Param("param") PositionRegistrationPageQueryDTO queryDTO);
|
||||
|
||||
long updateStatus(@Param("param") PositionRegistration positionRegistration, @Param("oldStatus") String oldStatus);
|
||||
|
||||
List<UserPositionRegistrationResDTO> userPage(@Param("param") UserPositionRegistrationPageQueryDTO queryDTO);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.newyetai.recruit.position.dao;
|
||||
|
||||
|
||||
import com.newyetai.recruit.position.dto.PositionTypeDTO;
|
||||
import com.newyetai.recruit.position.dto.PositionTypeQueryDTO;
|
||||
import com.newyetai.recruit.position.entity.PositionType;
|
||||
import com.newyetai.tkmybatis.mybatis.MyMapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 用户岗位访问记录表 Mapper 接口
|
||||
* </p>
|
||||
*
|
||||
* @author Carlye
|
||||
* @since 2021-01-21
|
||||
*/
|
||||
@Mapper
|
||||
public interface PositionTypeMapper extends MyMapper<PositionType> {
|
||||
|
||||
List<PositionTypeDTO> queryByDto(PositionTypeQueryDTO queryDTO);
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.newyetai.component.commonimport.dto.ImportDetailSuperDTO;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* 岗位导入
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-12
|
||||
*/
|
||||
@ApiModel("岗位导入")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ImportDetailPositionDTO extends ImportDetailSuperDTO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("导入任务ID")
|
||||
private Long mainId;
|
||||
|
||||
@ApiModelProperty("机构ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("模板全量数据")
|
||||
private String dataJson;
|
||||
|
||||
@ApiModelProperty("用工企业ID ;hr_company")
|
||||
private Long companyId;
|
||||
|
||||
private String companyName;
|
||||
|
||||
@ApiModelProperty("岗位名称")
|
||||
private String positionName;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
/**
|
||||
* 岗位性质 数据字典
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
@ApiModelProperty("岗位类型")
|
||||
private String positionTypeName;
|
||||
|
||||
@ApiModelProperty("岗位标签")
|
||||
private String positionTag;
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private String sexRequire;
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private String educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("明细状态")
|
||||
private Integer detailStatus;
|
||||
|
||||
@ApiModelProperty("失败原因")
|
||||
private String failReason;
|
||||
|
||||
@ApiModelProperty("外部生成明细id")
|
||||
private Long extraDetailId;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 年龄上限
|
||||
*/
|
||||
private Integer ageUp;
|
||||
|
||||
/**
|
||||
* 年龄下限
|
||||
*/
|
||||
private Integer ageLow;
|
||||
|
||||
/**
|
||||
* 薪资上限
|
||||
*/
|
||||
private BigDecimal salaryUp;
|
||||
|
||||
/**
|
||||
* 薪资下限
|
||||
*/
|
||||
private BigDecimal salaryLow;
|
||||
|
||||
/**
|
||||
* 薪资类型
|
||||
*/
|
||||
private String salaryType;
|
||||
|
||||
/**
|
||||
* 结束日期
|
||||
*/
|
||||
private String endTime;
|
||||
|
||||
public void appendFailMsg(String msg) {
|
||||
if (StrUtil.isEmpty(msg)) {
|
||||
return;
|
||||
}
|
||||
if (StrUtil.isEmpty(getFailReason())) {
|
||||
setFailReason(msg);
|
||||
} else {
|
||||
setFailReason(String.join(",", getFailReason(), msg));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.newyetai.component.commonimport.dto.ImportExecuteSuperDTO;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 确定导入DTO
|
||||
* @author: guixinman
|
||||
* @create: 2024-04-12 10:25
|
||||
**/
|
||||
@Data
|
||||
public class ImportDetailPositionExecuteDTO extends ImportExecuteSuperDTO {
|
||||
}
|
||||
@@ -0,0 +1,94 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: guixinman
|
||||
* @create: 2024-06-12 13:57
|
||||
**/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ImportDetailPositionExportDTO implements Serializable {
|
||||
|
||||
@ExcelProperty("用工企业")
|
||||
private String companyName;
|
||||
|
||||
@ExcelProperty("岗位名称")
|
||||
private String positionName;
|
||||
|
||||
@ExcelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ExcelProperty("招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ExcelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
/**
|
||||
* 岗位性质 数据字典
|
||||
*/
|
||||
@ExcelProperty("岗位性质")
|
||||
private String recruitPositionType;
|
||||
|
||||
@ExcelProperty("岗位类型")
|
||||
private String positionTypeName;
|
||||
|
||||
@ExcelProperty("岗位标签")
|
||||
private String positionTag;
|
||||
|
||||
@ExcelProperty("薪资下限")
|
||||
private BigDecimal salaryLow;
|
||||
|
||||
@ExcelProperty("薪资上限")
|
||||
private BigDecimal salaryUp;
|
||||
|
||||
@ExcelProperty("薪资类型")
|
||||
private String salaryType;
|
||||
|
||||
@ExcelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ExcelProperty("性别")
|
||||
private String sexRequire;
|
||||
|
||||
@ExcelProperty("年龄(下限)")
|
||||
private Integer ageLow;
|
||||
|
||||
@ExcelProperty("年龄(上限)")
|
||||
private Integer ageUp;
|
||||
|
||||
@ExcelProperty("学历")
|
||||
private String educationRequire;
|
||||
|
||||
@ExcelProperty("经验")
|
||||
private String experienceRequire;
|
||||
|
||||
@ExcelProperty("证件")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ExcelProperty("其他")
|
||||
private String otherRequire;
|
||||
|
||||
@ExcelProperty("工作")
|
||||
private String jobContent;
|
||||
|
||||
@ExcelProperty("有效期截止时间")
|
||||
private String endTime;
|
||||
|
||||
@ExcelProperty("失败原因")
|
||||
private String failReason;
|
||||
|
||||
@ExcelProperty("备注")
|
||||
private String remark;
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.newyetai.component.commonimport.service.IImportDetailForm;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 岗位导入dto
|
||||
* @author: guixinman
|
||||
* @create: 2024-04-12 10:26
|
||||
**/
|
||||
@Data
|
||||
public class ImportDetailPositionListenerDTO implements IImportDetailForm {
|
||||
|
||||
@ApiModelProperty("用工企业")
|
||||
private String companyName;
|
||||
|
||||
@ApiModelProperty("岗位名称")
|
||||
private String positionName;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
/**
|
||||
* 岗位性质 数据字典
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
@ApiModelProperty("岗位类型")
|
||||
private String positionTypeName;
|
||||
|
||||
@ApiModelProperty("岗位标签")
|
||||
private String positionTag;
|
||||
|
||||
@ApiModelProperty("薪资下限")
|
||||
private BigDecimal salaryLow;
|
||||
|
||||
@ApiModelProperty("薪资上限")
|
||||
private BigDecimal salaryUp;
|
||||
|
||||
@ApiModelProperty("薪资类型")
|
||||
private String salaryType;
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private String sexRequire;
|
||||
|
||||
@ApiModelProperty("年龄(下限)")
|
||||
private Integer ageLow;
|
||||
|
||||
@ApiModelProperty("年龄(上限)")
|
||||
private Integer ageUp;
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private String educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
/**
|
||||
* 结束日期
|
||||
*/
|
||||
private String endTime;
|
||||
}
|
||||
@@ -0,0 +1,121 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 岗位导入
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-12
|
||||
*/
|
||||
@ApiModel("岗位导入")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ImportDetailPositionOperatorDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("导入任务ID")
|
||||
private Long mainId;
|
||||
|
||||
@ApiModelProperty("机构ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("模板全量数据")
|
||||
private String dataJson;
|
||||
|
||||
@ApiModelProperty("公司ID ;hr_company")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("岗位名称")
|
||||
private String positionName;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
/**
|
||||
* 岗位性质 数据字典
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private Integer sexRequire;
|
||||
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private Integer educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("明细状态")
|
||||
private Integer detailStatus;
|
||||
|
||||
@ApiModelProperty("失败原因")
|
||||
private String failReason;
|
||||
|
||||
@ApiModelProperty("外部生成明细id")
|
||||
private Long extraDetailId;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 年龄上限
|
||||
*/
|
||||
private Integer ageUp;
|
||||
|
||||
/**
|
||||
* 年龄下限
|
||||
*/
|
||||
private Integer ageLow;
|
||||
|
||||
/**
|
||||
* 薪资上限
|
||||
*/
|
||||
private BigDecimal salaryUp;
|
||||
|
||||
/**
|
||||
* 薪资下限
|
||||
*/
|
||||
private BigDecimal salaryLow;
|
||||
|
||||
/**
|
||||
* 薪资类型
|
||||
*/
|
||||
private String salaryType;
|
||||
|
||||
private Date endTime;
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 岗位导入
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-12
|
||||
*/
|
||||
|
||||
@ApiModel("岗位导入")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class ImportDetailPositionPageQueryDTO extends PageQueryDTO<ImportDetailPositionDTO> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("导入任务ID")
|
||||
private Long mainId;
|
||||
|
||||
@ApiModelProperty("机构ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("模板全量数据")
|
||||
private String dataJson;
|
||||
|
||||
@ApiModelProperty("公司ID ;hr_company")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("岗位名称 (模糊匹配)")
|
||||
private String positionNameLike;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
/**
|
||||
* 岗位性质 数据字典
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private Integer sexRequire;
|
||||
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private Integer educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("明细状态")
|
||||
private Integer detailStatus;
|
||||
|
||||
@ApiModelProperty("失败原因")
|
||||
private String failReason;
|
||||
|
||||
@ApiModelProperty("外部生成明细id")
|
||||
private Long extraDetailId;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 岗位导入
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-04-12
|
||||
*/
|
||||
@ApiModel("岗位导入")
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ImportDetailPositionQueryDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
@ApiModelProperty("导入任务ID")
|
||||
private Long mainId;
|
||||
|
||||
@ApiModelProperty("机构ID")
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("模板全量数据")
|
||||
private String dataJson;
|
||||
|
||||
@ApiModelProperty("公司ID ;hr_company")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("岗位名称 (模糊匹配)")
|
||||
private String positionNameLike;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
/**
|
||||
* 岗位性质 数据字典
|
||||
*/
|
||||
private String recruitPositionType;
|
||||
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private Integer sexRequire;
|
||||
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private Integer educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("明细状态")
|
||||
private Integer detailStatus;
|
||||
|
||||
@ApiModelProperty("失败原因")
|
||||
private String failReason;
|
||||
|
||||
@ApiModelProperty("外部生成明细id")
|
||||
private Long extraDetailId;
|
||||
|
||||
@ApiModelProperty("备注")
|
||||
private String remark;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description: 入职DTO
|
||||
* @author: guixinman
|
||||
* @create: 2024-04-16 14:47
|
||||
**/
|
||||
@Data
|
||||
public class OnTheJobDTO implements Serializable {
|
||||
|
||||
|
||||
@NotNull(message = "入职时间不能为空")
|
||||
@ApiModelProperty("入职时间")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd", timezone = "GMT+8")
|
||||
private Date inductionTime;
|
||||
|
||||
@NotNull(message = "明细数据不能为空")
|
||||
private List<@Valid OnTheJobDetailDTO> detailDTOS;
|
||||
|
||||
@Data
|
||||
public static class OnTheJobDetailDTO {
|
||||
|
||||
@NotNull(message = "请选择数据")
|
||||
private Long id;
|
||||
|
||||
@NotNull(message = "入职薪水不能为空")
|
||||
@ApiModelProperty("入职薪水")
|
||||
private BigDecimal salary;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: guixinman
|
||||
* @create: 2024-09-11 16:51
|
||||
**/
|
||||
@ApiModel("人岗匹配")
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PersonPostMatchingQueryDTO extends PageQueryDTO<PositionDTO> {
|
||||
|
||||
/**
|
||||
* 性别
|
||||
*/
|
||||
private String sexRequire;
|
||||
|
||||
/**
|
||||
* 年龄
|
||||
*/
|
||||
private Integer age;
|
||||
|
||||
/**
|
||||
* 学历
|
||||
*/
|
||||
private String educationRequire;
|
||||
|
||||
/**
|
||||
* 薪水
|
||||
*/
|
||||
private BigDecimal salary;
|
||||
|
||||
/**
|
||||
* 岗位类型
|
||||
*/
|
||||
private String positionType;
|
||||
private String positionNameLike;
|
||||
|
||||
/**
|
||||
* 工作地
|
||||
*/
|
||||
private String detailAddressLike;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-岗位地址信息表
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel("招聘系统岗位地址信息DTO")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PositionAddressDTO extends BaseDTO {
|
||||
|
||||
private static final long serialVersionUID = -350362178226190054L;
|
||||
|
||||
@ApiModelProperty("岗位ID")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("区域编码")
|
||||
private String districtCode;
|
||||
|
||||
@ApiModelProperty("区域名称")
|
||||
private String districtName;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
private String detailAddress;
|
||||
|
||||
@ApiModelProperty("经度")
|
||||
private BigDecimal longitude;
|
||||
|
||||
@ApiModelProperty("纬度")
|
||||
private BigDecimal latitude;
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-岗位地址信息表
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ApiModel("招聘系统岗位地址信息 - 创建DTO")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PositionAddressOperatorDTO extends BaseDTO {
|
||||
|
||||
private static final long serialVersionUID = -350362178226190054L;
|
||||
|
||||
@ApiModelProperty("企业ID")
|
||||
@NotNull(message = "企业ID不能为空")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("区域编码")
|
||||
// @NotEmpty(message = "区域编码不能为空")
|
||||
private String districtCode;
|
||||
|
||||
@ApiModelProperty("区域名称")
|
||||
// @NotEmpty(message = "区域名称不能为空")
|
||||
private String districtName;
|
||||
|
||||
@ApiModelProperty("详细地址")
|
||||
@NotEmpty(message = "详细地址不能为空")
|
||||
private String detailAddress;
|
||||
|
||||
@ApiModelProperty("经度")
|
||||
// @NotEmpty(message = "经度不能为空")
|
||||
private BigDecimal longitude;
|
||||
|
||||
@ApiModelProperty("纬度")
|
||||
// @NotEmpty(message = "纬度不能为空")
|
||||
private BigDecimal latitude;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Set;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 招聘系统-岗位地址信息表
|
||||
* </p>
|
||||
*
|
||||
* @author chenyun
|
||||
* @since 2021-01-08
|
||||
*/
|
||||
@ApiModel("招聘系统岗位地址信息 - 查询DTO")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PositionAddressQueryDTO implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -6376035694183055706L;
|
||||
|
||||
@ApiModelProperty("岗位ID")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("ID集合")
|
||||
private Set<Long> ids;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,181 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
import com.newyetai.component.dict.util.DictUtils;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 岗位审核表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-07-05
|
||||
*/
|
||||
@ApiModel("岗位审核表")
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class PositionAuditDTO extends BaseDTO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long positionId;
|
||||
|
||||
private Long orgId;
|
||||
|
||||
private String orgName;
|
||||
|
||||
@ApiModelProperty("hr_company主键")
|
||||
private Long companyId;
|
||||
|
||||
private String companyName;
|
||||
|
||||
@ApiModelProperty("岗位名称")
|
||||
private String positionName;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位类型")
|
||||
private String positionType;
|
||||
|
||||
private String positionTypeName;
|
||||
|
||||
@ApiModelProperty("工作性质 1:短工 2:全职")
|
||||
private String jobCategory;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
@ApiModelProperty("招聘专员")
|
||||
private Long recruitUserId;
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private String sexRequire;
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private String educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("岗位标签")
|
||||
private String positionTag;
|
||||
|
||||
private Long addressId;
|
||||
|
||||
@ApiModelProperty("招聘岗位类型数据字典")
|
||||
private String recruitPositionType;
|
||||
|
||||
@ApiModelProperty("审核状态 1:待审核 2.审核成功 3.审核失败")
|
||||
private String auditStatus;
|
||||
|
||||
@ApiModelProperty("审核失败原因")
|
||||
private String auditFailMsg;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Integer version;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String detailAddress;
|
||||
|
||||
private String fileJson;
|
||||
|
||||
|
||||
/**
|
||||
* 年龄上限
|
||||
*/
|
||||
private Integer ageUp;
|
||||
|
||||
/**
|
||||
* 年龄下限
|
||||
*/
|
||||
private Integer ageLow;
|
||||
|
||||
/**
|
||||
* 薪资上限
|
||||
*/
|
||||
private BigDecimal salaryUp;
|
||||
|
||||
/**
|
||||
* 薪资下限
|
||||
*/
|
||||
private BigDecimal salaryLow;
|
||||
|
||||
/**
|
||||
* 薪资类型
|
||||
*/
|
||||
private String salaryType;
|
||||
|
||||
private String salaryStr;
|
||||
|
||||
private String ageStr;
|
||||
|
||||
|
||||
/**
|
||||
* 结束日期
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date endTime;
|
||||
|
||||
public String getSalaryStr() {
|
||||
String salary = "";
|
||||
if (Objects.nonNull(this.getSalaryUp()) && Objects.nonNull(this.getSalaryLow())) {
|
||||
salary = String.format("%s~%s元/%s", this.getSalaryLow(), this.getSalaryUp(), DictUtils.getCodeNameMap("salary_type").get(String.valueOf(this.getSalaryType())));
|
||||
if (this.getSalaryLow().compareTo(this.getSalaryUp()) == 0) {
|
||||
salary = String.format("%s元/%s", this.getSalaryUp(), DictUtils.getCodeNameMap("salary_type").get(String.valueOf(this.getSalaryType())));
|
||||
}
|
||||
} else if (Objects.nonNull(this.getSalaryLow()) && Objects.isNull(this.getSalaryUp())) {
|
||||
salary = String.format("%s元/%s", this.getSalaryLow(), DictUtils.getCodeNameMap("salary_type").get(String.valueOf(this.getSalaryType())));
|
||||
} else if (Objects.isNull(this.getSalaryLow()) && Objects.nonNull(this.getSalaryUp())) {
|
||||
salary = String.format("%s元/%s", this.getSalaryUp(), DictUtils.getCodeNameMap("salary_type").get(String.valueOf(this.getSalaryType())));
|
||||
} else if (Objects.isNull(this.getSalaryLow()) && Objects.isNull(this.getSalaryUp())) {
|
||||
salary = "薪资面议";
|
||||
}
|
||||
return salary;
|
||||
}
|
||||
|
||||
public String getAgeStr() {
|
||||
String age = "";
|
||||
if (Objects.nonNull(this.getAgeLow()) && Objects.nonNull(this.getAgeUp())) {
|
||||
age = String.format("%s至%s岁", this.getAgeLow(), this.getAgeUp());
|
||||
if (this.getAgeLow().intValue() == this.getAgeUp().intValue()) {
|
||||
age = String.format("%s岁", this.getAgeUp());
|
||||
}
|
||||
} else if (Objects.nonNull(this.getAgeLow()) && Objects.isNull(this.getAgeUp())) {
|
||||
age = String.format("%s岁以上", this.getAgeLow());
|
||||
} else if (Objects.isNull(this.getAgeLow()) && Objects.nonNull(this.getAgeUp())) {
|
||||
age = String.format("18至%s岁", this.getAgeUp());
|
||||
} else if (Objects.isNull(this.getAgeLow()) && Objects.isNull(this.getAgeUp())) {
|
||||
age = "18岁以上";
|
||||
}
|
||||
return age;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,130 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 岗位审核表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-07-05
|
||||
*/
|
||||
@ApiModel("岗位审核表")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PositionAuditOperatorDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long positionId;
|
||||
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("hr_company主键")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("岗位名称")
|
||||
private String positionName;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位类型")
|
||||
private String positionType;
|
||||
|
||||
@ApiModelProperty("工作性质 1:短工 2:全职")
|
||||
private String jobCategory;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
@ApiModelProperty("招聘专员")
|
||||
private Long recruitUserId;
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private String sexRequire;
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private String educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("岗位标签")
|
||||
private String positionTag;
|
||||
|
||||
private Long addressId;
|
||||
|
||||
@ApiModelProperty("招聘岗位类型数据字典")
|
||||
private String recruitPositionType;
|
||||
|
||||
@ApiModelProperty("审核状态 1:待审核 2.审核成功 3.审核失败")
|
||||
private String auditStatus;
|
||||
|
||||
@ApiModelProperty("审核失败原因")
|
||||
private String auditFailMsg;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Integer version;
|
||||
|
||||
|
||||
/**
|
||||
* 年龄上限
|
||||
*/
|
||||
private Integer ageUp;
|
||||
|
||||
/**
|
||||
* 年龄下限
|
||||
*/
|
||||
private Integer ageLow;
|
||||
|
||||
/**
|
||||
* 薪资上限
|
||||
*/
|
||||
private BigDecimal salaryUp;
|
||||
|
||||
/**
|
||||
* 薪资下限
|
||||
*/
|
||||
private BigDecimal salaryLow;
|
||||
|
||||
/**
|
||||
* 薪资类型
|
||||
*/
|
||||
private String salaryType;
|
||||
}
|
||||
@@ -0,0 +1,128 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.newyetai.common.dto.PageQueryDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 岗位审核表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-07-05
|
||||
*/
|
||||
|
||||
@ApiModel("岗位审核表")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
public class PositionAuditPageQueryDTO extends PageQueryDTO<PositionAuditDTO> {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long positionId;
|
||||
|
||||
private Long orgId;
|
||||
|
||||
private Set<Long> orgIds;
|
||||
|
||||
private String orgNameLike;
|
||||
|
||||
@ApiModelProperty("hr_company主键")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("岗位名称 (模糊匹配)")
|
||||
private String positionNameLike;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位类型")
|
||||
private String positionType;
|
||||
|
||||
@ApiModelProperty("工作性质 1:短工 2:全职")
|
||||
private String jobCategory;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
@ApiModelProperty("招聘专员")
|
||||
private Long recruitUserId;
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private String sexRequire;
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private String educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("岗位标签")
|
||||
private String positionTag;
|
||||
|
||||
private Long addressId;
|
||||
|
||||
@ApiModelProperty("招聘岗位类型数据字典")
|
||||
private String recruitPositionType;
|
||||
|
||||
@ApiModelProperty("审核状态 1:待审核 2.审核成功 3.审核失败")
|
||||
private String auditStatus;
|
||||
|
||||
@ApiModelProperty("审核失败原因")
|
||||
private String auditFailMsg;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Integer version;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import com.newyetai.common.dto.BaseDTO;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 岗位审核表
|
||||
*
|
||||
* @author guixinman
|
||||
* @since 1.0.0 2024-07-05
|
||||
*/
|
||||
@ApiModel("岗位审核表")
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class PositionAuditQueryDTO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long positionId;
|
||||
|
||||
private Long orgId;
|
||||
|
||||
@ApiModelProperty("hr_company主键")
|
||||
private Long companyId;
|
||||
|
||||
@ApiModelProperty("岗位名称 (模糊匹配)")
|
||||
private String positionNameLike;
|
||||
|
||||
@ApiModelProperty("招聘标题")
|
||||
private String recruitTitle;
|
||||
|
||||
@ApiModelProperty("岗位类型")
|
||||
private String positionType;
|
||||
|
||||
@ApiModelProperty("工作性质 1:短工 2:全职")
|
||||
private String jobCategory;
|
||||
|
||||
@ApiModelProperty("岗位招聘人数")
|
||||
private Integer positionNumber;
|
||||
|
||||
@ApiModelProperty("工作地址")
|
||||
private String positionAddress;
|
||||
|
||||
@ApiModelProperty("招聘专员")
|
||||
private Long recruitUserId;
|
||||
|
||||
@ApiModelProperty("发薪日")
|
||||
private String payDate;
|
||||
|
||||
@ApiModelProperty("性别要求")
|
||||
private String sexRequire;
|
||||
|
||||
@ApiModelProperty("学历要求")
|
||||
private String educationRequire;
|
||||
|
||||
@ApiModelProperty("经验要求")
|
||||
private String experienceRequire;
|
||||
|
||||
@ApiModelProperty("证件要求")
|
||||
private String certificatesRequire;
|
||||
|
||||
@ApiModelProperty("其他要求")
|
||||
private String otherRequire;
|
||||
|
||||
@ApiModelProperty("工作内容")
|
||||
private String jobContent;
|
||||
|
||||
@ApiModelProperty("岗位标签")
|
||||
private String positionTag;
|
||||
|
||||
private Long addressId;
|
||||
|
||||
@ApiModelProperty("招聘岗位类型数据字典")
|
||||
private String recruitPositionType;
|
||||
|
||||
@ApiModelProperty("审核状态 1:待审核 2.审核成功 3.审核失败")
|
||||
private String auditStatus;
|
||||
|
||||
@ApiModelProperty("审核失败原因")
|
||||
private String auditFailMsg;
|
||||
|
||||
@ApiModelProperty("版本号")
|
||||
private Integer version;
|
||||
|
||||
@ApiModelProperty("创建时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeStart;
|
||||
|
||||
@ApiModelProperty("创建时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTimeEnd;
|
||||
|
||||
@ApiModelProperty("更新时间起,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeStart;
|
||||
|
||||
@ApiModelProperty("更新时间止,格式 (yyyy-MM-dd HH:mm:ss)")
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date updateTimeEnd;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.newyetai.recruit.position.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description:
|
||||
* @author: guixinman
|
||||
* @create: 2024-07-05 15:39
|
||||
**/
|
||||
@Data
|
||||
public class PositionAuditReqDTO implements Serializable {
|
||||
|
||||
@NotNull(message = "id不能为空")
|
||||
private Long id;
|
||||
|
||||
@NotBlank(message = "请选择审核状态")
|
||||
@ApiModelProperty("审核状态 1:待审核 2.审核成功 3.审核失败")
|
||||
private String auditStatus;
|
||||
|
||||
@ApiModelProperty("审核失败原因")
|
||||
private String auditFailMsg;
|
||||
|
||||
@NotNull(message = "版本号不能为空")
|
||||
private Integer version;
|
||||
|
||||
private Long updateBy;
|
||||
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user