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