From d4525ea0b79fd51114f6f082af3be2261e536879 Mon Sep 17 00:00:00 2001 From: dimengzhe Date: Fri, 17 Jan 2025 16:56:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9B=E8=81=98=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/yxt/anrui/oa/api/HrHireApplyRest.java | 56 ++++++ .../anrui/oa/biz/hrhireapply/HrHireApply.java | 20 ++ .../oa/biz/hrhireapply/HrHireApplyDto.java | 24 +++ .../oa/biz/hrhireapply/HrHireApplyMapper.java | 13 ++ .../oa/biz/hrhireapply/HrHireApplyMapper.xml | 4 + .../biz/hrhireapply/HrHireApplyService.java | 177 ++++++++++++++++++ .../oa/biz/hrhireapply/HrHireApplyVo.java | 28 +++ .../oa/biz/hrhiredetails/HrHireDetails.java | 41 ++++ .../biz/hrhiredetails/HrHireDetailsDto.java | 45 +++++ .../hrhiredetails/HrHireDetailsMapper.java | 18 ++ .../biz/hrhiredetails/HrHireDetailsMapper.xml | 28 +++ .../hrhiredetails/HrHireDetailsService.java | 66 +++++++ .../oa/biz/hrhiredetails/HrHireDetailsVo.java | 48 +++++ .../com/yxt/anrui/oa/biz/oaform/Extra.java | 12 ++ .../yxt/anrui/oa/biz/oaform/FormCommon.java | 25 +++ .../yxt/anrui/oa/biz/oaform/OaFormDto.java | 2 +- .../anrui/oa/biz/oaform/OaFormService.java | 5 +- .../yxt/anrui/oa/feign/file/OaFileEnum.java | 1 + .../oa/feign/flowable/flow/ProcDefEnum.java | 1 + 19 files changed, 611 insertions(+), 3 deletions(-) create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/api/HrHireApplyRest.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApply.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetails.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsDto.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.xml create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsService.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsVo.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/Extra.java create mode 100644 yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/FormCommon.java diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/api/HrHireApplyRest.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/api/HrHireApplyRest.java new file mode 100644 index 0000000000..03bc4fd1bb --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/api/HrHireApplyRest.java @@ -0,0 +1,56 @@ +package com.yxt.anrui.oa.api; + +import com.yxt.anrui.oa.biz.hrhireapply.HrHireApplyDto; +import com.yxt.anrui.oa.biz.hrhireapply.HrHireApplyService; +import com.yxt.anrui.oa.biz.hrhireapply.HrHireApplyVo; +import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto; +import com.yxt.common.core.result.ResultBean; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@RestController +@RequestMapping("v1/HrHireApply") +public class HrHireApplyRest { + + @Autowired + private HrHireApplyService hrHireApplyService; + + @ApiOperation("新增初始化") + @GetMapping("/getInit") + ResultBean getSaveInit(@RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath) { + return hrHireApplyService.getSaveInit(userSid, orgPath); + } + + @ApiOperation("修改初始化") + @GetMapping("/getInit/{sid}") + ResultBean getUpdateInit(@PathVariable("sid") String sid) { + return hrHireApplyService.getUpdateInit(sid); + } + + @ApiOperation("新增或修改") + @PostMapping("/save") + public ResultBean saveOrUpdate(@RequestBody HrHireApplyDto dto) { + return hrHireApplyService.saveOrUpdateDto(dto); + } + + @ApiOperation("提交审批流程") + @PostMapping("/submit") + public ResultBean submit(@RequestBody HrHireApplyDto dto) { + return hrHireApplyService.submit(dto); + } + + @ApiOperation(value = "驳回任务") + @PostMapping(value = "/reject") + public ResultBean reject(@Valid @RequestBody TaskDto dto) { + return hrHireApplyService.reject(dto); + } + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApply.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApply.java new file mode 100644 index 0000000000..9d66455a05 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApply.java @@ -0,0 +1,20 @@ +package com.yxt.anrui.oa.biz.hrhireapply; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class HrHireApply extends BaseEntity { + private static final long serialVersionUID = 3495800881939563210L; + @ApiModelProperty("是否是财务") + private String isFinanceKey; + private String isFinanceValue; + + private String formSid; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyDto.java new file mode 100644 index 0000000000..aefff0c668 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyDto.java @@ -0,0 +1,24 @@ +package com.yxt.anrui.oa.biz.hrhireapply; + +import com.yxt.anrui.oa.biz.hrhiredetails.HrHireDetailsDto; +import com.yxt.anrui.oa.biz.oaform.OaFormDto; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class HrHireApplyDto extends OaFormDto { + private static final long serialVersionUID = 4255707952292859284L; + private String userSid; + @ApiModelProperty("是否是财务") + private String isFinanceKey; + private String isFinanceValue; + private List list = new ArrayList<>(); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.java new file mode 100644 index 0000000000..d77820c21a --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.java @@ -0,0 +1,13 @@ +package com.yxt.anrui.oa.biz.hrhireapply; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Mapper +public interface HrHireApplyMapper extends BaseMapper { +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.xml new file mode 100644 index 0000000000..f4f48afff3 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyMapper.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyService.java new file mode 100644 index 0000000000..674a6e0237 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyService.java @@ -0,0 +1,177 @@ +package com.yxt.anrui.oa.biz.hrhireapply; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.oa.biz.hrhiredetails.HrHireDetailsDto; +import com.yxt.anrui.oa.biz.hrhiredetails.HrHireDetailsService; +import com.yxt.anrui.oa.biz.hrhiredetails.HrHireDetailsVo; +import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.anrui.oa.biz.oaform.OaForm; +import com.yxt.anrui.oa.biz.oaform.OaFormRuleEnum; +import com.yxt.anrui.oa.biz.oaform.OaFormService; +import com.yxt.anrui.oa.biz.oaform.flowable.SubmitDto; +import com.yxt.anrui.oa.biz.oaform.flowable.TaskDto; +import com.yxt.anrui.oa.feign.flowable.flow.ProcDefEnum; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationFeign; +import com.yxt.anrui.oa.feign.portal.sysorganization.SysOrganizationVo; +import com.yxt.common.base.service.MybatisBaseService; +import com.yxt.common.core.result.ResultBean; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Service +public class HrHireApplyService extends MybatisBaseService { + + @Autowired + private OaFormService oaFormService; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + @Autowired + private HrHireDetailsService hiHireDetailsService; + @Autowired + private OaAppendixService oaAppendixService; + + public ResultBean getSaveInit(String userSid, String orgPath) { + ResultBean rb = ResultBean.fireFail(); + HrHireApplyVo hrHireApplyVo = new HrHireApplyVo(); + hrHireApplyVo.setUserSid(userSid); + hrHireApplyVo.setOrgPath(orgPath); + return rb.success().setData(hrHireApplyVo); + } + + public ResultBean getUpdateInit(String sid) { + ResultBean rb = ResultBean.fireFail(); + HrHireApplyVo hrHireApplyVo = new HrHireApplyVo(); + HrHireApply hrHireApply = fetchBySid(sid); + if (hrHireApply == null) { + return rb.setMsg("该申请不存在"); + } + OaForm oaForm = oaFormService.fetchBySid(sid); + //根据部门sid获取orgPath并赋值 + SysOrganizationVo organizationVo = sysOrganizationFeign.fetchBySid(oaForm.getDeptSid()).getData(); + String orgSidPath = organizationVo.getOrgSidPath(); + hrHireApplyVo.setOrgPath(orgSidPath); + hrHireApplyVo.setUserSid(oaForm.getCreateBySid()); + BeanUtil.copyProperties(hrHireApply, hrHireApplyVo); + FormCommon isFinanceObj = FormCommon.of(hrHireApply.getIsFinanceKey(), hrHireApply.getIsFinanceValue()); + hrHireApplyVo.setIsFinanceObj(isFinanceObj); + List list = hiHireDetailsService.getUpdateInit(sid); + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + list.stream().forEach(details -> { + FormCommon deptObj = FormCommon.of(details.getDeptKey(), details.getDeptValue()); + details.setDeptObj(deptObj); + FormCommon jobObj = FormCommon.of(details.getJobKey(), details.getJobValue()); + details.setJobObj(jobObj); + FormCommon educationObj = FormCommon.of(details.getEducationKey(), details.getEducationValue()); + details.setEducationObj(educationObj); + List files = oaAppendixService.selectByLinkSid(details.getSid()); + details.setFiles(files); + }); + } + hrHireApplyVo.setList(list); + hrHireApplyVo.setSid(sid); + return rb.success().setData(hrHireApplyVo); + } + + public ResultBean saveOrUpdateDto(HrHireApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + String sid = dto.getSid(); + List list = dto.getList(); + if (StringUtils.isBlank(sid)) { + // 新建操作 + HrHireApply entity = new HrHireApply(); + BeanUtil.copyProperties(dto, entity, "sid"); + dto.setBillNo("ZPXQ"); + dto.setSid(entity.getSid()); + dto.setCreateBySid(dto.getUserSid()); + ResultBean resultBean = oaFormService.saveOaForm(dto); + if (!resultBean.getSuccess()) { + return rb; + } + entity.setFormSid(resultBean.getData()); + entity.setCreateBySid(dto.getUserSid()); + baseMapper.insert(entity); + sid = entity.getSid(); + } else { + // 更新操作 + HrHireApply entity = fetchBySid(sid); + BeanUtil.copyProperties(dto, entity, "id", "sid"); + baseMapper.updateById(entity); + } + hiHireDetailsService.saveDetails(list, sid); + return rb.success().setData(sid); + } + + /** + * 提交 + * + * @param dto + * @return + */ + public ResultBean submit(HrHireApplyDto dto) { + ResultBean rb = ResultBean.fireFail(); + ResultBean stringResultBean = saveOrUpdateDto(dto); + if (!stringResultBean.getSuccess()) { + return rb.setMsg(stringResultBean.getData()); + } + String businessSid = stringResultBean.getData(); + + SubmitDto submitDto = new SubmitDto(); + submitDto.setUserSid(dto.getCreateBySid()); + submitDto.setBusinessSid(businessSid); + + Map formVariables = new HashMap<>(); + formVariables = getMap(formVariables, businessSid); + submitDto.setFormVariables(formVariables); + submitDto.setProcDefId(ProcDefEnum.HIHIREAPPLY.getProDefId()); + submitDto.setNextTaskId(dto.getTaskId()); + submitDto.setRule(OaFormRuleEnum.DIRECTLY_UNDER.getRule()); + return oaFormService.submit(submitDto); + } + + /** + * 驳回 + * + * @param dto + * @return + */ + public ResultBean reject(TaskDto dto) { + Map formVariables = dto.getFormVariables(); + formVariables = getMap(formVariables, dto.getBusinessSid()); + dto.setFormVariables(formVariables); + + return oaFormService.reject(dto); + } + + + public Map getMap(Map formVariables, String sid) { + Map appMap = new HashMap<>(); + appMap.put("sid", sid); + appMap.put("editUrl", "approval/#/pages/EditOnboradingApplyActivity?sid=" + sid); + appMap.put("detailUrl", "approval/#/pages/DetailOnboradingApplyActivity?sid=" + sid); + formVariables.put("app", appMap); + //根据组织查询是否是分公司 + OaForm oaForm = oaFormService.fetchBySid(sid); + HrHireApply hrHireApply = fetchBySid(sid); + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(oaForm.getUseOrgSid()).getData(); + //是否是分公司 + formVariables.put("isTrue", sysOrganization.getIsDept() == 0); + //是否是财务岗 + formVariables.put("isFin", "1".equals(hrHireApply.getIsFinanceKey())); + return formVariables; + } + + +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyVo.java new file mode 100644 index 0000000000..c4ae16bd06 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhireapply/HrHireApplyVo.java @@ -0,0 +1,28 @@ +package com.yxt.anrui.oa.biz.hrhireapply; + +import com.yxt.anrui.oa.biz.hrhiredetails.HrHireDetailsVo; +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class HrHireApplyVo { + + private String sid; + private String userSid; + private String orgPath; + @ApiModelProperty("是否是财务") + private FormCommon isFinanceObj; + private String isFinanceKey; + private String isFinanceValue; + + private List list = new ArrayList<>(); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetails.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetails.java new file mode 100644 index 0000000000..f4a48bb3d8 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetails.java @@ -0,0 +1,41 @@ +package com.yxt.anrui.oa.biz.hrhiredetails; + +import com.yxt.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class HrHireDetails extends BaseEntity { + private static final long serialVersionUID = 4980172913356706485L; + @ApiModelProperty("主表sid") + private String mainSid; + @ApiModelProperty("招聘部门sid") + private String deptSid; + @ApiModelProperty("招聘部门名称") + private String deptName; + @ApiModelProperty("招聘岗位sid") + private String postSid; + @ApiModelProperty("招聘岗位名称") + private String postName; + @ApiModelProperty("招聘人数") + private Integer memberCount; + @ApiModelProperty("学历key") + private String educationKey; + @ApiModelProperty("学历value") + private String educationValue; + @ApiModelProperty("薪资待遇") + private String formalWages; + @ApiModelProperty("职位福利") + private String benefits; + @ApiModelProperty("职位描述") + private String describes; + @ApiModelProperty("任职要求") + private String demand; + @ApiModelProperty("工作地址") + private String address; +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsDto.java new file mode 100644 index 0000000000..abcc5139c6 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsDto.java @@ -0,0 +1,45 @@ +package com.yxt.anrui.oa.biz.hrhiredetails; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/17 + **/ +@Data +public class HrHireDetailsDto { + + @ApiModelProperty("招聘部门") + private FormCommon deptObj; + private String deptKey; + private String deptValue; + @ApiModelProperty("招聘岗位") + private FormCommon jobObj; + private String jobKey; + private String jobValue; + @ApiModelProperty("人数") + private String memberCount; + @ApiModelProperty("学历") + private FormCommon educationObj; + private String educationKey; + private String educationValue; + @ApiModelProperty("薪资待遇") + private String formalWages; + @ApiModelProperty("职位福利") + private String benefits; + @ApiModelProperty("职位描述") + private String describes; + @ApiModelProperty("职位要求") + private String demand; + @ApiModelProperty("地址") + private String address; + private String remarks; + + private List files = new ArrayList<>(); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.java new file mode 100644 index 0000000000..deb44270fc --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.java @@ -0,0 +1,18 @@ +package com.yxt.anrui.oa.biz.hrhiredetails; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/17 + **/ +@Mapper +public interface HrHireDetailsMapper extends BaseMapper { + List getUpdateInit(String sid); + + List selectByMainSid(String sid); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.xml b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.xml new file mode 100644 index 0000000000..fac24a49bd --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsMapper.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsService.java new file mode 100644 index 0000000000..c9b63d895c --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsService.java @@ -0,0 +1,66 @@ +package com.yxt.anrui.oa.biz.hrhiredetails; + +import cn.hutool.core.bean.BeanUtil; +import com.yxt.anrui.oa.biz.oaappendix.OaAppendixMapper; +import com.yxt.anrui.oa.biz.oaappendix.OaAppendixService; +import com.yxt.anrui.oa.feign.file.OaFileEnum; +import com.yxt.common.base.service.MybatisBaseService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/17 + **/ +@Service +public class HrHireDetailsService extends MybatisBaseService { + + @Autowired + private OaAppendixMapper oaAppendixMapper; + @Autowired + private OaAppendixService oaAppendixService; + + public List getUpdateInit(String sid) { + return baseMapper.getUpdateInit(sid); + } + + public void saveDetails(List list, String sid) { + //根据sid查询明细并删除 + List list2 = baseMapper.selectByMainSid(sid); + list2.removeAll(Collections.singleton(null)); + if (!list2.isEmpty()) { + list2.stream().forEach(v -> { + oaAppendixMapper.deleteByLinkSid(v.getSid()); + deleteBySid(v.getSid()); + }); + } + list.removeAll(Collections.singleton(null)); + if (!list.isEmpty()) { + list.stream().forEach(details -> { + HrHireDetails hrHireDetails = new HrHireDetails(); + BeanUtil.copyProperties(details, hrHireDetails); + hrHireDetails.setDeptSid(details.getDeptKey()); + hrHireDetails.setDeptName(details.getDeptValue()); + hrHireDetails.setPostSid(details.getJobKey()); + hrHireDetails.setPostName(details.getJobValue()); + hrHireDetails.setMainSid(sid); + baseMapper.insert(hrHireDetails); + List files = details.getFiles(); + // 处理附件 + saveFiles(hrHireDetails.getSid(), files, OaFileEnum.HIHIREAPPLY.getAttachType(), "文件"); + + }); + } + + } + + // 保存文件 + private void saveFiles(String sid, List files, String attachType, String fileType) { + files.removeAll(Collections.singleton(null)); + oaAppendixService.saveFile(sid, files, attachType, fileType); + } +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsVo.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsVo.java new file mode 100644 index 0000000000..9f33407d6e --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/hrhiredetails/HrHireDetailsVo.java @@ -0,0 +1,48 @@ +package com.yxt.anrui.oa.biz.hrhiredetails; + +import com.yxt.anrui.oa.biz.oaform.FormCommon; +import com.yxt.common.core.vo.Vo; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class HrHireDetailsVo implements Vo { + private static final long serialVersionUID = -3330232160961910852L; + private String sid; + @ApiModelProperty("招聘部门") + private FormCommon deptObj; + private String deptKey; + private String deptValue; + @ApiModelProperty("招聘岗位") + private FormCommon jobObj; + private String jobKey; + private String jobValue; + @ApiModelProperty("人数") + private String memberCount; + @ApiModelProperty("学历") + private FormCommon educationObj; + private String educationKey; + private String educationValue; + @ApiModelProperty("薪资待遇") + private String formalWages; + @ApiModelProperty("职位福利") + private String benefits; + @ApiModelProperty("职位描述") + private String describes; + @ApiModelProperty("职位要求") + private String demand; + @ApiModelProperty("地址") + private String address; + @ApiModelProperty("备注") + private String remarks; + + private List files = new ArrayList<>(); +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/Extra.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/Extra.java new file mode 100644 index 0000000000..68301f2537 --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/Extra.java @@ -0,0 +1,12 @@ +package com.yxt.anrui.oa.biz.oaform; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class Extra { +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/FormCommon.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/FormCommon.java new file mode 100644 index 0000000000..f36a13ea8e --- /dev/null +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/FormCommon.java @@ -0,0 +1,25 @@ +package com.yxt.anrui.oa.biz.oaform; + +import lombok.Data; + +/** + * @description: + * @author: dimengzhe + * @date: 2025/1/16 + **/ +@Data +public class FormCommon { + + private String id; + private String dictValue; + + private Extra extra; + + // 静态方法,直接通过方法创建对象并赋值 + public static FormCommon of(String id, String dictValue) { + FormCommon formCommon = new FormCommon(); + formCommon.setId(id); + formCommon.setDictValue(dictValue); + return formCommon; + } +} diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java index 1499f8c6d1..a77203795b 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormDto.java @@ -20,7 +20,7 @@ public class OaFormDto implements Dto { @ApiModelProperty("创建人sid") private String createBySid; @ApiModelProperty("组织机构全路径") - private String orgSidPath; + private String orgPath; @ApiModelProperty("申请单编号的字母") private String billNo; @ApiModelProperty("sid") diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java index 3f67bf4dfd..10fcc97e1a 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/biz/oaform/OaFormService.java @@ -75,10 +75,11 @@ public class OaFormService extends MybatisBaseService { // 创建OA表单对象 OaForm oaForm = new OaForm(); // 将DTO中部分属性复制到oaForm中,忽略不需要的字段(如billNo, orgSidPath) - BeanUtil.copyProperties(dto, oaForm, "billNo", "orgSidPath"); + BeanUtil.copyProperties(dto, oaForm, "billNo", "orgPath"); try { + String orgSidPath = dto.getOrgPath(); // 获取组织信息,根据orgSidPath字段调用外部服务 - OrgVo orgVo = sysOrganizationFeign.getOrgByPath(dto.getOrgSidPath()).getData(); + OrgVo orgVo = sysOrganizationFeign.getOrgByPath(orgSidPath).getData(); // 如果组织信息为空,返回失败信息 if (orgVo == null) { return rb.setMsg("未找到对应的组织信息"); diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java index 441cbe1efd..7c0f46ed7d 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/file/OaFileEnum.java @@ -10,6 +10,7 @@ public enum OaFileEnum { OALEAVEAPPLY("001", "请假申请附件"), OAMENDAPPLY("002", "补卡申请附件"), ADEXPATRIATESAPPLY("003", "驻外人员认定附件"), + HIHIREAPPLY("004", "招聘需求附件"), ; diff --git a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java index 8846f09578..f759713d59 100644 --- a/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java +++ b/yxt-oa/src/main/java/com/yxt/anrui/oa/feign/flowable/flow/ProcDefEnum.java @@ -9,6 +9,7 @@ public enum ProcDefEnum { /***************************正式流程id***********************************/ OALEAVEAPPLY("请假申请", "process_su0yph7n:1:15957504"), OAMENDAPPLY("补卡申请", "process_9suucr96:1:16072504"), + HIHIREAPPLY("招聘需求", "process_zy0m4jrp:1:16802504"), ;