Merge branch 'main' of http://192.168.110.199:3000/lcj/xinnengy
This commit is contained in:
@ -261,7 +261,7 @@ management:
|
||||
|
||||
--- # 默认/推荐使用sse推送
|
||||
sse:
|
||||
enabled: false
|
||||
enabled: true
|
||||
path: /resource/sse
|
||||
|
||||
--- # websocket
|
||||
|
@ -0,0 +1,31 @@
|
||||
package org.dromara.common.core.common;
|
||||
|
||||
import lombok.Data;
|
||||
import org.dromara.common.core.constant.CommonConstant;
|
||||
|
||||
/**
|
||||
* 分页请求
|
||||
*/
|
||||
@Data
|
||||
public class PageRequest {
|
||||
|
||||
/**
|
||||
* 当前页号
|
||||
*/
|
||||
private int current = 1;
|
||||
|
||||
/**
|
||||
* 页面大小
|
||||
*/
|
||||
private int pageSize = 10;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private String sortField;
|
||||
|
||||
/**
|
||||
* 排序顺序(默认升序)
|
||||
*/
|
||||
private String sortOrder = CommonConstant.SORT_ORDER_ASC;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package org.dromara.common.core.constant;
|
||||
|
||||
/**
|
||||
* 通用常量
|
||||
*/
|
||||
public interface CommonConstant {
|
||||
|
||||
/**
|
||||
* 升序
|
||||
*/
|
||||
String SORT_ORDER_ASC = "ascend";
|
||||
|
||||
/**
|
||||
* 降序
|
||||
*/
|
||||
String SORT_ORDER_DESC = " descend";
|
||||
|
||||
}
|
@ -53,4 +53,17 @@ public class SqlUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验排序字段是否合法(防止 SQL 注入)
|
||||
*
|
||||
* @param sortField 排序字段
|
||||
* @return 是否存在 SQL 注入
|
||||
*/
|
||||
public static boolean validSortField(String sortField) {
|
||||
if (StringUtils.isBlank(sortField)) {
|
||||
return false;
|
||||
}
|
||||
return !StringUtils.containsAny(sortField, "=", "(", ")", " ");
|
||||
}
|
||||
}
|
||||
|
@ -33,8 +33,8 @@ public class BaseEntity implements Serializable {
|
||||
/**
|
||||
* 创建部门
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Long createDept;
|
||||
/* @TableField(fill = FieldFill.INSERT)
|
||||
private Long createDept;*/
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
|
@ -44,7 +44,7 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler {
|
||||
// 填充创建人、更新人和创建部门信息
|
||||
baseEntity.setCreateBy(userId);
|
||||
baseEntity.setUpdateBy(userId);
|
||||
baseEntity.setCreateDept(ObjectUtils.notNull(baseEntity.getCreateDept(), loginUser.getDeptId()));
|
||||
// baseEntity.setCreateDept(ObjectUtils.notNull(baseEntity.getCreateDept(), loginUser.getDeptId()));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
|
@ -0,0 +1,113 @@
|
||||
package org.dromara.project.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.project.domain.bo.ProjectBo;
|
||||
import org.dromara.project.domain.req.project.ProjectCreateReq;
|
||||
import org.dromara.project.domain.req.project.ProjectQueryReq;
|
||||
import org.dromara.project.domain.req.project.ProjectUpdateReq;
|
||||
import org.dromara.project.domain.vo.ProjectVo;
|
||||
import org.dromara.project.service.IProjectService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/project/project")
|
||||
public class ProjectController extends BaseController {
|
||||
|
||||
private final IProjectService projectService;
|
||||
|
||||
/**
|
||||
* 查询项目列表
|
||||
*/
|
||||
@SaCheckPermission("project:project:list")
|
||||
@GetMapping("/list")
|
||||
public Page<ProjectVo> list(ProjectQueryReq req) {
|
||||
return projectService.queryPageList(req);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出项目列表
|
||||
*/
|
||||
@SaCheckPermission("project:project:export")
|
||||
@Log(title = "项目", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(ProjectBo bo, HttpServletResponse response) {
|
||||
List<ProjectVo> list = projectService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "项目", ProjectVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@SaCheckPermission("project:project:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<ProjectVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(projectService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目
|
||||
*/
|
||||
@SaCheckPermission("project:project:add")
|
||||
@Log(title = "项目", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody ProjectCreateReq req) {
|
||||
if (req == null) {
|
||||
throw new ServiceException("参数不能为空", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
return R.ok(projectService.insertByBo(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目
|
||||
*/
|
||||
@SaCheckPermission("project:project:edit")
|
||||
@Log(title = "项目", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProjectUpdateReq req) {
|
||||
return toAjax(projectService.updateByBo(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除项目
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@SaCheckPermission("project:project:remove")
|
||||
@Log(title = "项目", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(projectService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -0,0 +1,179 @@
|
||||
package org.dromara.project.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import org.dromara.common.excel.utils.ExcelUtil;
|
||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||
import org.dromara.common.log.annotation.Log;
|
||||
import org.dromara.common.log.enums.BusinessType;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.common.web.core.BaseController;
|
||||
import org.dromara.project.domain.UserProjectRelevancy;
|
||||
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
|
||||
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
||||
import org.dromara.project.domain.resp.userprojectrelevancy.LoginUserProjectRelevancyResp;
|
||||
import org.dromara.project.domain.vo.UserProjectRelevancyVo;
|
||||
import org.dromara.project.service.IUserProjectRelevancyService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统用户与项目关联
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/project/projectRelevancy")
|
||||
public class UserProjectRelevancyController extends BaseController {
|
||||
|
||||
private final IUserProjectRelevancyService userProjectRelevancyService;
|
||||
|
||||
/**
|
||||
* 查询系统用户与项目关联列表
|
||||
*/
|
||||
@Tag(name = "查询用户与项目关联列表")
|
||||
@SaCheckPermission("project:projectRelevancy:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<UserProjectRelevancyVo> list(UserProjectRelevancyBo bo, PageQuery pageQuery) {
|
||||
return userProjectRelevancyService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询登录用户与项目关联列表
|
||||
*/
|
||||
@Tag(name = "查询登录用户与项目关联列表")
|
||||
@SaCheckPermission("project:projectRelevancy:list")
|
||||
@GetMapping("/login/list")
|
||||
public R<List<LoginUserProjectRelevancyResp>> listByLoginUser() {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
return R.ok(userProjectRelevancyService.queryListByUserId(userId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询登录用户与项目关联分页
|
||||
*/
|
||||
@Tag(name = "查询登录用户与项目关联分页")
|
||||
@SaCheckPermission("project:projectRelevancy:list")
|
||||
@GetMapping("/login/page")
|
||||
public R<Page<UserProjectRelevancyVo>> pageByLoginUser(UserProjectRelevancyQueryReq req) {
|
||||
Long userId = LoginHelper.getUserId();
|
||||
return R.ok(userProjectRelevancyService.queryPageByUserId(userId, req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出系统用户与项目关联列表
|
||||
*/
|
||||
@Tag(name = "导出用户与项目关联列表")
|
||||
@SaCheckPermission("project:projectRelevancy:export")
|
||||
@Log(title = "系统用户与项目关联", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(UserProjectRelevancyBo bo, HttpServletResponse response) {
|
||||
List<UserProjectRelevancyVo> list = userProjectRelevancyService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "系统用户与项目关联", UserProjectRelevancyVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取系统用户与项目关联详细信息
|
||||
*
|
||||
* @param id 主键
|
||||
*/
|
||||
@Tag(name = "获取用户与项目关联详细信息")
|
||||
@SaCheckPermission("project:projectRelevancy:query")
|
||||
@GetMapping("/{id}")
|
||||
public R<UserProjectRelevancyVo> getInfo(@NotNull(message = "主键不能为空")
|
||||
@PathVariable Long id) {
|
||||
return R.ok(userProjectRelevancyService.queryById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增系统用户与项目关联
|
||||
*/
|
||||
@Tag(name = "新增用户与项目关联")
|
||||
@SaCheckPermission("project:projectRelevancy:add")
|
||||
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Long> add(@Validated(AddGroup.class) @RequestBody UserProjectRelevancyCreateReq req) {
|
||||
return R.ok(userProjectRelevancyService.insertByBo(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增系统用户与项目列表关联
|
||||
*/
|
||||
@Tag(name = "新增用户与项目列表关联")
|
||||
@SaCheckPermission("project:projectRelevancy:add")
|
||||
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/add/project/list")
|
||||
public R<Boolean> addBatchByProjectList(@RequestBody ProjectBatchByProjectListReq req) {
|
||||
Boolean result = userProjectRelevancyService.insertBatchByProjectList(req);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 移除系统用户与项目列表关联
|
||||
*/
|
||||
@Tag(name = "移除用户与项目列表关联")
|
||||
@SaCheckPermission("project:projectRelevancy:remove")
|
||||
@Log(title = "系统用户与项目关联", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@DeleteMapping("/remove/project/list")
|
||||
public R<Boolean> removeBatchByProjectList(@RequestBody ProjectBatchByProjectListReq req) {
|
||||
Long userId = req.getUserId();
|
||||
Long[] projectIdList = req.getProjectIdList();
|
||||
List<UserProjectRelevancy> userProjectRelevancyList = Arrays.stream(projectIdList).map(projectId -> {
|
||||
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
||||
userProjectRelevancy.setUserId(userId);
|
||||
userProjectRelevancy.setProjectId(projectId);
|
||||
return userProjectRelevancy;
|
||||
}).toList();
|
||||
boolean result = userProjectRelevancyService.removeBatchByIds(userProjectRelevancyList);
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改系统用户与项目关联
|
||||
*/
|
||||
@Tag(name = "修改用户与项目关联")
|
||||
@SaCheckPermission("project:projectRelevancy:edit")
|
||||
@Log(title = "系统用户与项目关联", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody UserProjectRelevancyUpdateReq req) {
|
||||
return toAjax(userProjectRelevancyService.updateByBo(req));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除系统用户与项目关联
|
||||
*
|
||||
* @param ids 主键串
|
||||
*/
|
||||
@Tag(name = "删除用户与项目关联")
|
||||
@SaCheckPermission("project:projectRelevancy:remove")
|
||||
@Log(title = "系统用户与项目关联", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{ids}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空")
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(userProjectRelevancyService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
}
|
@ -0,0 +1,150 @@
|
||||
package org.dromara.project.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableLogic;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 项目对象 project
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("project")
|
||||
public class Project extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目简称
|
||||
*/
|
||||
private String shortName;
|
||||
|
||||
/**
|
||||
* 父项目id
|
||||
*/
|
||||
private Long pId;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private Long status;
|
||||
|
||||
/**
|
||||
* 项目图片
|
||||
*/
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
private Long isType;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
*/
|
||||
private Date deletedAt;
|
||||
|
||||
/**
|
||||
* 项目地址
|
||||
*/
|
||||
private String projectSite;
|
||||
|
||||
/**
|
||||
* 负责人
|
||||
*/
|
||||
private String principal;
|
||||
|
||||
/**
|
||||
* 负责人电话
|
||||
*/
|
||||
private String principalPhone;
|
||||
|
||||
/**
|
||||
* 实际容量
|
||||
*/
|
||||
private String actual;
|
||||
|
||||
/**
|
||||
* 计划容量
|
||||
*/
|
||||
private String plan;
|
||||
|
||||
/**
|
||||
* 开工时间
|
||||
*/
|
||||
private String onStreamTime;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
*/
|
||||
private String punchRange;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
*/
|
||||
private Long designTotal;
|
||||
|
||||
/**
|
||||
* 安全协议书
|
||||
*/
|
||||
private String securityAgreement;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Long sort;
|
||||
|
||||
/**
|
||||
* 显示隐藏(0显示 1隐藏)
|
||||
*/
|
||||
private Long showHidden;
|
||||
|
||||
/**
|
||||
* 是否删除(0正常 1删除)
|
||||
*/
|
||||
@TableLogic
|
||||
private Long isDelete;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package org.dromara.project.domain;
|
||||
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
import java.io.Serial;
|
||||
|
||||
/**
|
||||
* 系统用户与项目关联对象 user_project_relevancy
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName("user_project_relevancy")
|
||||
public class UserProjectRelevancy extends BaseEntity {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@TableId(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
}
|
@ -0,0 +1,141 @@
|
||||
package org.dromara.project.domain.bo;
|
||||
|
||||
import org.dromara.project.domain.Project;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 项目业务对象 project
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = Project.class, reverseConvertGenerate = false)
|
||||
public class ProjectBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 项目id
|
||||
*/
|
||||
@NotNull(message = "不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目简称
|
||||
*/
|
||||
private String shortName;
|
||||
|
||||
/**
|
||||
* 父项目id
|
||||
*/
|
||||
private Long pId;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private Long status;
|
||||
|
||||
/**
|
||||
* 项目图片
|
||||
*/
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
private Long isType;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
*/
|
||||
private Date deletedAt;
|
||||
|
||||
/**
|
||||
* 项目地址
|
||||
*/
|
||||
private String projectSite;
|
||||
|
||||
/**
|
||||
* 负责人
|
||||
*/
|
||||
private String principal;
|
||||
|
||||
/**
|
||||
* 负责人电话
|
||||
*/
|
||||
private String principalPhone;
|
||||
|
||||
/**
|
||||
* 实际容量
|
||||
*/
|
||||
private String actual;
|
||||
|
||||
/**
|
||||
* 计划容量
|
||||
*/
|
||||
private String plan;
|
||||
|
||||
/**
|
||||
* 开工时间
|
||||
*/
|
||||
private String onStreamTime;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
*/
|
||||
@NotBlank(message = "打卡范围(09:00,18:00)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private String punchRange;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
*/
|
||||
@NotNull(message = "设计总量不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long designTotal;
|
||||
|
||||
/**
|
||||
* 安全协议书
|
||||
*/
|
||||
private String securityAgreement;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
@NotNull(message = "排序字段不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long sort;
|
||||
|
||||
/**
|
||||
* 显示隐藏(0显示 1隐藏)
|
||||
*/
|
||||
private Long showHidden;
|
||||
|
||||
/**
|
||||
* 是否删除(0正常 1删除)
|
||||
*/
|
||||
@NotNull(message = "是否删除(0正常 1删除)不能为空", groups = { EditGroup.class })
|
||||
private Long isDelete;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package org.dromara.project.domain.bo;
|
||||
|
||||
import org.dromara.project.domain.UserProjectRelevancy;
|
||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||
import org.dromara.common.core.validate.AddGroup;
|
||||
import org.dromara.common.core.validate.EditGroup;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import jakarta.validation.constraints.*;
|
||||
import java.util.Date;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
|
||||
/**
|
||||
* 系统用户与项目关联业务对象 user_project_relevancy
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@AutoMapper(target = UserProjectRelevancy.class, reverseConvertGenerate = false)
|
||||
public class UserProjectRelevancyBo extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@NotNull(message = "主键ID不能为空", groups = { EditGroup.class })
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@NotNull(message = "用户ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
@NotNull(message = "项目ID不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 删除时间
|
||||
*/
|
||||
private Date deletedAt;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package org.dromara.project.domain.req.project;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 17:16
|
||||
*/
|
||||
@Data
|
||||
public class ProjectBatchByProjectListReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -3366498681076059844L;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID列表
|
||||
*/
|
||||
private Long[] projectIdList;
|
||||
|
||||
}
|
@ -0,0 +1,117 @@
|
||||
package org.dromara.project.domain.req.project;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 14:05
|
||||
*/
|
||||
@Data
|
||||
public class ProjectCreateReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -7603153089205421154L;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目简称
|
||||
*/
|
||||
private String shortName;
|
||||
|
||||
/**
|
||||
* 父项目id
|
||||
*/
|
||||
private Long pId;
|
||||
|
||||
/**
|
||||
* 项目图片
|
||||
*/
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
private Long isType;
|
||||
|
||||
/**
|
||||
* 项目地址
|
||||
*/
|
||||
private String projectSite;
|
||||
|
||||
/**
|
||||
* 负责人
|
||||
*/
|
||||
private String principal;
|
||||
|
||||
/**
|
||||
* 负责人电话
|
||||
*/
|
||||
private String principalPhone;
|
||||
|
||||
/**
|
||||
* 实际容量
|
||||
*/
|
||||
private String actual;
|
||||
|
||||
/**
|
||||
* 计划容量
|
||||
*/
|
||||
private String plan;
|
||||
|
||||
/**
|
||||
* 开工时间
|
||||
*/
|
||||
private String onStreamTime;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
*/
|
||||
private String punchRange;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
*/
|
||||
private Long designTotal;
|
||||
|
||||
/**
|
||||
* 安全协议书
|
||||
*/
|
||||
private String securityAgreement;
|
||||
|
||||
/**
|
||||
* 排序字段
|
||||
*/
|
||||
private Long sort;
|
||||
|
||||
/**
|
||||
* 显示隐藏(0显示 1隐藏)
|
||||
*/
|
||||
private Long showHidden;
|
||||
}
|
@ -0,0 +1,115 @@
|
||||
package org.dromara.project.domain.req.project;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.common.PageRequest;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 14:31
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class ProjectQueryReq extends PageRequest implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 5563677643070664671L;
|
||||
|
||||
/**
|
||||
* 项目 id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目简称
|
||||
*/
|
||||
private String shortName;
|
||||
|
||||
/**
|
||||
* 父项目id
|
||||
*/
|
||||
private Long pId;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private Long status;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
private Long isType;
|
||||
|
||||
/**
|
||||
* 项目地址
|
||||
*/
|
||||
private String projectSite;
|
||||
|
||||
/**
|
||||
* 负责人
|
||||
*/
|
||||
private String principal;
|
||||
|
||||
/**
|
||||
* 负责人电话
|
||||
*/
|
||||
private String principalPhone;
|
||||
|
||||
/**
|
||||
* 实际容量
|
||||
*/
|
||||
private String actual;
|
||||
|
||||
/**
|
||||
* 计划容量
|
||||
*/
|
||||
private String plan;
|
||||
|
||||
/**
|
||||
* 开工时间
|
||||
*/
|
||||
private String onStreamTime;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
*/
|
||||
private String punchRange;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
*/
|
||||
private Long designTotal;
|
||||
|
||||
/**
|
||||
* 显示隐藏(0显示 1隐藏)
|
||||
*/
|
||||
private Long showHidden;
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
package org.dromara.project.domain.req.project;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 15:04
|
||||
*/
|
||||
@Data
|
||||
public class ProjectUpdateReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 3431952359907567659L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目简称
|
||||
*/
|
||||
private String shortName;
|
||||
|
||||
/**
|
||||
* 父项目id
|
||||
*/
|
||||
private Long pId;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
private Long status;
|
||||
|
||||
/**
|
||||
* 项目图片
|
||||
*/
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
private Long isType;
|
||||
|
||||
/**
|
||||
* 项目地址
|
||||
*/
|
||||
private String projectSite;
|
||||
|
||||
/**
|
||||
* 负责人
|
||||
*/
|
||||
private String principal;
|
||||
|
||||
/**
|
||||
* 负责人电话
|
||||
*/
|
||||
private String principalPhone;
|
||||
|
||||
/**
|
||||
* 实际容量
|
||||
*/
|
||||
private String actual;
|
||||
|
||||
/**
|
||||
* 计划容量
|
||||
*/
|
||||
private String plan;
|
||||
|
||||
/**
|
||||
* 开工时间
|
||||
*/
|
||||
private String onStreamTime;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
*/
|
||||
private String punchRange;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
*/
|
||||
private Long designTotal;
|
||||
|
||||
/**
|
||||
* 安全协议书
|
||||
*/
|
||||
private String securityAgreement;
|
||||
|
||||
/**
|
||||
* 显示隐藏(0显示 1隐藏)
|
||||
*/
|
||||
private Long showHidden;
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package org.dromara.project.domain.req.userprojectrelevancy;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 14:05
|
||||
*/
|
||||
@Data
|
||||
public class UserProjectRelevancyCreateReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -7603153089205421154L;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
package org.dromara.project.domain.req.userprojectrelevancy;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.dromara.common.core.common.PageRequest;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 14:31
|
||||
*/
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Data
|
||||
public class UserProjectRelevancyQueryReq extends PageRequest implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 3252651952758479341L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
package org.dromara.project.domain.req.userprojectrelevancy;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 15:04
|
||||
*/
|
||||
@Data
|
||||
public class UserProjectRelevancyUpdateReq implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -8022860866890925958L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
package org.dromara.project.domain.resp.userprojectrelevancy;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author lilemy
|
||||
* @date 2025/3/5 15:30
|
||||
*/
|
||||
@Data
|
||||
public class LoginUserProjectRelevancyResp implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = -2056438621566236671L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目简称
|
||||
*/
|
||||
private String shortName;
|
||||
}
|
@ -0,0 +1,159 @@
|
||||
package org.dromara.project.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.common.excel.annotation.ExcelDictFormat;
|
||||
import org.dromara.common.excel.convert.ExcelDictConvert;
|
||||
import org.dromara.project.domain.Project;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* 项目视图对象 project
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = Project.class)
|
||||
public class ProjectVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
@ExcelProperty(value = "id")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
@ExcelProperty(value = "项目名称")
|
||||
private String projectName;
|
||||
|
||||
/**
|
||||
* 项目简称
|
||||
*/
|
||||
@ExcelProperty(value = "项目简称")
|
||||
private String shortName;
|
||||
|
||||
/**
|
||||
* 父项目id
|
||||
*/
|
||||
@ExcelProperty(value = "父项目id")
|
||||
private Long pId;
|
||||
|
||||
/**
|
||||
* 状态(0正常 1停用)
|
||||
*/
|
||||
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0=正常,1=停用")
|
||||
private Long status;
|
||||
|
||||
/**
|
||||
* 项目图片
|
||||
*/
|
||||
@ExcelProperty(value = "项目图片")
|
||||
private String picUrl;
|
||||
|
||||
/**
|
||||
* 经度
|
||||
*/
|
||||
@ExcelProperty(value = "经度")
|
||||
private String lng;
|
||||
|
||||
/**
|
||||
* 纬度
|
||||
*/
|
||||
@ExcelProperty(value = "纬度")
|
||||
private String lat;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
@ExcelProperty(value = "备注")
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 项目类型
|
||||
*/
|
||||
@ExcelProperty(value = "项目类型")
|
||||
private String type;
|
||||
|
||||
/**
|
||||
* 项目类型(1光伏 2风电)
|
||||
*/
|
||||
@ExcelProperty(value = "项目类型", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "1=光伏,2=风电")
|
||||
private Long isType;
|
||||
|
||||
/**
|
||||
* 项目地址
|
||||
*/
|
||||
@ExcelProperty(value = "项目地址")
|
||||
private String projectSite;
|
||||
|
||||
/**
|
||||
* 负责人
|
||||
*/
|
||||
@ExcelProperty(value = "负责人")
|
||||
private String principal;
|
||||
|
||||
/**
|
||||
* 负责人电话
|
||||
*/
|
||||
@ExcelProperty(value = "负责人电话")
|
||||
private String principalPhone;
|
||||
|
||||
/**
|
||||
* 实际容量
|
||||
*/
|
||||
@ExcelProperty(value = "实际容量")
|
||||
private String actual;
|
||||
|
||||
/**
|
||||
* 计划容量
|
||||
*/
|
||||
@ExcelProperty(value = "计划容量")
|
||||
private String plan;
|
||||
|
||||
/**
|
||||
* 开工时间
|
||||
*/
|
||||
@ExcelProperty(value = "开工时间")
|
||||
private String onStreamTime;
|
||||
|
||||
/**
|
||||
* 打卡范围(09:00,18:00)
|
||||
*/
|
||||
@ExcelProperty(value = "打卡范围", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "0=9:00,18:00")
|
||||
private String punchRange;
|
||||
|
||||
/**
|
||||
* 设计总量
|
||||
*/
|
||||
@ExcelProperty(value = "设计总量")
|
||||
private Long designTotal;
|
||||
|
||||
/**
|
||||
* 安全协议书
|
||||
*/
|
||||
@ExcelProperty(value = "安全协议书")
|
||||
private String securityAgreement;
|
||||
|
||||
/**
|
||||
* 显示隐藏(0显示 1隐藏)
|
||||
*/
|
||||
@ExcelProperty(value = "显示隐藏", converter = ExcelDictConvert.class)
|
||||
@ExcelDictFormat(readConverterExp = "1=显示,2=隐藏")
|
||||
private Long showHidden;
|
||||
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package org.dromara.project.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import lombok.Data;
|
||||
import org.dromara.project.domain.UserProjectRelevancy;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
|
||||
/**
|
||||
* 系统用户与项目关联视图对象 user_project_relevancy
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@AutoMapper(target = UserProjectRelevancy.class)
|
||||
public class UserProjectRelevancyVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 用户ID
|
||||
*/
|
||||
@ExcelProperty(value = "用户ID")
|
||||
private Long userId;
|
||||
|
||||
/**
|
||||
* 项目ID
|
||||
*/
|
||||
@ExcelProperty(value = "项目ID")
|
||||
private Long projectId;
|
||||
|
||||
/**
|
||||
* 项目详情
|
||||
*/
|
||||
@ExcelProperty(value = "项目详情")
|
||||
private ProjectVo project;
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.dromara.project.mapper;
|
||||
|
||||
import org.dromara.project.domain.Project;
|
||||
import org.dromara.project.domain.vo.ProjectVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 项目Mapper接口
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
public interface ProjectMapper extends BaseMapperPlus<Project, ProjectVo> {
|
||||
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.dromara.project.mapper;
|
||||
|
||||
import org.dromara.project.domain.UserProjectRelevancy;
|
||||
import org.dromara.project.domain.vo.UserProjectRelevancyVo;
|
||||
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
|
||||
|
||||
/**
|
||||
* 系统用户与项目关联Mapper接口
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
public interface UserProjectRelevancyMapper extends BaseMapperPlus<UserProjectRelevancy, UserProjectRelevancyVo> {
|
||||
|
||||
}
|
@ -0,0 +1,98 @@
|
||||
package org.dromara.project.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.project.domain.Project;
|
||||
import org.dromara.project.domain.bo.ProjectBo;
|
||||
import org.dromara.project.domain.req.project.ProjectCreateReq;
|
||||
import org.dromara.project.domain.req.project.ProjectQueryReq;
|
||||
import org.dromara.project.domain.req.project.ProjectUpdateReq;
|
||||
import org.dromara.project.domain.vo.ProjectVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目Service接口
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
public interface IProjectService extends IService<Project> {
|
||||
|
||||
/**
|
||||
* 查询项目
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 项目
|
||||
*/
|
||||
ProjectVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 获取项目视图对象
|
||||
*
|
||||
* @param project 项目对象
|
||||
* @return 项目视图对象
|
||||
*/
|
||||
ProjectVo getProjectVo(Project project);
|
||||
|
||||
/**
|
||||
* 获取项目查询条件封装
|
||||
*
|
||||
* @param req 查询条件
|
||||
* @return 查询条件封装
|
||||
*/
|
||||
QueryWrapper<Project> getQueryWrapper(ProjectQueryReq req);
|
||||
|
||||
/**
|
||||
* 分页查询项目列表
|
||||
*
|
||||
* @param req 查询条件
|
||||
* @return 项目分页列表
|
||||
*/
|
||||
Page<ProjectVo> queryPageList(ProjectQueryReq req);
|
||||
|
||||
/**
|
||||
* 查询符合条件的项目列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 项目列表
|
||||
*/
|
||||
List<ProjectVo> queryList(ProjectBo bo);
|
||||
|
||||
/**
|
||||
* 获取项目分页对象视图
|
||||
*
|
||||
* @param projectPage 项目分页对象
|
||||
* @return 项目分页对象视图
|
||||
*/
|
||||
Page<ProjectVo> getProjectVoPage(Page<Project> projectPage);
|
||||
|
||||
/**
|
||||
* 新增项目
|
||||
*
|
||||
* @param dto 项目
|
||||
* @return 新项目 id
|
||||
*/
|
||||
Long insertByBo(ProjectCreateReq dto);
|
||||
|
||||
/**
|
||||
* 修改项目
|
||||
*
|
||||
* @param req 项目
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(ProjectUpdateReq req);
|
||||
|
||||
/**
|
||||
* 校验并批量删除项目信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
}
|
@ -0,0 +1,126 @@
|
||||
package org.dromara.project.service;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.project.domain.UserProjectRelevancy;
|
||||
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
|
||||
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
||||
import org.dromara.project.domain.resp.userprojectrelevancy.LoginUserProjectRelevancyResp;
|
||||
import org.dromara.project.domain.vo.UserProjectRelevancyVo;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 系统用户与项目关联Service接口
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
public interface IUserProjectRelevancyService extends IService<UserProjectRelevancy> {
|
||||
|
||||
/**
|
||||
* 获取系统用户与项目关联视图
|
||||
*
|
||||
* @param userProjectRelevancy 系统用户与项目关联
|
||||
* @return 系统用户与项目关联视图
|
||||
*/
|
||||
UserProjectRelevancyVo getUserProjectRelevancyVo(UserProjectRelevancy userProjectRelevancy);
|
||||
|
||||
/**
|
||||
* 获取系统用户与项目关联分页视图
|
||||
*
|
||||
* @param userProjectRelevancyPage 系统用户与项目关联分页
|
||||
* @return 系统用户与项目关联分页视图
|
||||
*/
|
||||
Page<UserProjectRelevancyVo> getUserProjectRelevancyVoPage(Page<UserProjectRelevancy> userProjectRelevancyPage);
|
||||
|
||||
/**
|
||||
* 查询系统用户与项目关联
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 系统用户与项目关联
|
||||
*/
|
||||
UserProjectRelevancyVo queryById(Long id);
|
||||
|
||||
/**
|
||||
* 分页查询系统用户与项目关联列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 系统用户与项目关联分页列表
|
||||
*/
|
||||
TableDataInfo<UserProjectRelevancyVo> queryPageList(UserProjectRelevancyBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的系统用户与项目关联列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 系统用户与项目关联列表
|
||||
*/
|
||||
List<UserProjectRelevancyVo> queryList(UserProjectRelevancyBo bo);
|
||||
|
||||
/**
|
||||
* 新增系统用户与项目关联
|
||||
*
|
||||
* @param req 系统用户与项目关联
|
||||
* @return 新增关联信息ID
|
||||
*/
|
||||
Long insertByBo(UserProjectRelevancyCreateReq req);
|
||||
|
||||
/**
|
||||
* 修改系统用户与项目关联
|
||||
*
|
||||
* @param req 系统用户与项目关联
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
Boolean updateByBo(UserProjectRelevancyUpdateReq req);
|
||||
|
||||
/**
|
||||
* 校验并批量删除系统用户与项目关联信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 获取当前登录用户项目列表
|
||||
*
|
||||
* @param userId 登录用户ID
|
||||
* @return 当前登录用户项目列表
|
||||
*/
|
||||
List<LoginUserProjectRelevancyResp> queryListByUserId(Long userId);
|
||||
|
||||
/**
|
||||
* 获取当前登录用户项目分页
|
||||
*
|
||||
* @param userId 登录用户ID
|
||||
* @param req 分页查询条件
|
||||
* @return 当前登录用户项目分页
|
||||
*/
|
||||
Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req);
|
||||
|
||||
/**
|
||||
* 获取用户和项目关联对象查询条件封装
|
||||
*
|
||||
* @param req 查询条件
|
||||
* @return 查询条件封装
|
||||
*/
|
||||
QueryWrapper<UserProjectRelevancy> getQueryWrapper(UserProjectRelevancyQueryReq req);
|
||||
|
||||
/**
|
||||
* 批量新增用户和项目关联
|
||||
*
|
||||
* @param req 新增参数
|
||||
* @return 是否增加成功
|
||||
*/
|
||||
Boolean insertBatchByProjectList(ProjectBatchByProjectListReq req);
|
||||
}
|
@ -0,0 +1,278 @@
|
||||
package org.dromara.project.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.common.core.constant.CommonConstant;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.domain.Project;
|
||||
import org.dromara.project.domain.UserProjectRelevancy;
|
||||
import org.dromara.project.domain.bo.ProjectBo;
|
||||
import org.dromara.project.domain.req.project.ProjectCreateReq;
|
||||
import org.dromara.project.domain.req.project.ProjectQueryReq;
|
||||
import org.dromara.project.domain.req.project.ProjectUpdateReq;
|
||||
import org.dromara.project.domain.vo.ProjectVo;
|
||||
import org.dromara.project.mapper.ProjectMapper;
|
||||
import org.dromara.project.service.IProjectService;
|
||||
import org.dromara.project.service.IUserProjectRelevancyService;
|
||||
import org.dromara.system.service.ISysUserService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目Service业务层处理
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Service
|
||||
public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
|
||||
implements IProjectService {
|
||||
|
||||
@Resource
|
||||
private ProjectMapper baseMapper;
|
||||
|
||||
@Resource
|
||||
private ISysUserService userService;
|
||||
|
||||
@Lazy
|
||||
@Resource
|
||||
private IUserProjectRelevancyService userProjectRelevancyService;
|
||||
|
||||
/**
|
||||
* 查询项目
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 项目
|
||||
*/
|
||||
@Override
|
||||
public ProjectVo queryById(Long id) {
|
||||
return baseMapper.selectVoById(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProjectVo getProjectVo(Project project) {
|
||||
if (project == null) {
|
||||
return null;
|
||||
}
|
||||
// 对象转封装类
|
||||
ProjectVo projectVo = new ProjectVo();
|
||||
BeanUtils.copyProperties(project, projectVo);
|
||||
return projectVo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取项目查询条件封装
|
||||
*
|
||||
* @param req 查询条件
|
||||
* @return 查询条件封装
|
||||
*/
|
||||
@Override
|
||||
public QueryWrapper<Project> getQueryWrapper(ProjectQueryReq req) {
|
||||
QueryWrapper<Project> queryWrapper = new QueryWrapper<>();
|
||||
if (req == null) {
|
||||
return queryWrapper;
|
||||
}
|
||||
// 从对象中取值
|
||||
Long id = req.getId();
|
||||
String projectName = req.getProjectName();
|
||||
String shortName = req.getShortName();
|
||||
Long pId = req.getPId();
|
||||
Long status = req.getStatus();
|
||||
String remark = req.getRemark();
|
||||
String type = req.getType();
|
||||
Long isType = req.getIsType();
|
||||
String projectSite = req.getProjectSite();
|
||||
String principal = req.getPrincipal();
|
||||
String principalPhone = req.getPrincipalPhone();
|
||||
String actual = req.getActual();
|
||||
String plan = req.getPlan();
|
||||
String onStreamTime = req.getOnStreamTime();
|
||||
String punchRange = req.getPunchRange();
|
||||
Long designTotal = req.getDesignTotal();
|
||||
Long showHidden = req.getShowHidden();
|
||||
String sortField = req.getSortField();
|
||||
String sortOrder = req.getSortOrder();
|
||||
String underlineSortField = StrUtil.toUnderlineCase(sortField);
|
||||
// 模糊查询
|
||||
queryWrapper.like(StringUtils.isNotBlank(projectName), "project_name", projectName);
|
||||
queryWrapper.like(StringUtils.isNotBlank(shortName), "short_name", shortName);
|
||||
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
|
||||
queryWrapper.like(StringUtils.isNotBlank(type), "type", type);
|
||||
queryWrapper.like(StringUtils.isNotBlank(projectSite), "project_site", projectSite);
|
||||
queryWrapper.like(StringUtils.isNotBlank(principal), "principal", principal);
|
||||
queryWrapper.like(StringUtils.isNotBlank(principalPhone), "principal_phone", principalPhone);
|
||||
queryWrapper.like(StringUtils.isNotBlank(actual), "actual", actual);
|
||||
queryWrapper.like(StringUtils.isNotBlank(plan), "plan", plan);
|
||||
queryWrapper.like(StringUtils.isNotBlank(onStreamTime), "on_stream_time", onStreamTime);
|
||||
queryWrapper.like(StringUtils.isNotBlank(punchRange), "punch_range", punchRange);
|
||||
// 精确查询
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(pId), "p_id", pId);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(status), "status", status);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(isType), "is_type", isType);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(designTotal), "design_total", designTotal);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(showHidden), "show_hidden", showHidden);
|
||||
// 排序规则
|
||||
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
|
||||
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
|
||||
underlineSortField);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询项目列表
|
||||
*
|
||||
* @param req 查询条件
|
||||
* @return 项目分页列表
|
||||
*/
|
||||
@Override
|
||||
public Page<ProjectVo> queryPageList(ProjectQueryReq req) {
|
||||
long current = req.getCurrent();
|
||||
long size = req.getPageSize();
|
||||
// 查询数据库
|
||||
Page<Project> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
|
||||
return this.getProjectVoPage(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的项目列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 项目列表
|
||||
*/
|
||||
@Override
|
||||
public List<ProjectVo> queryList(ProjectBo bo) {
|
||||
LambdaQueryWrapper<Project> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<ProjectVo> getProjectVoPage(Page<Project> projectPage) {
|
||||
List<Project> projectList = projectPage.getRecords();
|
||||
Page<ProjectVo> projectVoPage = new Page<>(projectPage.getCurrent(), projectPage.getSize(), projectPage.getTotal());
|
||||
if (CollUtil.isEmpty(projectList)) {
|
||||
return projectVoPage;
|
||||
}
|
||||
// 对象列表 => 封装对象列表
|
||||
List<ProjectVo> projectVoList = projectList.stream().map(this::getProjectVo).toList();
|
||||
projectVoPage.setRecords(projectVoList);
|
||||
return projectVoPage;
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<Project> buildQueryWrapper(ProjectBo bo) {
|
||||
LambdaQueryWrapper<Project> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(Project::getId);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), Project::getProjectName, bo.getProjectName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getShortName()), Project::getShortName, bo.getShortName());
|
||||
lqw.eq(bo.getPId() != null, Project::getPId, bo.getPId());
|
||||
lqw.eq(bo.getStatus() != null, Project::getStatus, bo.getStatus());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPicUrl()), Project::getPicUrl, bo.getPicUrl());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getType()), Project::getType, bo.getType());
|
||||
lqw.eq(bo.getIsType() != null, Project::getIsType, bo.getIsType());
|
||||
lqw.eq(bo.getDeletedAt() != null, Project::getDeletedAt, bo.getDeletedAt());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getProjectSite()), Project::getProjectSite, bo.getProjectSite());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPrincipal()), Project::getPrincipal, bo.getPrincipal());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPrincipalPhone()), Project::getPrincipalPhone, bo.getPrincipalPhone());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getActual()), Project::getActual, bo.getActual());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPlan()), Project::getPlan, bo.getPlan());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getOnStreamTime()), Project::getOnStreamTime, bo.getOnStreamTime());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getPunchRange()), Project::getPunchRange, bo.getPunchRange());
|
||||
lqw.eq(bo.getDesignTotal() != null, Project::getDesignTotal, bo.getDesignTotal());
|
||||
lqw.eq(StringUtils.isNotBlank(bo.getSecurityAgreement()), Project::getSecurityAgreement, bo.getSecurityAgreement());
|
||||
lqw.eq(bo.getSort() != null, Project::getSort, bo.getSort());
|
||||
lqw.eq(bo.getShowHidden() != null, Project::getShowHidden, bo.getShowHidden());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增项目
|
||||
*
|
||||
* @param dto 项目
|
||||
* @return 新项目 id
|
||||
*/
|
||||
@Override
|
||||
public Long insertByBo(ProjectCreateReq dto) {
|
||||
// 将实体类和 DTO 进行转换
|
||||
Project project = new Project();
|
||||
BeanUtils.copyProperties(dto, project);
|
||||
// 数据校验
|
||||
validEntityBeforeSave(project);
|
||||
// 写入数据库
|
||||
boolean save = this.save(project);
|
||||
if (!save) {
|
||||
throw new ServiceException("新增项目失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
Long projectId = project.getId();
|
||||
Long userId = LoginHelper.getUserId();
|
||||
// 同步保存用户与项目关联
|
||||
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
||||
userProjectRelevancy.setUserId(userId);
|
||||
userProjectRelevancy.setProjectId(projectId);
|
||||
boolean saveRelevancy = userProjectRelevancyService.save(userProjectRelevancy);
|
||||
if (!saveRelevancy) {
|
||||
throw new ServiceException("新增用户与项目关联失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
// 返回新写入的数据 projectId
|
||||
return projectId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改项目
|
||||
*
|
||||
* @param req 项目
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(ProjectUpdateReq req) {
|
||||
// 将实体类和 DTO 进行转换
|
||||
Project project = new Project();
|
||||
BeanUtils.copyProperties(req, project);
|
||||
// 数据校验
|
||||
validEntityBeforeSave(project);
|
||||
// 判断是否存在
|
||||
Project oldProject = this.getById(project.getId());
|
||||
if (oldProject == null) {
|
||||
throw new ServiceException("修改项目失败,数据不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// 操作数据库
|
||||
return this.updateById(project);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(Project entity) {
|
||||
//TODO 做一些数据校验,如唯一约束
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除项目信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
}
|
@ -0,0 +1,340 @@
|
||||
package org.dromara.project.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.dromara.common.core.constant.CommonConstant;
|
||||
import org.dromara.common.core.constant.HttpStatus;
|
||||
import org.dromara.common.core.exception.ServiceException;
|
||||
import org.dromara.common.core.utils.ObjectUtils;
|
||||
import org.dromara.common.core.utils.sql.SqlUtil;
|
||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||
import org.dromara.common.satoken.utils.LoginHelper;
|
||||
import org.dromara.project.domain.Project;
|
||||
import org.dromara.project.domain.UserProjectRelevancy;
|
||||
import org.dromara.project.domain.bo.UserProjectRelevancyBo;
|
||||
import org.dromara.project.domain.req.project.ProjectBatchByProjectListReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyCreateReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyQueryReq;
|
||||
import org.dromara.project.domain.req.userprojectrelevancy.UserProjectRelevancyUpdateReq;
|
||||
import org.dromara.project.domain.resp.userprojectrelevancy.LoginUserProjectRelevancyResp;
|
||||
import org.dromara.project.domain.vo.UserProjectRelevancyVo;
|
||||
import org.dromara.project.mapper.UserProjectRelevancyMapper;
|
||||
import org.dromara.project.service.IProjectService;
|
||||
import org.dromara.project.service.IUserProjectRelevancyService;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 系统用户与项目关联Service业务层处理
|
||||
*
|
||||
* @author lcj
|
||||
* @date 2025-03-04
|
||||
*/
|
||||
@Service
|
||||
public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRelevancyMapper, UserProjectRelevancy>
|
||||
implements IUserProjectRelevancyService {
|
||||
|
||||
@Resource
|
||||
private UserProjectRelevancyMapper baseMapper;
|
||||
|
||||
@Resource
|
||||
private IProjectService projectService;
|
||||
|
||||
@Override
|
||||
public UserProjectRelevancyVo getUserProjectRelevancyVo(UserProjectRelevancy userProjectRelevancy) {
|
||||
// 对象转封装类
|
||||
UserProjectRelevancyVo userProjectRelevancyVo = new UserProjectRelevancyVo();
|
||||
if (userProjectRelevancy == null) {
|
||||
return userProjectRelevancyVo;
|
||||
}
|
||||
BeanUtils.copyProperties(userProjectRelevancy, userProjectRelevancyVo);
|
||||
// 关联查询项目信息
|
||||
Long projectId = userProjectRelevancy.getProjectId();
|
||||
if (projectId != null) {
|
||||
userProjectRelevancyVo.setProject(projectService.queryById(projectId));
|
||||
}
|
||||
return userProjectRelevancyVo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<UserProjectRelevancyVo> getUserProjectRelevancyVoPage(Page<UserProjectRelevancy> userProjectRelevancyPage) {
|
||||
List<UserProjectRelevancy> userProjectRelevancyList = userProjectRelevancyPage.getRecords();
|
||||
Page<UserProjectRelevancyVo> userProjectRelevancyVoPage = new Page<>(
|
||||
userProjectRelevancyPage.getCurrent(),
|
||||
userProjectRelevancyPage.getSize(),
|
||||
userProjectRelevancyPage.getTotal());
|
||||
if (CollUtil.isEmpty(userProjectRelevancyList)) {
|
||||
return userProjectRelevancyVoPage;
|
||||
}
|
||||
// 对象列表 => 封装对象列表
|
||||
List<UserProjectRelevancyVo> userProjectRelevancyVoList = userProjectRelevancyList.stream().map(this::getUserProjectRelevancyVo).toList();
|
||||
userProjectRelevancyVoPage.setRecords(userProjectRelevancyVoList);
|
||||
return userProjectRelevancyVoPage;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询系统用户与项目关联
|
||||
*
|
||||
* @param id 主键
|
||||
* @return 系统用户与项目关联
|
||||
*/
|
||||
@Override
|
||||
public UserProjectRelevancyVo queryById(Long id) {
|
||||
// 查询数据
|
||||
UserProjectRelevancy userProjectRelevancy = this.getById(id);
|
||||
// 封装并返回
|
||||
return this.getUserProjectRelevancyVo(userProjectRelevancy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询系统用户与项目关联列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 系统用户与项目关联分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<UserProjectRelevancyVo> queryPageList(UserProjectRelevancyBo bo, PageQuery pageQuery) {
|
||||
Page<UserProjectRelevancyVo> resultVo = pageQuery.build();
|
||||
LambdaQueryWrapper<UserProjectRelevancy> lqw = buildQueryWrapper(bo);
|
||||
Page<UserProjectRelevancy> result = this.page(pageQuery.build(), lqw);
|
||||
if (CollUtil.isEmpty(result.getRecords())) {
|
||||
return TableDataInfo.build(resultVo);
|
||||
}
|
||||
List<UserProjectRelevancyVo> userProjectRelevancyVos = result.getRecords().stream().map(this::getUserProjectRelevancyVo).toList();
|
||||
resultVo.setRecords(userProjectRelevancyVos);
|
||||
return TableDataInfo.build(resultVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的系统用户与项目关联列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @return 系统用户与项目关联列表
|
||||
*/
|
||||
@Override
|
||||
public List<UserProjectRelevancyVo> queryList(UserProjectRelevancyBo bo) {
|
||||
LambdaQueryWrapper<UserProjectRelevancy> lqw = buildQueryWrapper(bo);
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<UserProjectRelevancy> buildQueryWrapper(UserProjectRelevancyBo bo) {
|
||||
LambdaQueryWrapper<UserProjectRelevancy> lqw = Wrappers.lambdaQuery();
|
||||
lqw.orderByAsc(UserProjectRelevancy::getId);
|
||||
lqw.eq(bo.getUserId() != null, UserProjectRelevancy::getUserId, bo.getUserId());
|
||||
lqw.eq(bo.getProjectId() != null, UserProjectRelevancy::getProjectId, bo.getProjectId());
|
||||
return lqw;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增系统用户与项目关联
|
||||
*
|
||||
* @param req 系统用户与项目关联
|
||||
* @return 是否新增成功
|
||||
*/
|
||||
@Override
|
||||
public Long insertByBo(UserProjectRelevancyCreateReq req) {
|
||||
// 将实体类和 DTO 进行转换
|
||||
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
||||
BeanUtils.copyProperties(req, userProjectRelevancy);
|
||||
// 数据校验
|
||||
validEntityBeforeSave(userProjectRelevancy);
|
||||
// 判断对应项目是否存在
|
||||
if (projectService.getById(userProjectRelevancy.getProjectId()) == null) {
|
||||
throw new ServiceException("项目不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// 判断对应的用户与项目关联是否存在
|
||||
if (this.getOne(new LambdaQueryWrapper<UserProjectRelevancy>()
|
||||
.eq(UserProjectRelevancy::getUserId, userProjectRelevancy.getUserId())
|
||||
.eq(UserProjectRelevancy::getProjectId, userProjectRelevancy.getProjectId())) != null) {
|
||||
throw new ServiceException("用户和项目关联已存在", HttpStatus.CONFLICT);
|
||||
}
|
||||
// 写入数据库
|
||||
boolean save = this.save(userProjectRelevancy);
|
||||
if (!save) {
|
||||
throw new ServiceException("新增用户和项目关联失败,数据库异常", HttpStatus.ERROR);
|
||||
}
|
||||
// 返回新写入的数据 id
|
||||
return userProjectRelevancy.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改系统用户与项目关联
|
||||
*
|
||||
* @param req 系统用户与项目关联
|
||||
* @return 是否修改成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean updateByBo(UserProjectRelevancyUpdateReq req) {
|
||||
// 将实体类和 DTO 进行转换
|
||||
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
||||
BeanUtils.copyProperties(req, userProjectRelevancy);
|
||||
// 数据校验
|
||||
validEntityBeforeSave(userProjectRelevancy);
|
||||
// 判断是否存在
|
||||
UserProjectRelevancy oldUserProjectRelevancy = this.getById(userProjectRelevancy.getId());
|
||||
if (oldUserProjectRelevancy == null) {
|
||||
throw new ServiceException("修改用户和项目关联失败,数据不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
// 操作数据库
|
||||
return this.updateById(oldUserProjectRelevancy);
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
private void validEntityBeforeSave(UserProjectRelevancy entity) {
|
||||
// TODO 做一些数据校验,如唯一约束
|
||||
Long projectId = entity.getProjectId();
|
||||
Long userId = entity.getUserId();
|
||||
if (projectId == null) {
|
||||
throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
if (userId == null) {
|
||||
throw new ServiceException("用户 id 不能为空", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验并批量删除系统用户与项目关联信息
|
||||
*
|
||||
* @param ids 待删除的主键集合
|
||||
* @param isValid 是否进行有效性校验
|
||||
* @return 是否删除成功
|
||||
*/
|
||||
@Override
|
||||
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
||||
if (isValid) {
|
||||
//TODO 做一些业务上的校验,判断是否需要校验
|
||||
}
|
||||
return baseMapper.deleteByIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录用户项目列表
|
||||
*
|
||||
* @param userId 登录用户ID
|
||||
* @return 当前登录用户项目列表
|
||||
*/
|
||||
@Override
|
||||
public List<LoginUserProjectRelevancyResp> queryListByUserId(Long userId) {
|
||||
// 添加查询条件,根据当前用户,获取数据
|
||||
LambdaQueryWrapper<UserProjectRelevancy> queryWrapper = Wrappers.lambdaQuery();
|
||||
// 如果是超级管理员查看所有
|
||||
if (!LoginHelper.isSuperAdmin()) {
|
||||
queryWrapper.eq(UserProjectRelevancy::getUserId, userId);
|
||||
}
|
||||
// 查询数据库,获取数据
|
||||
List<UserProjectRelevancy> list = this.list(queryWrapper);
|
||||
// 获取封装
|
||||
return list.stream()
|
||||
.map(userProjectRelevancy -> {
|
||||
Long projectId = userProjectRelevancy.getProjectId();
|
||||
QueryWrapper<Project> projectQueryWrapper = new QueryWrapper<>();
|
||||
projectQueryWrapper.eq("id", projectId);
|
||||
Project project = projectService.getOne(projectQueryWrapper);
|
||||
if (project != null) {
|
||||
LoginUserProjectRelevancyResp loginUserProjectRelevancy = new LoginUserProjectRelevancyResp();
|
||||
loginUserProjectRelevancy.setId(userProjectRelevancy.getId());
|
||||
loginUserProjectRelevancy.setUserId(userProjectRelevancy.getUserId());
|
||||
loginUserProjectRelevancy.setProjectId(projectId);
|
||||
loginUserProjectRelevancy.setProjectName(project.getProjectName());
|
||||
loginUserProjectRelevancy.setShortName(project.getShortName());
|
||||
return loginUserProjectRelevancy;
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req) {
|
||||
long current = req.getCurrent();
|
||||
long size = req.getPageSize();
|
||||
// 如果是超级管理员查看所有
|
||||
if (!LoginHelper.isSuperAdmin()) {
|
||||
// 添加查询条件
|
||||
req.setUserId(userId);
|
||||
}
|
||||
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
|
||||
// 查询数据库
|
||||
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), queryWrapper);
|
||||
return this.getUserProjectRelevancyVoPage(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public QueryWrapper<UserProjectRelevancy> getQueryWrapper(UserProjectRelevancyQueryReq req) {
|
||||
QueryWrapper<UserProjectRelevancy> queryWrapper = new QueryWrapper<>();
|
||||
if (req == null) {
|
||||
return queryWrapper;
|
||||
}
|
||||
// 从对象中取值
|
||||
Long id = req.getId();
|
||||
Long userId = req.getUserId();
|
||||
Long projectId = req.getProjectId();
|
||||
String sortField = req.getSortField();
|
||||
String sortOrder = req.getSortOrder();
|
||||
String underlineSortField = StrUtil.toUnderlineCase(sortField);
|
||||
// 精确查询
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(userId), "user_id", userId);
|
||||
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
|
||||
// 排序规则
|
||||
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
|
||||
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
|
||||
underlineSortField);
|
||||
return queryWrapper;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增用户和项目关联
|
||||
*
|
||||
* @param req 新增参数
|
||||
* @return 是否增加成功
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Boolean insertBatchByProjectList(ProjectBatchByProjectListReq req) {
|
||||
Long userId = req.getUserId();
|
||||
Long[] projectIdList = req.getProjectIdList();
|
||||
long count = projectService.count(new QueryWrapper<Project>().in("id", (Object[]) projectIdList));
|
||||
if (count < projectIdList.length) {
|
||||
throw new ServiceException("项目ID列表错误,一个或多个项目不存在", HttpStatus.NOT_FOUND);
|
||||
}
|
||||
List<UserProjectRelevancy> userProjectRelevancyList = Arrays.stream(projectIdList).map(projectId -> {
|
||||
UserProjectRelevancy userProjectRelevancy = new UserProjectRelevancy();
|
||||
userProjectRelevancy.setUserId(userId);
|
||||
userProjectRelevancy.setProjectId(projectId);
|
||||
// 查询对应用户与项目关联信息是否存在
|
||||
QueryWrapper<UserProjectRelevancy> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("user_id", userId);
|
||||
queryWrapper.eq("project_id", projectId);
|
||||
// 如果存在则不保存
|
||||
UserProjectRelevancy one = this.getOne(queryWrapper);
|
||||
if (one != null) {
|
||||
return null;
|
||||
}
|
||||
return userProjectRelevancy;
|
||||
}).filter(Objects::nonNull).toList();
|
||||
if (userProjectRelevancyList.isEmpty()) {
|
||||
throw new ServiceException("对应用户与项目关系均已存在,无需重复添加", HttpStatus.BAD_REQUEST);
|
||||
}
|
||||
// 当用户与项目关系存在时修改,不存在则保存
|
||||
return this.saveOrUpdateBatch(userProjectRelevancyList);
|
||||
}
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
java包使用 `.` 分割 resource 目录使用 `/` 分割
|
||||
<br>
|
||||
此文件目的 防止文件夹粘连找不到 `xml` 文件
|
@ -0,0 +1,7 @@
|
||||
<?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="org.dromara.project.mapper.ProjectMapper">
|
||||
|
||||
</mapper>
|
@ -0,0 +1,7 @@
|
||||
<?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="org.dromara.project.mapper.UserProjectRelevancyMapper">
|
||||
|
||||
</mapper>
|
124
RuoYi-Vue-Plus/script/sql/xinnengyuan.sql
Normal file
124
RuoYi-Vue-Plus/script/sql/xinnengyuan.sql
Normal file
@ -0,0 +1,124 @@
|
||||
use energy;
|
||||
|
||||
drop table if exists `project`;
|
||||
create table `project`
|
||||
(
|
||||
`id` bigint not null auto_increment,
|
||||
`project_name` varchar(64) null comment '项目名称',
|
||||
`short_name` varchar(64) null comment '项目简称',
|
||||
`p_id` bigint null comment '父项目id',
|
||||
`status` tinyint(4) default 0 null comment '状态(0正常 1停用)',
|
||||
`pic_url` varchar(255) null comment '项目图片',
|
||||
`lng` varchar(20) null COMMENT '经度',
|
||||
`lat` varchar(20) null COMMENT '纬度',
|
||||
`remark` varchar(500) null comment '备注',
|
||||
`type` varchar(20) null comment '项目类型',
|
||||
`is_type` tinyint(4) null comment '项目类型(1光伏 2风电)',
|
||||
`create_by` bigint null comment '创建者',
|
||||
`update_by` bigint null comment '更新者',
|
||||
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
|
||||
`update_time` datetime default CURRENT_TIMESTAMP null ON UPDATE CURRENT_TIMESTAMP comment '更新时间',
|
||||
`deleted_at` datetime null comment '删除时间',
|
||||
`project_site` varchar(255) null comment '项目地址',
|
||||
`principal` varchar(50) null comment '负责人',
|
||||
`principal_phone` varchar(50) null comment '负责人电话',
|
||||
`actual` varchar(64) null comment '实际容量',
|
||||
`plan` varchar(64) null comment '计划容量',
|
||||
`on_stream_time` varchar(64) null comment '开工时间',
|
||||
`punch_range` varchar(30) default '09:00,18:00' not null comment '打卡范围(09:00,18:00)',
|
||||
`design_total` int default 0 not null comment '设计总量',
|
||||
`security_agreement` varchar(255) null comment '安全协议书',
|
||||
`sort` bigint default 0 not null comment '排序字段',
|
||||
`show_hidden` tinyint(4) default 0 not null comment '显示隐藏(0显示 1隐藏)',
|
||||
`is_delete` tinyint(4) default 0 not null comment '是否删除(0正常 1删除)',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB
|
||||
AUTO_INCREMENT = 60
|
||||
CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci comment = '项目表'
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
DROP TABLE IF EXISTS `user_project_relevancy`;
|
||||
CREATE TABLE `user_project_relevancy`
|
||||
(
|
||||
`id` bigint not null AUTO_INCREMENT COMMENT '主键ID',
|
||||
`user_id` bigint not null comment '用户ID',
|
||||
`project_id` bigint not null comment '项目ID',
|
||||
`create_by` varchar(50) null comment '创建人',
|
||||
`update_by` varchar(50) null comment '更新人',
|
||||
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
|
||||
`update_time` datetime default CURRENT_TIMESTAMP null ON UPDATE CURRENT_TIMESTAMP comment '更新时间',
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
INDEX `user_id` (`user_id` ASC) USING BTREE COMMENT '用户id',
|
||||
INDEX `project_id` (`project_id` ASC) USING BTREE COMMENT '项目id'
|
||||
) ENGINE = InnoDB
|
||||
AUTO_INCREMENT = 1365
|
||||
CHARACTER SET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT = '系统用户与项目关联'
|
||||
ROW_FORMAT = DYNAMIC;
|
||||
|
||||
|
||||
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896943300447367169, '项目', '1', '1', 'project', 'project/project/index', 1, 0, 'C', '0', '0',
|
||||
'project:project:list', '#', 103, 1, sysdate(), null, null, '项目菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896943300447367170, '项目查询', 1896943300447367169, '1', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:project:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896943300447367171, '项目新增', 1896943300447367169, '2', '#', '', 1, 0, 'F', '0', '0', 'project:project:add',
|
||||
'#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896943300447367172, '项目修改', 1896943300447367169, '3', '#', '', 1, 0, 'F', '0', '0', 'project:project:edit',
|
||||
'#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896943300447367173, '项目删除', 1896943300447367169, '4', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:project:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896943300447367174, '项目导出', 1896943300447367169, '5', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:project:export', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
-- 菜单 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896949180526047233, '系统用户与项目关联', '1', '1', 'projectRelevancy', 'project/projectRelevancy/index', 1, 0,
|
||||
'C', '0', '0', 'project:projectRelevancy:list', '#', 103, 1, sysdate(), null, null, '系统用户与项目关联菜单');
|
||||
|
||||
-- 按钮 SQL
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896949180526047234, '系统用户与项目关联查询', 1896949180526047233, '1', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:projectRelevancy:query', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896949180526047235, '系统用户与项目关联新增', 1896949180526047233, '2', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:projectRelevancy:add', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896949180526047236, '系统用户与项目关联修改', 1896949180526047233, '3', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:projectRelevancy:edit', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896949180526047237, '系统用户与项目关联删除', 1896949180526047233, '4', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:projectRelevancy:remove', '#', 103, 1, sysdate(), null, null, '');
|
||||
|
||||
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
|
||||
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
|
||||
values (1896949180526047238, '系统用户与项目关联导出', 1896949180526047233, '5', '#', '', 1, 0, 'F', '0', '0',
|
||||
'project:projectRelevancy:export', '#', 103, 1, sysdate(), null, null, '');
|
Reference in New Issue
Block a user