Crunchy
2024-05-08 f2aec44685466b0c514bffa7db4a2d0db1a7f28c
2024-5-8 绩效管理-班次后端开发完成
已修改3个文件
已添加8个文件
342 ■■■■■ 文件已修改
performance-server/pom.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/controller/PerformanceShiftController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/dto/PerformanceShiftAddDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/pojo/PerformanceShift.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/service/PerformanceShiftService.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/pom.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
performance-server/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>performance-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>performance-server</name>
    <description>performance-server</description>
    <parent>
        <artifactId>mom</artifactId>
        <groupId>com.yuanchu.mom</groupId>
        <version>1.0.0</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>com.yuanchu.mom</groupId>
            <artifactId>framework</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.yuanchu.mom</groupId>
            <artifactId>user-server</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
performance-server/src/main/java/com/yuanchu/mom/controller/PerformanceShiftController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.dto.PerformanceShiftAddDto;
import com.yuanchu.mom.service.PerformanceShiftService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
/**
 * <p>
 * ç»©æ•ˆç®¡ç†-班次 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-05-08 09:12:04
 */
@Api(tags = "绩效管理-班次")
@RestController
@RequestMapping("/performanceShift")
public class PerformanceShiftController {
    @Autowired
    private PerformanceShiftService performanceShiftService;
    @ApiOperation(value = "绩效管理-班次-排班")
    @PostMapping("add")
    public Result<?> performanceShiftAdd(@RequestBody PerformanceShiftAddDto performanceShiftAddDto) {
        performanceShiftService.performanceShiftAdd(performanceShiftAddDto);
        return Result.success();
    }
    @ApiOperation(value = "绩效管理-班次-分页查询")
    @GetMapping("page")
    public Result<?> performanceShiftPage(Integer size, Integer current, LocalDateTime time, String userName, String laboratory) {
        return Result.success(performanceShiftService.performanceShiftPage(new Page<>(current, size), time, userName, laboratory));
    }
    @ApiOperation(value = "绩效管理-班次-班次状态修改")
    @GetMapping("update/{id}")
    public Result<?> performanceShiftUpdate(String shift, @PathVariable("id") Integer id) {
        performanceShiftService.performanceShiftUpdate(shift, id);
        return Result.success();
    }
}
performance-server/src/main/java/com/yuanchu/mom/dto/PerformanceShiftAddDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class PerformanceShiftAddDto {
    @ApiModelProperty("班次")
    private String shift;
    @ApiModelProperty("员工id")
    private Integer userId;
    @ApiModelProperty("开始周次")
    private LocalDateTime startWeek;
    @ApiModelProperty("结束周次")
    private LocalDateTime endWeek;
}
performance-server/src/main/java/com/yuanchu/mom/mapper/PerformanceShiftMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.pojo.PerformanceShift;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.data.repository.query.Param;
import java.time.LocalDateTime;
import java.util.Map;
/**
 * <p>
 * ç»©æ•ˆç®¡ç†-班次 Mapper æŽ¥å£
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-05-08 09:12:04
 */
public interface PerformanceShiftMapper extends BaseMapper<PerformanceShift> {
    IPage<Map<String, Object>> performanceShiftPage(
            Page<Object> page,
            @Param("time") LocalDateTime time,
            @Param("userName") String userName,
            @Param("laboratory") String laboratory
    );
}
performance-server/src/main/java/com/yuanchu/mom/pojo/PerformanceShift.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 * ç»©æ•ˆç®¡ç†-班次
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-05-08 09:12:04
 */
