2024.3.19-3.20 系统模块、定时任务模块-人力资源基础信息部门、岗位定时任务

master
A0010407 1 year ago
parent de31118290
commit 264916d073

@ -27,4 +27,12 @@ public interface RemoteOpenService {
/**获取HR人员信息**/
@GetMapping("/openInterface/GetHrUserInfo/{dateTime}")
public AjaxResult GetHrUserInfo(@PathVariable("dateTime") String dateTime);
/**获取HR岗位信息**/
@GetMapping("/openInterface/GetHrPostInfo")
public AjaxResult GetHrPostInfo();
/**获取HR岗位信息**/
@GetMapping("/openInterface/GetHrDeptInfo")
public AjaxResult GetHrDeptInfo();
}

@ -61,4 +61,12 @@ public interface RemoteUserService {
/**hr 人力基础数据数据-人员基本信息**/
@PostMapping("/user/syncUserInfoTask")
public R syncUserInfoTask();
/**岗位基础数据数据**/
@PostMapping("/post/sysPostInfoTask")
public R sysPostInfoTask();
/**部门基础数据数据**/
@PostMapping("/dept/sysDeptInfoTask")
public R sysDeptInfoTask();
}

@ -0,0 +1,203 @@
package com.op.system.api.domain.quality;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
import com.op.system.api.domain.SysDept;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.ArrayList;
import java.util.List;
/**
* hr
*
* @author Open Platform
* @date 2023-10-31
*/
public class HRDeptInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 部门ID */
private Long deptId;
/** 父部门ID */
private Long parentId;
/** 祖级列表 */
private String ancestors;
/** 部门名称 */
private String deptName;
/** 显示顺序 */
private Integer orderNum;
/** 负责人 */
private String leader;
/** 联系电话 */
private String phone;
/** 邮箱 */
private String email;
/** 部门状态:0正常,1停用 */
private String status;
/** 删除标志0代表存在 2代表删除 */
private String delFlag;
/** 父部门名称 */
private String parentName;
/** 子部门 */
// private List<SysDept> children = new ArrayList<SysDept>();
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getAncestors() {
return ancestors;
}
public void setAncestors(String ancestors) {
this.ancestors = ancestors;
}
@NotBlank(message = "部门名称不能为空")
@Size(min = 0, max = 30, message = "部门名称长度不能超过30个字符")
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
@NotNull(message = "显示顺序不能为空")
public Integer getOrderNum() {
return orderNum;
}
public void setOrderNum(Integer orderNum) {
this.orderNum = orderNum;
}
public String getLeader() {
return leader;
}
public void setLeader(String leader) {
this.leader = leader;
}
@Size(min = 0, max = 11, message = "联系电话长度不能超过11个字符")
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Email(message = "邮箱格式不正确")
@Size(min = 0, max = 50, message = "邮箱长度不能超过50个字符")
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getParentName() {
return parentName;
}
public void setParentName(String parentName) {
this.parentName = parentName;
}
// public List<SysDept> getChildren() {
// return children;
// }
//
// public void setChildren(List<SysDept> children) {
// this.children = children;
// }
//接口传入参数
/** 部门code */
private Long orgCode;
/** 部门名称 */
private String orgName;
/** 部门父级code */
private Long parentCode;
public Long getOrgCode() {
return orgCode;
}
public void setOrgCode(Long orgCode) {
this.orgCode = orgCode;
}
public String getOrgName() {
return orgName;
}
public void setOrgName(String orgName) {
this.orgName = orgName;
}
public Long getParentCode() {
return parentCode;
}
public void setParentCode(Long parentCode) {
this.parentCode = parentCode;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("deptId", getDeptId())
.append("parentId", getParentId()).append("ancestors", getAncestors()).append("deptName", getDeptName())
.append("orderNum", getOrderNum()).append("leader", getLeader()).append("phone", getPhone())
.append("email", getEmail()).append("status", getStatus()).append("delFlag", getDelFlag())
.append("createBy", getCreateBy()).append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).toString();
}
}

