xiangpei
2024-04-28 786ee0e73509f54805520e911df93841e9148166
点位优化
14个文件已修改
1个文件已添加
252 ■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/base/Cascader.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/system/service/ISysDeptService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/base/AbsForm.java
@@ -3,6 +3,7 @@
import com.ycl.system.domain.group.Update;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
/**
@@ -15,7 +16,7 @@
public abstract class AbsForm {
    @ApiModelProperty(value = "id,修改必传", required = false)
    @NotBlank(message = "请选择数据", groups = {Update.class})
    @NotNull(message = "请选择数据", groups = {Update.class})
    private Integer id;
}
ycl-pojo/src/main/java/com/ycl/platform/base/AbsVo.java
@@ -4,6 +4,7 @@
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * 基础响应
ycl-pojo/src/main/java/com/ycl/platform/base/BaseSelect.java
@@ -15,8 +15,9 @@
    private Integer id;
    /**
     * 值
     * 展示内容
     */
    private String value;
}
ycl-pojo/src/main/java/com/ycl/platform/base/Cascader.java
New file
@@ -0,0 +1,30 @@
package com.ycl.platform.base;
import lombok.Data;
import java.util.List;
/**
 * 级联选择数据格式
 *
 * @author:xp
 * @date:2024/4/28 14:37
 */
