Alan
2021-02-16 9757ea8cf9277da966a76b4fcf5a4e9d1bcb169a
崗位管理提交
6个文件已添加
402 ■■■■■ 已修改文件
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/Position.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/PositionController.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/mapper/PositionMapper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/IPositionService.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/PositionServiceImpl.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-server/febs-server-system/src/main/resources/mapper/PositionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/Position.java
New file
@@ -0,0 +1,80 @@
package cc.mrbird.febs.common.core.entity.system;
import java.io.Serializable;
import java.util.Date;
import cc.mrbird.febs.common.core.annotation.FieldInfo;
import cc.mrbird.febs.common.core.utils.DateDeSerializer;
import cc.mrbird.febs.common.core.utils.DateSerializer;
import cc.mrbird.febs.common.core.utils.DateTimeDeserializer;
import cc.mrbird.febs.common.core.utils.DateTimeSerializer;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import lombok.Data;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.Version;
import org.springframework.format.annotation.DateTimeFormat;
/**
*
* name:Position
* package:cc.mrbird.febs.server.system.controller
* description:岗位信息数据表映射实体
*
* @author Alan
* @date 2021-02-16 11:52:53
* @since JDK1.8
*/
@Data
@TableName("t_position")
public class Position implements Serializable{
            @FieldInfo(name = "positionId",type = "bigint",explain = "岗位Id")
            @TableId(value = "positionId")
            private Long positionId=0L;
            @FieldInfo(name = "positionName",type = "varchar",explain = "岗位名称")
            @TableField("positionName")
            private String positionName="";
            @FieldInfo(name = "positionCode",type = "varchar",explain = "岗位编码")
            @TableField("positionCode")
            private String positionCode="";
            @FieldInfo(name = "customerId",type = "bigint",explain = "租户Id")
            @TableField("customerId")
            private Long customerId=0L;
            @FieldInfo(name = "createTime",type = "datetime",explain = "记录创建时间")
            @TableField("createTime")
            @JsonSerialize(using = DateTimeSerializer.class)
            @JsonDeserialize(using = DateTimeDeserializer.class)
            @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
            private Date createTime;
            @FieldInfo(name = "creator",type = "varchar",explain = "记录创建人")
            @TableField("creator")
            private String creator="";
            @FieldInfo(name = "modifyTime",type = "datetime",explain = "记录最后更新时间")
            @TableField("modifyTime")
            @JsonSerialize(using = DateTimeSerializer.class)
            @JsonDeserialize(using = DateTimeDeserializer.class)
            @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
            private Date modifyTime;
            @FieldInfo(name = "modifier",type = "varchar",explain = "记录最后更新人")
            @TableField("modifier")
            private String modifier="";
            @FieldInfo(name = "delFlag",type = "bit",explain = "记录删除标志。0-未删除 1-已删除,默认0")
            @TableField("delFlag")
            private Integer delFlag=0;
            @FieldInfo(name = "version",type = "int",explain = "记录版本号,用来进行乐观锁控制")
            @TableField("version")
            @Version
            private Integer version=0;
}
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/PositionController.java
New file
@@ -0,0 +1,100 @@
package cc.mrbird.febs.server.system.controller;
import cc.mrbird.febs.common.core.entity.FebsResponse;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.entity.system.Position;
import cc.mrbird.febs.common.core.exception.FebsException;
import cc.mrbird.febs.common.core.utils.FebsUtil;
import cc.mrbird.febs.server.system.service.IPositionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Map;
/**
*
* name:Position
* package:cc.mrbird.febs.server.system.controller
* description:岗位信息控制器
*
* @author Alan
* @date 2021-02-16 11:52:53
* @since JDK1.8
*/
@Api(tags = "岗位信息管理接口")
@Slf4j
@Validated
@RestController
@RequestMapping("position")
@RequiredArgsConstructor
public class PositionController {
private final IPositionService positionService;
@ApiOperation(value = "岗位信息翻页列表")
@GetMapping
@PreAuthorize("hasAuthority('position:list')")
public FebsResponse getAllPositions(QueryRequest request,Position position) {
    Map
            <String, Object> dataTable = FebsUtil.getDataTable(this.positionService.findPositions(request, position));
    return new FebsResponse().data(dataTable);
}
@ApiOperation(value = "岗位信息增加")
@PostMapping
@PreAuthorize("hasAuthority('position:add')")
public void addPosition(@Valid Position position) throws FebsException {
try {
this.positionService.createPosition(position);
} catch (Exception e) {
String message = "新增岗位信息失败";
log.error(message, e);
throw new FebsException(message);
}
}
@ApiOperation(value = "岗位信息物理删除")
@DeleteMapping
public void deletePosition(Position position) throws FebsException {
try {
this.positionService.deletePosition(position);
} catch (Exception e) {
String message = "删除岗位信息失败";
log.error(message, e);
throw new FebsException(message);
}
}
@ApiOperation(value = "岗位信息逻辑删除")
@DeleteMapping("{ids}")
public void logicDeletePosition(@PathVariable("ids") String ids) throws FebsException {
try {
this.positionService.logicDelPosition(ids);
} catch (Exception e) {
String message = "逻辑删除岗位信息失败";
log.error(message, e);
throw new FebsException(message);
}
}
@ApiOperation(value = "岗位信息修改")
@PutMapping
public void updatePosition(Position position) throws FebsException {
try {
this.positionService.updatePosition(position);
} catch (Exception e) {
String message = "修改岗位信息失败";
log.error(message, e);
throw new FebsException(message);
}
}
}
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/mapper/PositionMapper.java
New file
@@ -0,0 +1,42 @@
package cc.mrbird.febs.server.system.mapper;
import cc.mrbird.febs.common.core.entity.system.Position;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import java.util.List;
/**
*
* name:Position
* package:cc.mrbird.febs.server.system.controller
* description:岗位信息实体Mapper
*
* @author Alan
* @date 2021-02-16 11:52:53
* @since JDK1.8
*/
public interface PositionMapper extends BaseMapper<Position> {
/**
*
* 根据Id批量逻辑删除记录
*
* date Alan
* @author: 2021-02-16 11:52:53
* @param list 待删除Id
* @param operatorId 操作员Id
* @return void
*/
@Update("<script> " +
    " UPDATE t_position SET delFlag = 1,\n" +
    " modifyTime = NOW(),\n" +
    " modifier = , \n" +
    " version = version+1 \n" +
    " WHERE badId IN \n" +
    "        <foreach item=\"delId\" collection=\"list\" open=\"(\" close=\")\" separator=\",\">\n" +
    "            \n" +
    "        </foreach>\n" +
    "</script>")
void logicDeleteByIds(@Param("list") List<String> list, @Param("operatorId") String operatorId);
}
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/IPositionService.java
New file
@@ -0,0 +1,70 @@
package cc.mrbird.febs.server.system.service;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.entity.system.Position;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
*
* name:Position
* package:cc.mrbird.febs.server.system.controller
* description:岗位信息服务接口
*
* @author Alan
* @date 2021-02-16 11:52:53
* @since JDK1.8
*/
public interface IPositionService extends IService<Position> {
/**
* 查询(分页)
*
* @param request QueryRequest
* @param position position
* @return IPage<Position>
*/
IPage<Position> findPositions(QueryRequest request, Position position);
/**
* 查询(所有)
*
* @param position position
* @return List<Position>
*/
List<Position> findPositions(Position position);
/**
* 新增
*
* @param position position
*/
void createPosition(Position position);
/**
* 修改
*
* @param position position
*/
void updatePosition(Position position);
/**
* 删除
*
* @param position position
*/
void deletePosition(Position position);
/**
*
* 根据Id批量逻辑删除记录
*
* date 2021-01-28 10:48
* @author: luoyibo
* @param ids 待删除Id
* @return void
*/
void logicDelPosition(String ids);
}
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/PositionServiceImpl.java
New file
@@ -0,0 +1,105 @@
package cc.mrbird.febs.server.system.service.impl;
import cc.mrbird.febs.common.core.constant.ModuleCode;
import cc.mrbird.febs.common.core.entity.system.Position;
import cc.mrbird.febs.server.system.mapper.PositionMapper;
import cc.mrbird.febs.server.system.service.IPositionService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.annotation.Propagation;
import lombok.RequiredArgsConstructor;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.utils.FebsUtil;
import cc.mrbird.febs.common.core.utils.SequenceUtil;
import java.util.*;
/**
*
* name:Position
* package:cc.mrbird.febs.server.system.controller
* description:岗位信息服务接口实现
*
* @author Alan
* @date 2021-02-16 11:52:53
* @since JDK1.8
*/
@Service
@RequiredArgsConstructor
@Transactional(propagation = Propagation.SUPPORTS, readOnly = true)
class PositionServiceImpl extends ServiceImpl<PositionMapper, Position> implements IPositionService {
private final PositionMapper positionMapper;
private final String operatorId = Optional.ofNullable(FebsUtil.getCurrentUser())
.map(u -> u.getUserId().toString())
.orElse("1");
@Override
public IPage<Position> findPositions(QueryRequest request, Position position) {
LambdaQueryWrapper<Position> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Position::getDelFlag, 0);
if(StringUtils.isNotBlank(position.getPositionName())){
    queryWrapper.like(Position::getPositionName, position.getPositionName());
}
    queryWrapper.orderByDesc(Boolean.parseBoolean("createTime"));
Page<Position> page = new Page<>(request.getPageNum(), request.getPageSize());
return this.page(page, queryWrapper);
}
@Override
public List<Position> findPositions(Position position) {
LambdaQueryWrapper<Position> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Position::getDelFlag, 0);
return this.baseMapper.selectList(queryWrapper);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void createPosition(Position position) {
position.setCreator(operatorId);
position.setModifier(operatorId);
this.save(position);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void updatePosition(Position position) {
Position dbData = this.getById(position.getPositionId());
position.setCreateTime(dbData.getCreateTime());
position.setCreator(dbData.getCreator());
position.setDelFlag(dbData.getDelFlag());
position.setModifyTime(new Date());
position.setModifier(operatorId);
this.saveOrUpdate(position);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deletePosition(Position position) {
LambdaQueryWrapper<Position> wrapper = new LambdaQueryWrapper<>();
    wrapper.eq(Position::getPositionId, position.getPositionId());
// TODO 设置删除条件
this.remove(wrapper);
}
/**
*
* 根据Id批量逻辑删除记录
*
* date 2021-01-28 10:48
* @author: luoyibo
* @param ids 待删除Id
* @return void
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void logicDelPosition(String ids) {
    String[] str = ids.split(",");
    List<String> list = new ArrayList<>(Arrays.asList(str));
    positionMapper.logicDeleteByIds(list, operatorId);
    }
}
febs-server/febs-server-system/src/main/resources/mapper/PositionMapper.xml
New file
@@ -0,0 +1,5 @@
<?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="cc.mrbird.febs.server.system.mapper.PositionMapper">
</mapper>