@ -0,0 +1,152 @@
package com.op.system.api.domain.quality;
import com.alibaba.fastjson2.annotation.JSONField;
import com.op.common.core.annotation.Excel;
import com.op.common.core.web.domain.BaseEntity;
import com.op.system.api.domain.SysDept;
import com.op.system.api.domain.SysRole;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
/**
* hr
*
* @author Open Platform
* @date 2023-10-31
*/
public class HRPostInfo extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
*
*/
@Excel(name = "岗位序号", cellType = Excel.ColumnType.NUMERIC)
private Long postId;
/**
*
*/
@Excel(name = "岗位编码")
private String postCode;
/**
*
*/
@Excel(name = "岗位名称")
private String postName;
/**
*
*/
@Excel(name = "岗位排序")
private Integer postSort;
/**
* 0 1
*/
@Excel(name = "状态", readConverterExp = "0=正常,1=停用")
private String status;
/**
*
*/
private boolean flag = false;
public Long getPostId() {
return postId;
}
public void setPostId(Long postId) {
this.postId = postId;
}
@NotBlank(message = "岗位编码不能为空")
@Size(min = 0, max = 64, message = "岗位编码长度不能超过64个字符")
public String getPostCode() {
return postCode;
}
// @JSONField(name="poscd")
public void setPostCode(String postCode) {
this.postCode = postCode;
}
@NotBlank(message = "岗位名称不能为空")
@Size(min = 0, max = 50, message = "岗位名称长度不能超过50个字符")
public String getPostName() {
return postName;
}
// @JSONField(name="posnm")
public void setPostName(String postName) {
this.postName = postName;
}
@NotNull(message = "显示顺序不能为空")
public Integer getPostSort() {
return postSort;
}
public void setPostSort(Integer postSort) {
this.postSort = postSort;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
//open接口传过来的值
/**
*
*/
private String poscd;
/**
*
*/
private String posnm;
public String getPoscd() {
return poscd;
}
public void setPoscd(String poscd) {
this.poscd = poscd;
}
public String getPosnm() {
return posnm;
}
public void setPosnm(String posnm) {
this.posnm = posnm;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).append("postId", getPostId())
.append("postCode", getPostCode()).append("postName", getPostName()).append("postSort", getPostSort())
.append("status", getStatus()).append("createBy", getCreateBy()).append("createTime", getCreateTime())
.append("updateBy", getUpdateBy()).append("updateTime", getUpdateTime()).append("remark", getRemark())
.toString();
}
}

@ -32,7 +32,17 @@ public class RemoteOpenFallbackFactory implements FallbackFactory<RemoteOpenServ
@Override
public AjaxResult GetHrUserInfo(String dateTime) {
return AjaxResult.error("获取HR信息失败"+throwable.getMessage());
return AjaxResult.error("获取HR人员信息失败"+throwable.getMessage());
}
@Override
public AjaxResult GetHrPostInfo() {
return AjaxResult.error("获取HR岗位信息失败"+throwable.getMessage());
}
@Override
public AjaxResult GetHrDeptInfo() {
return AjaxResult.error("获取HR部门信息失败"+throwable.getMessage());
}
};
}

@ -51,6 +51,16 @@ public class RemoteUserFallbackFactory implements FallbackFactory<RemoteUserServ
public R syncUserInfoTask() {
return R.fail("hr人力资源基础数据-人员信息同步失败:"+throwable.getMessage());
}
@Override
public R sysPostInfoTask() {
return R.fail("hr人力资源基础数据-岗位信息同步失败:"+throwable.getMessage());
}
@Override
public R sysDeptInfoTask() {
return R.fail("hr人力资源基础数据-部门信息同步失败:"+throwable.getMessage());
}
};
}
}

@ -170,6 +170,22 @@ public class RyTask {
}
/************hr 人力基础数据定时任务结束*****************/
/************岗位基础数据定时任务开始*****************/
//岗位基本数据同步每天
public void sysPostInfoTask(){
logger.info("++hr岗位基础数据同步+开始++sysPostInfoTask+++++");
remoteUserService.sysPostInfoTask();
}
/************岗位基础数据定时任务开始*****************/
/************部门基础数据定时任务开始*****************/
//部门基本数据同步每天
public void sysDeptInfoTask(){
logger.info("++hr部门基础数据同步+开始++sysPostInfoTask+++++");
remoteUserService.sysDeptInfoTask();
}
/************部门基础数据定时任务开始*****************/
/************质量管理系统-来料检验批量检验任务创建-定时任务开始*****************/
//来料检验批量检验任务创建每10分钟执行一次
public void createIncomeBatchTask(){

@ -2,6 +2,7 @@ package com.op.system.controller;
import java.util.List;
import com.op.common.core.domain.R;
import org.apache.commons.lang3.ArrayUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@ -118,4 +119,10 @@ public class SysDeptController extends BaseController {
deptService.checkDeptDataScope(deptId);
return toAjax(deptService.deleteDeptById(deptId));
}
/**更新部门基本信息**/
@PostMapping("/sysDeptInfoTask")
public R sysDeptInfoTask() {
return R.ok(deptService.sysDeptInfoTask());
}
}

