ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckTemplate.java
New file @@ -0,0 +1,46 @@ package com.ycl.platform.domain.entity; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; 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-06 */ @Data @Accessors(chain = true) @TableName("t_check_template") @ApiModel(value = "CheckTemplate对象", description = "考核模板") public class CheckTemplate extends AbsEntity { private static final long serialVersionUID = 1L; /** * 模板名称 */ @TableField("template_name") private String templateName; @ApiModelProperty("调整系数") @TableField("adjust_coefficient") private Integer adjustCoefficient; /** * 调整系数的方式:乘除 */ @TableField("adjust_way") private String adjustWay; @ApiModelProperty("状态") @TableField("status") private String status; } ycl-pojo/src/main/java/com/ycl/platform/domain/form/CheckTemplateForm.java
New file @@ -0,0 +1,90 @@ 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.CheckTemplate; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; import jakarta.validation.constraints.NotEmpty; 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-06 */ @Data @Accessors(chain = true) @ApiModel(value = "CheckTemplate表单", description = "考核模板表单") public class CheckTemplateForm extends AbsForm { @NotNull(message = "模板名称不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("模板名称") private String templateName; @NotNull(message = "调整系数不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("调整系数") private BigDecimal adjustCoefficient; @NotNull(message = "调整系数计算方式不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("调整系数计算方式") private String adjustWay; @NotBlank(message = "状态不能为空", groups = {Add.class, Update.class}) @ApiModelProperty("状态") private String status; @NotEmpty(message = "考核规则不能为空") @ApiModelProperty("考核规则") private List<RuleItem> ruleList; public static CheckTemplate getEntityByForm(@NonNull CheckTemplateForm form, CheckTemplate entity) { if(entity == null) { entity = new CheckTemplate(); } BeanUtils.copyProperties(form, entity); return entity; } public class RuleItem { /** * 规则 */ private Integer ruleId; /** * 权重 */ private BigDecimal weight; public Integer getRuleId() { return ruleId; } public void setRuleId(Integer ruleId) { this.ruleId = ruleId; } public BigDecimal getWeight() { return weight; } public void setWeight(BigDecimal weight) { this.weight = weight; } } } ycl-pojo/src/main/java/com/ycl/platform/domain/query/CheckTemplateQuery.java
New file @@ -0,0 +1,43 @@ 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 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; /** * 考核模板查询 * * @author xp * @since 2024-03-06 */ @Data @Accessors(chain = true) @ApiModel(value = "CheckTemplate查询", description = "考核模板查询") public class CheckTemplateQuery extends AbsQuery { /** * 模板名称 */ private String templateName; /** * 状态 */ private String status; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date start; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date end; } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/CheckTemplateVO.java
New file @@ -0,0 +1,44 @@ package com.ycl.platform.domain.vo; import com.ycl.platform.base.AbsVo; import com.ycl.platform.domain.entity.CheckTemplate; 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-06 */ @Data @Accessors(chain = true) public class CheckTemplateVO extends AbsVo { /** 模板名称 */ private String templateName; /** 调整系数 */ private Integer adjustCoefficient; /** 调整系数的方式:乘除 */ private String adjustWay; /** 状态 */ private String status; public static CheckTemplateVO getVoByEntity(@NonNull CheckTemplate entity, CheckTemplateVO vo) { if(vo == null) { vo = new CheckTemplateVO(); } BeanUtils.copyProperties(entity, vo); return vo; } } ycl-server/src/main/java/com/ycl/platform/controller/CheckTemplateController.java
New file @@ -0,0 +1,75 @@ package com.ycl.platform.controller; 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.CheckTemplateService; import com.ycl.system.Result; import com.ycl.platform.domain.form.CheckTemplateForm; import com.ycl.platform.domain.query.CheckTemplateQuery; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; /** * 考核模板 前端控制器 * * @author xp * @since 2024-03-06 */ @Validated @RequiredArgsConstructor @Api(value = "考核模板", tags = "考核模板管理") @RestController @RequestMapping("/check-template") public class CheckTemplateController { private final CheckTemplateService checkTemplateService; @PostMapping @ApiOperation(value = "添加", notes = "添加") public Result add(@RequestBody @Validated(Add.class) CheckTemplateForm form) { return checkTemplateService.add(form); } @PutMapping @ApiOperation(value = "修改", notes = "修改") public Result update(@RequestBody @Validated(Update.class) CheckTemplateForm form) { return checkTemplateService.update(form); } @DeleteMapping("/{id}") @ApiOperation(value = "ID删除", notes = "ID删除") public Result removeById(@PathVariable("id") String id) { return checkTemplateService.removeById(id); } @DeleteMapping("/batch") @ApiOperation(value = "批量删除", notes = "批量删除") public Result remove(@RequestBody @NotEmpty(message = "请选择数据") List<String> ids) { return checkTemplateService.remove(ids); } @PostMapping("/page") @ApiOperation(value = "分页", notes = "分页") public Result page(@RequestBody CheckTemplateQuery query) { return checkTemplateService.page(query); } @GetMapping("/{id}") @ApiOperation(value = "详情", notes = "详情") public Result detail(@PathVariable("id") String id) { return checkTemplateService.detail(id); } @GetMapping("/list") @ApiOperation(value = "列表", notes = "列表") public Result list() { return checkTemplateService.all(); } } ycl-server/src/main/java/com/ycl/platform/mapper/CheckTemplateMapper.java
New file @@ -0,0 +1,19 @@ package com.ycl.platform.mapper; import com.ycl.platform.domain.entity.CheckTemplate; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ycl.platform.domain.vo.CheckTemplateVO; import com.ycl.platform.domain.form.CheckTemplateForm; import java.util.List; import org.apache.ibatis.annotations.Mapper; /** * 考核模板 Mapper 接口 * * @author xp * @since 2024-03-06 */ @Mapper public interface CheckTemplateMapper extends BaseMapper<CheckTemplate> { } ycl-server/src/main/java/com/ycl/platform/service/CheckTemplateService.java
New file @@ -0,0 +1,65 @@ package com.ycl.platform.service; import com.ycl.platform.domain.entity.CheckTemplate; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.system.Result; import com.ycl.platform.domain.form.CheckTemplateForm; import com.ycl.platform.domain.query.CheckTemplateQuery; import java.util.List; /** * 考核模板 服务类 * * @author xp * @since 2024-03-06 */ public interface CheckTemplateService extends IService<CheckTemplate> { /** * 添加 * @param form * @return */ Result add(CheckTemplateForm form); /** * 修改 * @param form * @return */ Result update(CheckTemplateForm form); /** * 批量删除 * @param ids * @return */ Result remove(List<String> ids); /** * id删除 * @param id * @return */ Result removeById(String id); /** * 分页查询 * @param query * @return */ Result page(CheckTemplateQuery query); /** * 根据id查找 * @param id * @return */ Result detail(String id); /** * 列表 * @return */ Result all(); } ycl-server/src/main/java/com/ycl/platform/service/impl/CheckRuleServiceImpl.java
@@ -1,5 +1,6 @@ package com.ycl.platform.service.impl; import com.ycl.platform.base.BaseSelect; import com.ycl.platform.domain.entity.CheckRule; import com.ycl.platform.domain.entity.YwUnit; import com.ycl.platform.mapper.CheckRuleMapper; @@ -144,9 +145,14 @@ @Override public Result all() { List<CheckRule> entities = baseMapper.selectList(null); List<CheckRuleVO> vos = entities.stream() List<BaseSelect> vos = entities.stream() .map( entity -> CheckRuleVO.getVoByEntity(entity, null) entity -> { BaseSelect vo = new BaseSelect(); vo.setId(entity.getId()); vo.setValue(entity.getRuleName()); return vo; } ) .collect(Collectors.toList()); return Result.ok().data(vos); ycl-server/src/main/java/com/ycl/platform/service/impl/CheckTemplateServiceImpl.java
New file @@ -0,0 +1,154 @@ package com.ycl.platform.service.impl; import com.ycl.platform.domain.entity.CheckTemplate; import com.ycl.platform.domain.entity.YwUnit; import com.ycl.platform.mapper.CheckTemplateMapper; import com.ycl.platform.service.CheckTemplateService; import com.ycl.system.Result; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.platform.domain.form.CheckTemplateForm; import com.ycl.platform.domain.vo.CheckTemplateVO; import com.ycl.platform.domain.query.CheckTemplateQuery; import java.util.List; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.system.page.PageUtil; import com.ycl.utils.DateUtils; 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-06 */ @Service @RequiredArgsConstructor public class CheckTemplateServiceImpl extends ServiceImpl<CheckTemplateMapper, CheckTemplate> implements CheckTemplateService { private final CheckTemplateMapper checkTemplateMapper; /** * 添加 * @param form * @return */ @Override public Result add(CheckTemplateForm form) { CheckTemplate entity = CheckTemplateForm.getEntityByForm(form, null); if(baseMapper.insert(entity) > 0) { return Result.ok("添加成功"); } return Result.error("添加失败"); } /** * 修改 * @param form * @return */ @Override public Result update(CheckTemplateForm form) { CheckTemplate 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(CheckTemplateQuery query) { IPage<CheckTemplate> page = new LambdaQueryChainWrapper<>(baseMapper) .like(StringUtils.hasText(query.getTemplateName()), CheckTemplate::getTemplateName, query.getTemplateName()) .eq(StringUtils.hasText(query.getStatus()), CheckTemplate::getStatus, query.getStatus()) .between(Objects.nonNull(query.getStart()) && Objects.nonNull(query.getEnd()), CheckTemplate::getCreateTime, DateUtils.getDayStart(query.getStart()), DateUtils.getDayEnd(query.getEnd())) .orderByDesc(CheckTemplate::getCreateTime) .page(PageUtil.getPage(query, CheckTemplate.class)); List<CheckTemplateVO> vos = page.getRecords().stream() .map( entity -> CheckTemplateVO.getVoByEntity(entity, null) ) .collect(Collectors.toList()); return Result.ok().data(vos).total(page.getTotal()); } /** * 根据id查找 * @param id * @return */ @Override public Result detail(String id) { CheckTemplate entity = baseMapper.selectById(id); Assert.notNull(entity, "记录不存在"); CheckTemplateVO vo = CheckTemplateVO.getVoByEntity(entity, null); return Result.ok().data(vo); } /** * 列表 * @return */ @Override public Result all() { List<CheckTemplate> entities = baseMapper.selectList(null); List<CheckTemplateVO> vos = entities.stream() .map( entity -> CheckTemplateVO.getVoByEntity(entity, null) ) .collect(Collectors.toList()); return Result.ok().data(vos); } } ycl-server/src/main/resources/mapper/zgyw/CheckRuleMapper.xml
New file @@ -0,0 +1,17 @@ <?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.CheckRuleMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.CheckRuleVO"> <result column="id" property="id" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="rule_name" property="ruleName" /> <result column="rule_detail" property="ruleDetail" /> <result column="video_point_num" property="videoPointNum" /> <result column="vehicle_checkpoint_num" property="vehicleCheckpointNum" /> <result column="face_chceckpoint_num" property="faceChceckpointNum" /> </resultMap> </mapper> ycl-server/src/main/resources/mapper/zgyw/CheckTemplateMapper.xml
New file @@ -0,0 +1,15 @@ <?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.CheckTemplateMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.ycl.platform.domain.vo.CheckTemplateVO"> <result column="id" property="id" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="adjust_coefficient" property="adjustCoefficient" /> <result column="adjust_way" property="adjustWay" /> <result column="status" property="status" /> </resultMap> </mapper>