@Data
public class Cascader {
    /**
     * 选中
     */
    private Long value;
    /**
     * 显示
     */
    private String label;
    private Long parentId;
    private List<Cascader> Children;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/YwPoint.java
@@ -39,7 +39,7 @@
    @ApiModelProperty("运维单位")
    @TableField(value = "unit_id", updateStrategy = FieldStrategy.IGNORED)
    private Integer unitId;
    private Long unitId;
    @ApiModelProperty("运维状态")
    @TableField("status")
@@ -48,15 +48,17 @@
    @ApiModelProperty("备注")
    @TableField("remark")
    private String remark;
    @ApiModelProperty("运维类型")
    @TableField("category")
    private Short category;
    @ApiModelProperty("上报部门")
    @TableField("dept_id")
    private Long deptId;
    @TableField("point_detail")
    private String pointDetail;
    @TableField("point_tag")
    private String pointTag;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/form/YwPointForm.java
@@ -4,6 +4,7 @@
import com.ycl.system.domain.group.Add;
import com.ycl.platform.base.AbsForm;
import com.ycl.platform.domain.entity.YwPoint;
import jakarta.validation.constraints.NotEmpty;
import org.springframework.beans.BeanUtils;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
@@ -14,6 +15,7 @@
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.List;
/**
 * 运维点位表单
@@ -42,16 +44,22 @@
    @ApiModelProperty("运维单位")
    private Integer unitId;
//    @NotBlank(message = "运维状态不能为空", groups = {Add.class, Update.class})
    @NotNull(message = "监管部门不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("监管部门")
    private Long deptId;
    @NotEmpty(message = "点位标签不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("点位标签")
    private List<String> pointTag;
    @ApiModelProperty("运维状态")
    private String status;
    @ApiModelProperty("备注")
    private String remark;
    private String pointDetail;
//    @NotBlank(message = "备注不能为空", groups = {Add.class, Update.class})
//    @ApiModelProperty("备注")
//    private String remark;
    @ApiModelProperty("类型")
    private Short category;
    public static YwPoint getEntityByForm(@NonNull YwPointForm form, YwPoint entity) {
        if(entity == null) {
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java
@@ -1,6 +1,5 @@
package com.ycl.platform.domain.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import com.ycl.platform.base.AbsVo;
import com.ycl.platform.domain.entity.YwPoint;
@@ -8,8 +7,6 @@
import java.util.List;
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;
@@ -33,7 +30,7 @@
    private LocalDateTime endTime;
    /** 运维单位 */
    private Integer unitId;
    private Long unitId;
    private String unitName;
    /** 运维状态 */
@@ -44,8 +41,14 @@
    private Short category;
    /** 监管部门 */
    private Long deptId;
    private List<Long> deptIds;
    private String deptName;
    private String pointDetail;
    /** 点位标签 */
    private String [] pointTags;
    private String pointTagString;
    public static YwPointVO getVoByEntity(@NonNull YwPoint entity, YwPointVO vo) {
        if(vo == null) {
ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
@@ -1,8 +1,10 @@
package com.ycl.platform.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.ycl.platform.base.BaseSelect;
import com.ycl.platform.domain.entity.YwPoint;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.platform.domain.query.YwPointQuery;
import com.ycl.platform.domain.vo.YwPointVO;
import com.ycl.platform.domain.form.YwPointForm;
import java.util.List;
@@ -27,4 +29,6 @@
     * @return
     */
    List<BaseSelect> selectData(@Param("keyword") String keyword, @Param("unitId") Integer unitId);
    IPage page(IPage<YwPointVO> page, @Param("query") YwPointQuery query);
}
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
@@ -21,6 +21,7 @@
import java.util.List;
import com.ycl.system.entity.SysUser;
import com.ycl.system.mapper.SysDeptMapper;
import com.ycl.system.service.ISysDeptService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -48,11 +49,8 @@
@RequiredArgsConstructor
public class YwPointServiceImpl extends ServiceImpl<YwPointMapper, YwPoint> implements YwPointService {
    private final YwPointMapper ywPointMapper;
    private final ISysDeptService deptService;
    private final SysDeptMapper sysDeptMapper;
    private final YwUnitService unitService;
    private final YwUnitMapper ywUnitMapper;
    private final RegionMapper regionMapper;
    private final YwPeopleMapper ywPeopleMapper;
    /**
@@ -109,16 +107,12 @@
     */
    @Override
    public Result update(YwPointForm form) {
        YwPoint entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        if (baseMapper.updateById(entity) > 0) {
        entity.setPointTag(form.getPointTag().stream().collect(Collectors.joining(",")));
        baseMapper.updateById(entity);
            return Result.ok("修改成功");
        }
        return Result.error("修改失败");
    }
    /**
@@ -154,21 +148,14 @@
     */
    @Override
    public Result page(YwPointQuery query) {
        IPage<YwPoint> page = new LambdaQueryChainWrapper<>(baseMapper)
                .like(StringUtils.hasText(query.getPointName()), YwPoint::getPointName, query.getPointName())
                .orderByDesc(YwPoint::getCreateTime)
                .page(PageUtil.getPage(query, YwPoint.class));
        List<YwPointVO> vos = page.getRecords().stream()
                .map(
                        entity -> YwPointVO.getVoByEntity(entity, null)
                                .setDeptName(deptService.selectDeptById(entity.getDeptId()).getDeptName())
                                .setUnitName(unitService.getById(entity.getUnitId()).getUnitName())
                )
                .collect(Collectors.toList());
        return Result.ok().data(vos).total(page.getTotal());
        IPage<YwPointVO> page = PageUtil.getPage(query, YwPointVO.class);
        baseMapper.page(page, query);
        page.getRecords().stream().forEach(point -> {
            if (StringUtils.hasText(point.getPointTagString())) {
                point.setPointTags(point.getPointTagString().split(","));
            }
        });
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
    /**
@@ -178,10 +165,15 @@
     */
    @Override
    public Result detail(String id) {
        YwPoint entity = baseMapper.selectById(id);
        Assert.notNull(entity, "记录不存在");
        YwPointVO vo = YwPointVO.getVoByEntity(entity, null);
        if (StringUtils.hasText(entity.getPointTag())) {
            vo.setPointTags(entity.getPointTag().split(","));
        }
        if (Objects.nonNull(entity.getDeptId())) {
            vo.setDeptIds(sysDeptMapper.selectParents(entity.getDeptId()));
        }
        return Result.ok().data(vo);
    }
ycl-server/src/main/java/com/ycl/system/controller/SysDeptController.java
@@ -133,5 +133,11 @@
    @ApiOperation(value = "区域下拉列表", notes = "区域下拉列表")
    public Result pullList() {
        return deptService.pullList();
    }
    @GetMapping("/cascader")
    @ApiOperation(value = "部门级联选择数据", notes = "部门级联选择数据")
    public Result cascader() {
        return deptService.cascader();
    }
}
ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
@@ -1,5 +1,6 @@
package com.ycl.system.mapper;
import com.ycl.platform.base.Cascader;
import com.ycl.system.entity.SysDept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -118,4 +119,19 @@
     * @return 结果
     */
    public int deleteDeptById(Long deptId);
    /**
     * 级联数据
     *
     * @return
     */
    List<Cascader> cascader();
    /**
     * 查询自己的父类部门ID
     *
     * @param deptId
     * @return
     */
    List<Long> selectParents(@Param("id") Long deptId);
}
ycl-server/src/main/java/com/ycl/system/service/ISysDeptService.java
@@ -134,4 +134,11 @@
     * @return
     */
    Result pullList();
    /**
     * 部门级联数据
     *
     * @return
     */
    Result cascader();
}
ycl-server/src/main/java/com/ycl/system/service/impl/SysDeptServiceImpl.java
@@ -3,6 +3,7 @@
import annotation.DataScope;
import com.ycl.exception.ServiceException;
import com.ycl.platform.base.BaseSelect;
import com.ycl.platform.base.Cascader;
import com.ycl.system.Result;
import com.ycl.system.domain.TreeSelect;
import com.ycl.system.entity.SysDept;
@@ -19,9 +20,7 @@
import org.springframework.stereotype.Service;
import utils.text.Convert;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -327,6 +326,43 @@
        return Result.ok().data(vos);
    }
    @Override
    public Result cascader() {
        List<Cascader> data = deptMapper.cascader();
        return Result.ok().data(this.buildTree(data));
    }
    public List<Cascader> buildTree(List<Cascader> cascaders) {
        // 创建一个映射,以parentId为键,对应的子节点列表为值
        Map<Long, List<Cascader>> map = new HashMap<>();
        for (Cascader cascader : cascaders) {
            Long parentId = cascader.getParentId();
            map.computeIfAbsent(parentId, k -> new ArrayList<>()).add(cascader);
        }
        // 递归函数,用于构建树
        List<Cascader> tree = new ArrayList<>();
        for (Cascader cascader : cascaders) {
            if (cascader.getParentId().equals(0L)) { // 根节点
                tree.add(setChildren(cascader, map));
            }
        }
        // 更新原始列表为树形结构
        cascaders.clear();
        cascaders.addAll(tree);
        return cascaders;
    }
    private Cascader setChildren(Cascader cascader, Map<Long, List<Cascader>> map) {
        List<Cascader> children = map.getOrDefault(cascader.getValue(), new ArrayList<>());
        for (Cascader child : children) {
            setChildren(child, map); // 递归设置子节点的子节点
        }
        cascader.setChildren(children);
        return cascader;
    }
    /**
     * 递归列表
     */
ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -158,4 +158,24 @@
        update sys_dept set del_flag = '2' where dept_id = #{deptId}
    </delete>
    <select id="cascader" resultType="com.ycl.platform.base.Cascader">
        SELECT dept_id as value, dept_name as label, parent_id as parentId FROM sys_dept WHERE status = '0' AND del_flag = '0'
    </select>
    <select id="selectParents" resultType="long">
        WITH RECURSIVE temp_table AS (
            SELECT
                dept_id, dept_name, parent_id, 0 as level FROM sys_dept WHERE dept_id = 101
            UNION ALL
            SELECT
                sd.dept_id, sd.dept_name, sd.parent_id, tb.level+1 FROM sys_dept sd INNER JOIN temp_table tb ON sd.dept_id = tb.parent_id
        )
        SELECT
            dept_id
        FROM
            temp_table
        ORDER BY
            level DESC
    </select>