@ -3,6 +3,7 @@ package com.op.system.controller;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.op.common.core.domain.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.DeleteMapping;
@ -114,4 +115,10 @@ public class SysPostController extends BaseController {
List<SysPost> posts = postService.selectPostAll();
return success(posts);
}
/**更新岗位基本信息**/
@PostMapping("/sysPostInfoTask")
public R sysPostInfoTask() {
return R.ok(postService.sysPostInfoTask());
}
}

@ -1,7 +1,10 @@
package com.op.system.mapper;
import java.util.Date;
import java.util.List;
import com.op.system.api.domain.quality.HRDeptInfo;
import com.op.system.api.domain.quality.HRPostInfo;
import org.apache.ibatis.annotations.Param;
import com.op.system.api.domain.SysDept;
@ -116,4 +119,15 @@ public interface SysDeptMapper {
* @return
*/
public int deleteDeptById(Long deptId);
public Date getMaxTime();
List<Long> getExistCodes(@Param("list") List<Long> codes);
int updateDeptBatch(@Param("list") List<HRDeptInfo> updates);
int deleteDeptBatch(@Param("list") List<Long> hrNoExistCodes);
int addDeptBatch(@Param("list") List<HRDeptInfo> adds);
}

@ -1,8 +1,12 @@
package com.op.system.mapper;
import java.util.Date;
import java.util.List;
import com.op.system.api.domain.quality.HRInfo;
import com.op.system.api.domain.quality.HRPostInfo;
import com.op.system.domain.SysPost;
import org.apache.ibatis.annotations.Param;
/**
*
@ -96,4 +100,18 @@ public interface SysPostMapper {
* @return
*/
public SysPost checkPostCodeUnique(String postCode);
public Date getMaxTime();
List<String> getExistCodes(@Param("list") List<String> code);
int updatePostBatch(@Param("list") List<HRPostInfo> updates);
int addPostBatch(@Param("list") List<HRPostInfo> adds);
int deletePostBatch(@Param("list")List<String> deletes);
Integer getMaxSort();
List<HRPostInfo> selectPostAllList();
}

@ -2,6 +2,7 @@ package com.op.system.service;
import java.util.List;
import com.op.common.core.domain.R;
import com.op.system.api.domain.SysDept;
import com.op.system.domain.vo.TreeSelect;
@ -121,4 +122,9 @@ public interface ISysDeptService {
* @return
*/
public int deleteDeptById(Long deptId);
/**
*
*/
public R sysDeptInfoTask();
}

@ -2,6 +2,7 @@ package com.op.system.service;
import java.util.List;
import com.op.common.core.domain.R;
import com.op.system.domain.SysPost;
/**
@ -96,4 +97,9 @@ public interface ISysPostService {
* @return
*/
public int updatePost(SysPost post);
/**
*
*/
public R sysPostInfoTask();
}