@Data
@TableName("performance_shift")
@ApiModel(value = "PerformanceShift对象", description = "绩效管理-班次")
public class PerformanceShift implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键ID")
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("班次")
    private String shift;
    @ApiModelProperty("员工id")
    private Integer userId;
    @ApiModelProperty("排班日期")
    private LocalDateTime workTime;
    @ApiModelProperty("创建人Id")
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @ApiModelProperty("创建日期")
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @ApiModelProperty("更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}
performance-server/src/main/java/com/yuanchu/mom/service/PerformanceShiftService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.dto.PerformanceShiftAddDto;
import com.yuanchu.mom.pojo.PerformanceShift;
import java.time.LocalDateTime;
import java.util.Map;
/**
 * <p>
 * ç»©æ•ˆç®¡ç†-班次 æœåŠ¡ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-05-08 09:12:04
 */
public interface PerformanceShiftService extends IService<PerformanceShift> {
    void performanceShiftAdd(PerformanceShiftAddDto performanceShiftAddDto);
    IPage<Map<String, Object>> performanceShiftPage(Page<Object> page, LocalDateTime time, String userName, String laboratory);
    void performanceShiftUpdate(String shift, Integer id);
}
performance-server/src/main/java/com/yuanchu/mom/service/impl/PerformanceShiftServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.dto.PerformanceShiftAddDto;
import com.yuanchu.mom.mapper.PerformanceShiftMapper;
import com.yuanchu.mom.pojo.Enums;
import com.yuanchu.mom.pojo.PerformanceShift;
import com.yuanchu.mom.service.EnumService;
import com.yuanchu.mom.service.PerformanceShiftService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * ç»©æ•ˆç®¡ç†-班次 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author æ±Ÿè‹éµ·é›ç½‘络科技有限公司
 * @since 2024-05-08 09:12:04
 */
@Service
public class PerformanceShiftServiceImpl extends ServiceImpl<PerformanceShiftMapper, PerformanceShift> implements PerformanceShiftService {
    @Autowired
    private EnumService enumService;
    @Override
    public void performanceShiftAdd(PerformanceShiftAddDto performanceShiftAddDto) {
        List<LocalDateTime> datesBetween = getLocalDateTimesBetween(performanceShiftAddDto.getStartWeek(), performanceShiftAddDto.getEndWeek());
        for (LocalDateTime date : datesBetween) {
            PerformanceShift performanceShift = new PerformanceShift();
            performanceShift.setShift(performanceShiftAddDto.getShift());
            performanceShift.setUserId(performanceShiftAddDto.getUserId());
            performanceShift.setWorkTime(date);
            baseMapper.insert(performanceShift);
        }
    }
    @Override
    public IPage<Map<String, Object>> performanceShiftPage(Page<Object> page, LocalDateTime time, String userName, String laboratory) {
        IPage<Map<String, Object>> mapIPage = baseMapper.performanceShiftPage(page, time, userName, laboratory);
        List<Enums> shiftType = enumService.selectEnumByCategory("班次类型");
        for (Map<String, Object> i : mapIPage.getRecords()) {
            String[] shiftTimes = i.get("shiftTime").toString().split(";");
            int totalAttendance = 0;
            for (Enums enums : shiftType) {
                Integer num = 0;
                for (String shiftTime : shiftTimes) {
                    String[] shiftTimeAndShift = shiftTime.split(":");
                    if (enums.getValue().equals(shiftTimeAndShift[1])) {
                        num++;
                    }
                    // 3:休假;4:请假
                    if (!enums.getValue().equals("3") && enums.getValue().equals("4")) {
                        totalAttendance++;
                    }
                }
                i.put(enums.getLabel(), num);
                i.put("totalAttendance", totalAttendance);
            }
        }
        return mapIPage;
    }
    @Override
    public void performanceShiftUpdate(String shift, Integer id) {
        PerformanceShift performanceShift = new PerformanceShift();
        performanceShift.setId(id);
        performanceShift.setShift(shift);
        baseMapper.updateById(performanceShift);
    }
    // èŽ·å–ä¸¤ä¸ªlocalDateTime的每一天
    public static List<LocalDateTime> getLocalDateTimesBetween(LocalDateTime start, LocalDateTime end) {
        List<LocalDateTime> localDateTimes = new ArrayList<>();
        LocalDate currentDate = start.toLocalDate();
        LocalDateTime currentLocalDateTime = start;
        while (!currentDate.isAfter(end.toLocalDate())) {
            localDateTimes.add(currentLocalDateTime);
            currentLocalDateTime = currentLocalDateTime.plusDays(1);
            currentDate = currentDate.plusDays(1);
        }
        return localDateTimes;
    }
}
performance-server/src/main/resources/mapper/PerformanceShiftMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?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.yuanchu.mom.mapper.PerformanceShiftMapper">
    <select id="performanceShiftPage" resultType="map">
        SELECT
            s.id,
            if(u.department is not null and u.department != '', CONCAT(u.name, '(', u.department, ')'), u.name) name,
            GROUP_CONCAT(s.work_time, ':', s.shift SEPARATOR ';') AS shiftTime
        FROM performance_shift s
                 LEFT JOIN user u on u.id = s.user_id
        GROUP BY u.id
        <where>
            <if test="time != null and time != ''">
                and s.work_time in DATE_FORMAT(#{time}, '%Y-%m-%d')
            </if>
            <if test="userName != null and userName != ''">
                and s.name concat('%', #{userName}, '%')
            </if>
            <if test="laboratory != null and laboratory != ''"></if>
        </where>
    </select>
</mapper>
pom.xml
@@ -21,6 +21,7 @@
        <module>system-run</module>
        <module>cnas-server</module>
        <module>inspect-server</module>
        <module>performance-server</module>
    </modules>
    <properties>
system-run/pom.xml
@@ -40,6 +40,12 @@
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.yuanchu.mom</groupId>
            <artifactId>performance-server</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!--druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
@@ -1,6 +1,7 @@
package com.yuanchu.mom;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.core.exceptions.MybatisPlusException;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
@@ -19,7 +20,7 @@
    public static String database_username = "root";
    public static String database_password= "123456";
    public static String author = "江苏鵷雏网络科技有限公司";
    public static String model_name = "/framework"; // å¦‚果为分布式填子模块名称,如果不是分布式为空即可
    public static String model_name = "/performance-server"; // å¦‚果为分布式填子模块名称,如果不是分布式为空即可
    public static String setParent = "com.yuanchu.mom"; // åŒ…路径
    public static void main(String[] args) {
        String projectPath = System.getProperty("user.dir");
@@ -52,13 +53,16 @@
                            .logicDeleteColumnName("state")
                            .addTableFills(
                                    new Column("create_time", FieldFill.INSERT),
                                    new Column("update_time", FieldFill.INSERT_UPDATE)
                                    new Column("update_time", FieldFill.INSERT_UPDATE),
                                    new Column("create_user", FieldFill.INSERT),
                                    new Column("update_user", FieldFill.INSERT_UPDATE)
                            )
                            .idType(IdType.AUTO) // è‡ªå¢žä¸»é”®
                            // Mapper ç­–略配置
                            .mapperBuilder()
                            .enableFileOverride() // è¦†ç›–已生成Mapper文件
                            .enableBaseResultMap() // è‡ªåŠ¨ç”ŸæˆresultMap
                            // Service ç­–略配置
                            .serviceBuilder()
                            .formatServiceFileName("%sService") //格式化 service æŽ¥å£æ–‡ä»¶åç§°ï¼Œ%s进行匹配表名,如 UserService