</mapper> 
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -9,12 +9,47 @@
        <result column="start_time" property="startTime" />
        <result column="end_time" property="endTime" />
        <result column="unit_id" property="unitId" />
        <result column="unit_name" property="unitName" />
        <result column="status" property="status" />
        <result column="dept_id" property="deptId" />
        <result column="dept_name" property="deptName" />
        <result column="remark" property="remark" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="category" property="category" />
        <result column="point_tag" property="pointTagString" />
    </resultMap>
    <select id="selectData" resultType="com.ycl.platform.base.BaseSelect">
    </select>
    <select id="page" resultMap="BaseResultMap">
        SELECT
               typ.id,
               typ.point_name,
               typ.point_tag,
               typ.start_time,
               typ.end_time,
               typ.unit_id,
               tyu.unit_name,
               typ.status,
               typ.dept_id,
               sd.dept_name,
               typ.remark,
               typ.create_time,
               typ.update_time,
               typ.point_tag,
               typ.category
        FROM
             t_yw_point typ
                 LEFT JOIN t_yw_unit tyu ON typ.unit_id = tyu.id AND tyu.deleted = 0
                 LEFT JOIN sys_dept sd ON typ.dept_id = sd.dept_id AND sd.del_flag = 0
        <where>
            <if test="query.pointName != null and query.pointName != ''">
                AND typ.point_name like concat('%', #{query.pointName}, '%')
            </if>
        </where>
    </select>
</mapper>