ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckResult.java
New file @@ -0,0 +1,52 @@ package com.ycl.platform.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.math.BigDecimal; import java.time.LocalDateTime; import com.ycl.platform.base.AbsEntity; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; /** * 考核结果 * * @author xp * @since 2024-03-07 */ @Data @Accessors(chain = true) @TableName("t_check_result") @ApiModel(value = "CheckResult对象", description = "考核结果") public class CheckResult extends AbsEntity { private static final long serialVersionUID = 1L; @ApiModelProperty("考核对象") @TableField("check_unit_id") private Integer checkUnitId; @ApiModelProperty("考核发布") @TableField("check_publish_id") private Integer checkPublishId; @ApiModelProperty("最终分数") @TableField("check_score") private BigDecimal checkScore; @ApiModelProperty("系统打分") @TableField("system_score") private BigDecimal systemScore; @ApiModelProperty("人工打分") @TableField("manual_score") private BigDecimal manualScore; @ApiModelProperty("考核时间") @TableField("check_time") private LocalDateTime checkTime; } ycl-pojo/src/main/java/com/ycl/platform/domain/form/CheckResultForm.java
New file @@ -0,0 +1,62 @@ package com.ycl.platform.domain.form; import com.ycl.system.domain.group.Update; import com.ycl.system.domain.group.Add; import com.ycl.platform.base.AbsForm; import com.ycl.platform.domain.entity.CheckResult; import java.math.BigDecimal; import java.time.LocalDateTime; import org.springframework.beans.BeanUtils; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import org.springframework.lang.NonNull; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; /** * 考核结果表单 * * @author xp * @since 2024-03-07 */ @Data @Accessors(chain = true) @ApiModel(value = "CheckResult表单", description = "考核结果表单") public class CheckResultForm extends AbsForm { @NotNull(message = "考核对象不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("考核对象") private Integer checkUnitId; @NotNull(message = "考核发布不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("考核发布") private Integer checkPublishId; @NotNull(message = "最终分数不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("最终分数") private BigDecimal checkScore; @NotNull(message = "系统打分不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("系统打分") private BigDecimal systemScore; @NotNull(message = "人工打分不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("人工打分") private BigDecimal manualScore; @NotNull(message = "考核时间不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("考核时间") private LocalDateTime checkTime; public static CheckResult getEntityByForm(@NonNull CheckResultForm form, CheckResult entity) { if(entity == null) { entity = new CheckResult(); } BeanUtils.copyProperties(form, entity); return entity; } } ycl-pojo/src/main/java/com/ycl/platform/domain/form/ManualScoreForm.java
New file @@ -0,0 +1,41 @@ package com.ycl.platform.domain.form; import com.ycl.platform.base.AbsForm; import com.ycl.platform.domain.entity.CheckResult; import com.ycl.system.domain.group.Add; import com.ycl.system.domain.group.Update; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import jakarta.validation.constraints.NotNull; import lombok.Data; import lombok.experimental.Accessors; import org.springframework.beans.BeanUtils; import org.springframework.lang.NonNull; import java.math.BigDecimal; import java.time.LocalDateTime; /** * 人工打分表单 * * @author xp * @since 2024-03-07 */ @Data @Accessors(chain = true) @ApiModel(value = "CheckResult表单", description = "人工打分表单") public class ManualScoreForm extends AbsForm { @NotNull(message = "人工打分不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("人工打分") private BigDecimal manualScore; public static CheckResult getEntityByForm(@NonNull ManualScoreForm form, CheckResult entity) { if(entity == null) { entity = new CheckResult(); } BeanUtils.copyProperties(form, entity); return entity; } } ycl-pojo/src/main/java/com/ycl/platform/domain/query/CheckResultQuery.java
New file @@ -0,0 +1,60 @@ package com.ycl.platform.domain.query; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.platform.base.AbsQuery; import java.util.Date; import java.util.List; import java.util.Objects; import org.springframework.lang.NonNull; import jakarta.validation.constraints.NotBlank; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; import utils.DateUtils; /** * 考核结果查询 * * @author xp * @since 2024-03-07 */ @Data @Accessors(chain = true) @ApiModel(value = "CheckResult查询", description = "考核结果查询") public class CheckResultQuery extends AbsQuery { /** * 考核对象 */ private String checkUnitName; /** * 考核频率 */ private String frequency; /** * 考核范围 */ private String examineRange; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date start; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date end; public void setTime() { if (Objects.nonNull(start)) { start = DateUtils.getDayStart(start); } if (Objects.nonNull(end)) { end = DateUtils.getDayEnd(end); } } } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckResultVO.java
New file @@ -0,0 +1,61 @@ package com.ycl.platform.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ycl.platform.base.AbsVo; import com.ycl.platform.domain.entity.CheckResult; import java.math.BigDecimal; import java.util.List; import java.time.LocalDateTime; import org.springframework.lang.NonNull; import org.springframework.beans.BeanUtils; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.experimental.Accessors; /** * 考核结果展示 * * @author xp * @since 2024-03-07 */ @Data @Accessors(chain = true) public class CheckResultVO extends AbsVo { /** 考核对象 */ private Integer checkUnitId; private String checkUnitName; /** 考核 */ private String examineName; /** 考核频率 */ private String frequency; /** 考核范围 */ private String examineRange; /** 最终分数 */ private BigDecimal checkScore; /** 系统打分 */ private BigDecimal systemScore; /** 人工打分 */ private BigDecimal manualScore; /** 考核时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime checkTime; public static CheckResultVO getVoByEntity(@NonNull CheckResult entity, CheckResultVO vo) { if(vo == null) { vo = new CheckResultVO(); } BeanUtils.copyProperties(entity, vo); return vo; } } ycl-server/src/main/java/com/ycl/platform/controller/CheckResultController.java
New file @@ -0,0 +1,82 @@ package com.ycl.platform.controller; import com.ycl.platform.domain.form.ManualScoreForm; import com.ycl.system.domain.group.Update; import com.ycl.system.domain.group.Add; import org.springframework.validation.annotation.Validated; import lombok.RequiredArgsConstructor; import java.util.List; import org.springframework.validation.annotation.Validated; import jakarta.validation.constraints.NotEmpty; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import com.ycl.platform.service.CheckResultService; import com.ycl.system.Result; import com.ycl.platform.domain.form.CheckResultForm; import com.ycl.platform.domain.query.CheckResultQuery; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; /** * 考核结果 前端控制器 * * @author xp * @since 2024-03-07 */ @Validated @RequiredArgsConstructor @Api(value = "考核结果", tags = "考核结果管理") @RestController @RequestMapping("/check-result") public class CheckResultController { private final CheckResultService checkResultService; @PostMapping @ApiOperation(value = "添加", notes = "添加") public Result add(@RequestBody @Validated(Add.class) CheckResultForm form) { return checkResultService.add(form); } @PutMapping @ApiOperation(value = "修改", notes = "修改") public Result update(@RequestBody @Validated(Update.class) CheckResultForm form) { return checkResultService.update(form); } @DeleteMapping("/{id}") @ApiOperation(value = "ID删除", notes = "ID删除") public Result removeById(@PathVariable("id") String id) { return checkResultService.removeById(id); } @DeleteMapping("/batch") @ApiOperation(value = "批量删除", notes = "批量删除") public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) { return checkResultService.remove(ids); } @PostMapping("/page") @ApiOperation(value = "分页", notes = "分页") public Result page(@RequestBody CheckResultQuery query) { return checkResultService.page(query); } @GetMapping("/{id}") @ApiOperation(value = "详情", notes = "详情") public Result detail(@PathVariable("id") String id) { return checkResultService.detail(id); } @GetMapping("/list") @ApiOperation(value = "列表", notes = "列表") public Result list() { return checkResultService.all(); } @PostMapping("/manual-score") @ApiOperation(value = "人工打分", notes = "人工打分") public Result manualScore(@RequestBody ManualScoreForm form) { return checkResultService.manualScore(form); } } ycl-server/src/main/java/com/ycl/platform/mapper/CheckResultMapper.java
New file @@ -0,0 +1,29 @@ package com.ycl.platform.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ycl.platform.domain.entity.CheckResult; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.platform.domain.query.CheckResultQuery; import com.ycl.platform.domain.vo.CheckResultVO; import com.ycl.platform.domain.form.CheckResultForm; import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * 考核结果 Mapper 接口 * * @author xp * @since 2024-03-07 */ @Mapper public interface CheckResultMapper extends BaseMapper<CheckResult> { /** * 分页 * @param page * @param query */ Page page(IPage page, @Param("query") CheckResultQuery query); } ycl-server/src/main/java/com/ycl/platform/service/CheckResultService.java
New file @@ -0,0 +1,73 @@ package com.ycl.platform.service; import com.ycl.platform.domain.entity.CheckResult; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.platform.domain.form.ManualScoreForm; import com.ycl.system.Result; import com.ycl.platform.domain.form.CheckResultForm; import com.ycl.platform.domain.query.CheckResultQuery; import java.util.List; /** * 考核结果 服务类 * * @author xp * @since 2024-03-07 */ public interface CheckResultService extends IService<CheckResult> { /** * 添加 * @param form * @return */ Result add(CheckResultForm form); /** * 修改 * @param form * @return */ Result update(CheckResultForm form); /** * 批量删除 * @param ids * @return */ Result remove(List<String> ids); /** * id删除 * @param id * @return */ Result removeById(String id); /** * 分页查询 * @param query * @return */ Result page(CheckResultQuery query); /** * 根据id查找 * @param id * @return */ Result detail(String id); /** * 列表 * @return */ Result all(); /** * 人工打分 * @param form * @return */ Result manualScore(ManualScoreForm form); } ycl-server/src/main/java/com/ycl/platform/service/impl/CheckResultServiceImpl.java
New file @@ -0,0 +1,154 @@ package com.ycl.platform.service.impl; import com.ycl.exception.ServiceException; import com.ycl.platform.domain.entity.CheckResult; import com.ycl.platform.domain.form.ManualScoreForm; import com.ycl.platform.mapper.CheckResultMapper; import com.ycl.platform.service.CheckResultService; import com.ycl.system.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.form.CheckResultForm; import com.ycl.platform.domain.vo.CheckResultVO; import com.ycl.platform.domain.query.CheckResultQuery; import java.util.List; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.system.page.PageUtil; import org.springframework.stereotype.Service; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.beans.BeanUtils; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; import java.util.ArrayList; import java.util.Objects; import java.util.stream.Collectors; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import lombok.RequiredArgsConstructor; import org.springframework.util.StringUtils; /** * 考核结果 服务实现类 * * @author xp * @since 2024-03-07 */ @Service @RequiredArgsConstructor public class CheckResultServiceImpl extends ServiceImpl<CheckResultMapper, CheckResult> implements CheckResultService { private final CheckResultMapper checkResultMapper; /** * 添加 * @param form * @return */ @Override public Result add(CheckResultForm form) { CheckResult entity = CheckResultForm.getEntityByForm(form, null); if(baseMapper.insert(entity) > 0) { return Result.ok("添加成功"); } return Result.error("添加失败"); } /** * 修改 * @param form * @return */ @Override public Result update(CheckResultForm form) { CheckResult entity = baseMapper.selectById(form.getId()); // 为空抛IllegalArgumentException,做全局异常处理 Assert.notNull(entity, "记录不存在"); BeanUtils.copyProperties(form, entity); if (baseMapper.updateById(entity) > 0) { return Result.ok("修改成功"); } return Result.error("修改失败"); } /** * 批量删除 * @param ids * @return */ @Override public Result remove(List<String> ids) { if(baseMapper.deleteBatchIds(ids) > 0) { return Result.ok("删除成功"); } return Result.error("删除失败"); } /** * id删除 * @param id * @return */ @Override public Result removeById(String id) { if(baseMapper.deleteById(id) > 0) { return Result.ok("删除成功"); } return Result.error("删除失败"); } /** * 分页查询 * @param query * @return */ @Override public Result page(CheckResultQuery query) { query.setTime(); IPage page = PageUtil.getPage(query, CheckResult.class); baseMapper.page(page, query); return Result.ok().data(page.getRecords()).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(String id) { CheckResult entity = baseMapper.selectById(id); Assert.notNull(entity, "记录不存在"); CheckResultVO vo = CheckResultVO.getVoByEntity(entity, null); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List<CheckResult> entities = baseMapper.selectList(null); List<CheckResultVO> vos = entities.stream() .map( entity -> CheckResultVO.getVoByEntity(entity, null) ) .collect(Collectors.toList()); return Result.ok().data(vos); } @Override public Result manualScore(ManualScoreForm form) { CheckResult checkResult = baseMapper.selectById(form.getId()); if (Objects.isNull(checkResult)) { throw new ServiceException("考核结果不存在"); } checkResult.setManualScore(form.getManualScore()); checkResult.setCheckScore(form.getManualScore().add(checkResult.getSystemScore())); baseMapper.updateById(checkResult); return Result.ok(); } } ycl-server/src/main/resources/mapper/zgyw/CheckResultMapper.xml
New file @@ -0,0 +1,52 @@ <?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.ycl.platform.mapper.CheckResultMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.CheckResultVO"> <result column="id" property="id" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="unit_name" property="checkUnitName" /> <result column="examine_name" property="examineName" /> <result column="check_score" property="checkScore" /> <result column="system_score" property="systemScore" /> <result column="manual_score" property="manualScore" /> <result column="check_time" property="checkTime" /> <result column="frequency" property="frequency" /> <result column="examine_range" property="examineRange" /> </resultMap> <select id="page" resultMap="BaseResultMap"> SELECT tcr.id, tyu.unit_name, tcp.examine_name, tcp.examine_range, tcp.frequency, tcr.check_time, tcr.check_score, tcr.system_score, tcr.manual_score FROM t_check_result tcr INNER JOIN t_check_publish tcp ON tcr.check_publish_id = tcp.id INNER JOIN t_yw_unit tyu ON tcr.check_unit_id = tyu.id <where> AND tcr.deleted = 0 <if test="query.checkUnitName != null and query.checkUnitName != ''"> AND tyu.unit_name like concat('%', #{query.checkUnitName}, '%') </if> <if test="query.frequency != null and query.frequency != ''"> AND tcp.frequency = #{query.frequency} </if> <if test="query.frequency != null and query.frequency != ''"> AND tcp.examine_range = #{query.examineRange} </if> <if test="query.start != null and query.end != null"> AND tcr.check_time BETWEEN #{query.start} AND #{query.end} </if> </where> </select> </mapper>