@ -1,10 +1,22 @@
package com.op.system.service.impl;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.system.api.RemoteOpenService;
import com.op.system.api.domain.quality.HRDeptInfo;
import com.op.system.api.domain.quality.HRPostInfo;
import com.op.system.mapper.SysPostMapper;
import com.op.system.mapper.SysUserPostMapper;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.common.core.constant.UserConstants;
@ -21,6 +33,7 @@ import com.op.system.domain.vo.TreeSelect;
import com.op.system.mapper.SysDeptMapper;
import com.op.system.mapper.SysRoleMapper;
import com.op.system.service.ISysDeptService;
import org.springframework.util.CollectionUtils;
/**
*
@ -29,6 +42,11 @@ import com.op.system.service.ISysDeptService;
*/
@Service
public class SysDeptServiceImpl implements ISysDeptService {
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
@Autowired
private RemoteOpenService remoteOpenService;
@Autowired
private SysDeptMapper deptMapper;
@ -302,4 +320,107 @@ public class SysDeptServiceImpl implements ISysDeptService {
private boolean hasChild(List<SysDept> list, SysDept t) {
return getChildList(list, t).size() > 0 ? true : false;
}
@Override
public R sysDeptInfoTask() {
DynamicDataSourceContextHolder.push("master");// 这是数据源的key
Date maxTime0 = deptMapper.getMaxTime();
if(maxTime0 != null){
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
String ymd = DateFormatUtils.format(maxTime, "yyyy-MM-dd");//yyyy-MM-dd
log.info("更新部门-参数:"+ ymd);
AjaxResult hrR = remoteOpenService.GetHrDeptInfo();
log.info("更新部门-结果:"+ hrR.get("data"));
List<HRDeptInfo> infoList = new ArrayList<HRDeptInfo>();
if((int)hrR.get("code")==200){
infoList = JSONArray.parseArray(JSONObject.toJSONString(hrR.get("data")),com.op.system.api.domain.quality.HRDeptInfo.class);
log.info(String.valueOf(infoList));
if(!CollectionUtils.isEmpty(infoList)){
this.sysDeptInfoFunc(infoList);
}
}else{
log.info("无最新需要更新的部门数据");
return R.fail("无最新需要更新的部门数据");
}
}
return R.ok();
}
protected int sysDeptInfoFunc(List<HRDeptInfo> dtos){
//1.初始化
Date nowDate = DateUtils.getNowDate();
String createBy = "job";
for(HRDeptInfo dto:dtos){
dto.setDeptId(dto.getOrgCode());
dto.setDeptName(dto.getOrgName());
dto.setParentId(dto.getParentCode());
dto.setStatus("0");
dto.setDelFlag("0");
dto.setCreateTime(nowDate);
dto.setCreateBy(createBy);
dto.setUpdateBy(createBy);
dto.setUpdateTime(nowDate);
}
//2.三个表筛选
int n = 0;
//部门的id 就是code
List<Long> codes = dtos.stream().map(HRDeptInfo::getDeptId).collect(Collectors.toList());
//本地已存在
List<Long> existCodes = deptMapper.getExistCodes(codes);
//本地不存在// 差集 (list2 - list1)
List<Long> noExistCodes = codes.stream().filter(item -> !existCodes.contains(item)).collect(Collectors.toList());
//Hr不存在但是本地存在
List<Long> hrNoExistCodes = existCodes.stream().filter(item -> !codes.contains(item)).collect(Collectors.toList());
//3.更新
List<HRDeptInfo> updates = new ArrayList<>();
for(Long existCode:existCodes){
List<HRDeptInfo> updates0 = dtos.stream().filter(dto -> dto.getDeptId().equals(existCode)).collect(Collectors.toList());
updates.addAll(updates0);
}
if(!CollectionUtils.isEmpty(updates)){
int batchSize = 100; // 每批次插入的数据量
int toIndex = 0 ;
if (updates != null && updates.size() > 0) {
for (int i = 0; i < updates.size(); i += batchSize) {
toIndex = Math.min(i + batchSize, updates.size());
List<HRDeptInfo> subList = updates.subList(i, toIndex);
deptMapper.updateDeptBatch(subList);
}
}
log.info("部门更新成功条数:"+ toIndex);
}else{
log.info("部门更新成功条数0");
}
//4.新增
List<HRDeptInfo> adds = new ArrayList<>();
for(Long noExistCode:noExistCodes){
List<HRDeptInfo> adds0 = dtos.stream().filter(dto -> dto.getDeptId().equals(noExistCode)).collect(Collectors.toList());
adds.addAll(adds0);
}
if(!CollectionUtils.isEmpty(adds)){
n = deptMapper.addDeptBatch(adds);
log.info("部门新增成功条数:"+ n);
}else{
log.info("部门新增成功条数0");
}
//5.逻辑删除
if(!CollectionUtils.isEmpty(hrNoExistCodes)){
n = deptMapper.deleteDeptBatch(hrNoExistCodes);
log.info("部门逻辑删除成功条数:"+ n);
}else{
log.info("部门逻辑删除成功条数0");
}
return n;
}
}

@ -1,7 +1,23 @@
package com.op.system.service.impl;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils;
import com.op.common.core.web.domain.AjaxResult;
import com.op.system.api.RemoteOpenService;
import com.op.system.api.domain.quality.HRInfo;
import com.op.system.api.domain.quality.HRPostInfo;
import com.op.system.api.domain.quality.PostInfo;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.op.common.core.constant.UserConstants;
@ -11,6 +27,7 @@ import com.op.system.domain.SysPost;
import com.op.system.mapper.SysPostMapper;
import com.op.system.mapper.SysUserPostMapper;
import com.op.system.service.ISysPostService;
import org.springframework.util.CollectionUtils;
/**
*
@ -19,12 +36,17 @@ import com.op.system.service.ISysPostService;
*/
@Service
public class SysPostServiceImpl implements ISysPostService {
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class);
@Autowired
private SysPostMapper postMapper;
@Autowired
private SysUserPostMapper userPostMapper;
@Autowired
private RemoteOpenService remoteOpenService;
/**
*
*
@ -160,4 +182,113 @@ public class SysPostServiceImpl implements ISysPostService {
public int updatePost(SysPost post) {
return postMapper.updatePost(post);
}
@Override
public R sysPostInfoTask() {
DynamicDataSourceContextHolder.push("master");// 这是数据源的key
Date maxTime0 = postMapper.getMaxTime();
if(maxTime0 != null){
Calendar calendar = Calendar.getInstance();
calendar.setTime(maxTime0);
calendar.add(Calendar.DAY_OF_YEAR, 1);
Date maxTime = calendar.getTime();
String ymd = DateFormatUtils.format(maxTime, "yyyy-MM-dd");//yyyy-MM-dd
log.info("更新岗位-参数:"+ ymd);
AjaxResult hrR = remoteOpenService.GetHrPostInfo();
log.info("更新岗位-结果:"+ hrR.get("data"));
List<HRPostInfo> infoList = new ArrayList<HRPostInfo>();
if((int)hrR.get("code")==200){
//code=200 获取成功
infoList = JSONArray.parseArray(JSONObject.toJSONString(hrR.get("data")),com.op.system.api.domain.quality.HRPostInfo.class);
log.info(String.valueOf(infoList));
if(!CollectionUtils.isEmpty(infoList)){
this.sysPostInfoFunc(infoList);
}
}else{
log.info("无最新需要更新的岗位数据");
return R.fail("无最新需要更新的岗位数据");
}
}
return R.ok();
}
protected int sysPostInfoFunc(List<HRPostInfo> dtos){
//1.初始化
Date nowDate = DateUtils.getNowDate();
String createBy = "job";
for(HRPostInfo dto:dtos){
dto.setPostCode(dto.getPoscd());
dto.setPostName(dto.getPosnm());
dto.setStatus("0");
dto.setCreateTime(nowDate);
dto.setCreateBy(createBy);
dto.setUpdateBy(createBy);
dto.setUpdateTime(nowDate);
}
//2.求三个表
int n = 0;
List<String> codes = dtos.stream().map(HRPostInfo::getPostCode).collect(Collectors.toList());
//本地已存在
List<String> existCodes = postMapper.getExistCodes(codes);
//本地不存在// 差集 (list2 - list1)
List<String> noExistCodes = codes.stream().filter(item -> !existCodes.contains(item)).collect(Collectors.toList());
//Hr不存在但是本地存在
List<String> hrNoExistCodes = existCodes.stream().filter(item -> !codes.contains(item)).collect(Collectors.toList());
//3.更新
List<HRPostInfo> updates = new ArrayList<>();
for(String existCode:existCodes){
List<HRPostInfo> updates0 = dtos.stream().filter(dto -> dto.getPostCode().equals(existCode)).collect(Collectors.toList());
updates.addAll(updates0);
}
if(!CollectionUtils.isEmpty(updates)){
int batchSize = 100; // 每批次插入的数据量
int toIndex = 0 ;
if (updates != null && updates.size() > 0) {
for (int i = 0; i < updates.size(); i += batchSize) {
toIndex = Math.min(i + batchSize, updates.size());
List<HRPostInfo> subList = updates.subList(i, toIndex);
postMapper.updatePostBatch(subList);
}
}
log.info("岗位更新成功条数:"+ toIndex);
}else{
log.info("岗位更新成功条数0");
}
//4.新增
List<HRPostInfo> adds = new ArrayList<>();
for(String noExistCode:noExistCodes){
List<HRPostInfo> adds0 = dtos.stream().filter(dto -> dto.getPostCode().equals(noExistCode)).collect(Collectors.toList());
adds.addAll(adds0);
}
//序列
Integer sort = postMapper.getMaxSort();
for(HRPostInfo add0 :adds){
sort = sort + 1;
add0.setPostSort(sort);
}
if(!CollectionUtils.isEmpty(adds)){
n = postMapper.addPostBatch(adds);
log.info("岗位新增成功条数:"+ n);
}else{
log.info("岗位新增成功条数0");
}
//5.逻辑删除
if(!CollectionUtils.isEmpty(hrNoExistCodes)){
n = postMapper.deletePostBatch(hrNoExistCodes);
log.info("岗位逻辑删除成功条数:"+ n);
}else{
log.info("岗位逻辑删除成功条数0");
}
return n;
}
}

@ -160,4 +160,75 @@
update sys_dept set del_flag = '2' where dept_id = #{deptId}
</delete>
<select id="getMaxTime" resultType="java.util.Date">
select max(create_time)
from sys_dept
where create_by = 'job'
and status = '0'
and del_flag = '0'
</select>
<select id="getExistCodes" resultType="java.lang.Long">
select dept_id from sys_dept where dept_id in
<foreach collection="list" item="code" open="(" separator="," close=")">
#{code}
</foreach>
</select>
<update id="updateDeptBatch">
<foreach collection="list" item="item" separator=";">
update sys_dept
set
parent_id = #{item.parentId},
dept_name = #{item.deptName},
order_num = #{item.orderNum},
status = #{item.status},
del_flag = #{item.delFlag},
update_by = #{item.updateBy},
update_time = #{item.updateTime}
where
dept_id = #{item.deptId}
</foreach>
</update>
<update id="deleteDeptBatch">
<foreach collection="list" item="item" separator=";">
update sys_post
set
status = '1',
del_flag = '2',
update_by = 'job',
update_time = GETDATE()
where
dept_id = #{item}
</foreach>
</update>
<insert id="addDeptBatch">
insert into sys_dept
(
dept_id,
parent_id,
dept_name,
order_num,
status,
del_flag,
create_by,
create_time
)
VALUES
<foreach collection="list" index="index" item="item" separator=",">
(
#{item.deptId},
#{item.parentId},
#{item.deptName},
'0',
'0',
'0',
#{item.createBy},
#{item.createTime}
)
</foreach>
</insert>
</mapper>

@ -123,4 +123,68 @@
</foreach>
</delete>
<select id="getMaxTime" resultType="java.util.Date">
select max(create_time) from sys_post where create_by = 'job' and status = '0'
</select>
<select id="getExistCodes" resultType="java.lang.String">
select post_code from sys_post where post_code in
<foreach collection="list" item="code" open="(" separator="," close=")">
#{code}
</foreach>
</select>
<select id="getMaxSort" resultType="java.lang.Integer">
select max(post_sort) from sys_post
</select>
<update id="updatePostBatch">
<foreach collection="list" item="item" separator=";">
update sys_post
set
post_name = #{item.postName},
status = '0',
update_by = #{item.updateBy},
update_time = #{item.updateTime}
where
post_id = #{item.postId}
</foreach>
</update>
<update id="deletePostBatch">
<foreach collection="list" item="item" separator=";">
update sys_post
set
status = '1',
update_by = 'job',
update_time = GETDATE()
where
post_code = #{item}
</foreach>
</update>
<insert id="addPostBatch">
insert into sys_post
(
post_code,
post_name,
post_sort,
status,
create_by,
create_time
)
VALUES
<foreach collection="list" index="index" item="item" separator=",">
(
#{item.postCode},
#{item.postName},
#{item.postSort},
#{item.status},
#{item.createBy},
#{item.createTime}
)
</foreach>
</insert>
</mapper>

Loading…
Cancel
Save