From f1ca0b6040a797cf43ceb98ee8cb7df5309ecf0f Mon Sep 17 00:00:00 2001 From: lcj <2331845269@qq.com> Date: Mon, 31 Mar 2025 17:59:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E9=A1=B9=E7=9B=AE=E3=80=81?= =?UTF-8?q?=E5=88=86=E5=8C=85=E5=8D=95=E4=BD=8D=E3=80=81=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=E7=8F=AD=E7=BB=84=E3=80=81=E6=96=BD=E5=B7=A5=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=9B=E6=B7=BB=E5=8A=A0=E6=96=BD=E5=B7=A5?= =?UTF-8?q?=E4=BA=BA=E5=91=98=E5=87=BA=E5=85=A5=E5=9C=BA=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=8C=E4=BA=BA=E5=91=98=E8=BF=81=E7=A7=BB?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BusConstructionUserController.java | 12 +++ .../BusConstructionUserExitController.java | 67 ++++++++++++ .../controller/BusProjectController.java | 10 ++ .../BusProjectTeamMemberController.java | 13 +-- .../domain/BusConstructionUserExit.java | 71 ++++++++++++ .../ConstructionUserChangeProjectReq.java | 35 ++++++ .../ConstructionUserUpdateReq.java | 5 - .../ConstructionUserExitQueryReq.java | 57 ++++++++++ .../ProjectTeamMemberExitReq.java | 32 ++++++ .../project/ProjectContractorListResp.java | 35 ++++++ .../domain/vo/BusConstructionUserExitVo.java | 82 ++++++++++++++ .../project/domain/vo/BusProjectVo.java | 10 ++ .../mapper/BusConstructionUserExitMapper.java | 15 +++ .../IBusConstructionUserExitService.java | 54 ++++++++++ .../service/IBusConstructionUserService.java | 9 ++ .../project/service/IBusProjectService.java | 8 ++ .../service/IBusProjectTeamMemberService.java | 9 +- .../BusConstructionUserExitServiceImpl.java | 102 ++++++++++++++++++ .../impl/BusConstructionUserServiceImpl.java | 46 +++++++- .../service/impl/BusProjectServiceImpl.java | 62 +++++++++-- .../impl/BusProjectTeamMemberServiceImpl.java | 65 +++++++---- .../controller/system/SysOssController.java | 24 ++++- .../system/service/ISysOssService.java | 11 +- .../service/impl/SysOssServiceImpl.java | 24 +++++ .../project/BusConstructionUserExitMapper.xml | 7 ++ RuoYi-Vue-Plus/script/sql/xinnengyuan.sql | 33 ++++++ 26 files changed, 846 insertions(+), 52 deletions(-) create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserExitController.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUserExit.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserChangeProjectReq.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuserexit/ConstructionUserExitQueryReq.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberExitReq.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/project/ProjectContractorListResp.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserExitVo.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/mapper/BusConstructionUserExitMapper.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserExitService.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserExitServiceImpl.java create mode 100644 RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/resources/mapper/project/BusConstructionUserExitMapper.xml diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java index cb677a98..4e88644c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserController.java @@ -15,6 +15,7 @@ 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.web.core.BaseController; +import org.dromara.project.domain.req.constructionuser.ConstructionUserChangeProjectReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq; @@ -93,6 +94,17 @@ public class BusConstructionUserController extends BaseController { return toAjax(busConstructionUserService.updateByBo(req)); } + /** + * 人员迁移 + */ + @SaCheckPermission("project:constructionUser:edit") + @Log(title = "施工人员", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/change/project") + public R changeUserProject(@Validated(EditGroup.class) @RequestBody ConstructionUserChangeProjectReq req) { + return toAjax(busConstructionUserService.changeUserProject(req)); + } + /** * 删除施工人员 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserExitController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserExitController.java new file mode 100644 index 00000000..08151121 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusConstructionUserExitController.java @@ -0,0 +1,67 @@ +package org.dromara.project.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.excel.utils.ExcelUtil; +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.web.core.BaseController; +import org.dromara.project.domain.req.constructionuserexit.ConstructionUserExitQueryReq; +import org.dromara.project.domain.vo.BusConstructionUserExitVo; +import org.dromara.project.service.IBusConstructionUserExitService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +/** + * 施工人员入场退场记录信息 + * + * @author lcj + * @date 2025-03-31 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/project/constructionUserExit") +public class BusConstructionUserExitController extends BaseController { + + private final IBusConstructionUserExitService busConstructionUserExitService; + + /** + * 查询施工人员入场退场记录信息列表 + */ + @SaCheckPermission("project:constructionUserExit:list") + @GetMapping("/list") + public TableDataInfo list(ConstructionUserExitQueryReq req, PageQuery pageQuery) { + return busConstructionUserExitService.queryPageList(req, pageQuery); + } + + /** + * 导出施工人员入场退场记录信息列表 + */ + @SaCheckPermission("project:constructionUserExit:export") + @Log(title = "施工人员入场退场记录信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(ConstructionUserExitQueryReq req, HttpServletResponse response) { + List list = busConstructionUserExitService.queryList(req); + ExcelUtil.exportExcel(list, "施工人员入场退场记录信息", BusConstructionUserExitVo.class, response); + } + + /** + * 获取施工人员入场退场记录信息详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("project:constructionUserExit:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable Long id) { + return R.ok(busConstructionUserExitService.queryById(id)); + } +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectController.java index e8fc28c0..91fda396 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectController.java @@ -20,6 +20,7 @@ import org.dromara.common.web.core.BaseController; 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.resp.project.ProjectContractorListResp; import org.dromara.project.domain.vo.BusProjectVo; import org.dromara.project.service.IBusProjectService; import org.springframework.validation.annotation.Validated; @@ -73,6 +74,15 @@ public class BusProjectController extends BaseController { return R.ok(projectService.queryById(id)); } + /** + * 查询项目以及项目下的分包公司列表 + */ + @SaCheckPermission("project:project:query") + @GetMapping("/list/project/contractorList") + public R> listProjectContractorList() { + return R.ok(projectService.queryProjectContractorList()); + } + /** * 新增项目 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectTeamMemberController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectTeamMemberController.java index c8feb540..836a9b61 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectTeamMemberController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/BusProjectTeamMemberController.java @@ -2,7 +2,6 @@ package org.dromara.project.controller; import cn.dev33.satoken.annotation.SaCheckPermission; 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; @@ -16,6 +15,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberCreateReq; +import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberExitReq; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberQueryReq; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberUpdateReq; import org.dromara.project.domain.vo.BusProjectTeamMemberVo; @@ -94,15 +94,12 @@ public class BusProjectTeamMemberController extends BaseController { } /** - * 删除项目班组下的成员 - * - * @param ids 主键串 + * 施工人员退场 */ @SaCheckPermission("project:projectTeamMember:remove") @Log(title = "项目班组下的成员", businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public R remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { - return toAjax(busProjectTeamMemberService.deleteWithValidByIds(List.of(ids), true)); + @DeleteMapping("/") + public R remove(@RequestBody ProjectTeamMemberExitReq req) { + return toAjax(busProjectTeamMemberService.deleteById(req)); } } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUserExit.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUserExit.java new file mode 100644 index 00000000..14cb24fa --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/BusConstructionUserExit.java @@ -0,0 +1,71 @@ +package org.dromara.project.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 施工人员入场退场记录信息对象 bus_construction_user_exit + * + * @author lcj + * @date 2025-03-31 + */ +@Data +@TableName("bus_construction_user_exit") +public class BusConstructionUserExit implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id") + private Long id; + + /** + * 身份证号码 + */ + private String sfzNumber; + + /** + * 用户id + */ + private Long userId; + + /** + * 项目id + */ + private Long projectId; + + /** + * 班组id + */ + private Long teamId; + + /** + * 入场时间 + */ + private Date entryDate; + + /** + * 退场时间 + */ + private Date leaveDate; + + /** + * 退场文件 + */ + private String path; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserChangeProjectReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserChangeProjectReq.java new file mode 100644 index 00000000..390897a1 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserChangeProjectReq.java @@ -0,0 +1,35 @@ +package org.dromara.project.domain.req.constructionuser; + +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/3/31 14:50 + */ +@Data +public class ConstructionUserChangeProjectReq implements Serializable { + @Serial + private static final long serialVersionUID = -2638471692809830501L; + + /** + * 主键 + */ + @NotNull(message = "主键id不能为空") + private Long id; + + /** + * 项目id + */ + @NotNull(message = "项目id不能为空") + private Long projectId; + + /** + * 分包公司id + */ + @NotNull(message = "分包公司id不能为空") + private Long contractorId; +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java index 678336ac..b3c9ca1c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuser/ConstructionUserUpdateReq.java @@ -30,11 +30,6 @@ public class ConstructionUserUpdateReq implements Serializable { */ private String userName; - /** - * 项目id - */ - private Long projectId; - /** * 分包公司id */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuserexit/ConstructionUserExitQueryReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuserexit/ConstructionUserExitQueryReq.java new file mode 100644 index 00000000..99c50160 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/constructionuserexit/ConstructionUserExitQueryReq.java @@ -0,0 +1,57 @@ +package org.dromara.project.domain.req.constructionuserexit; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/3/31 15:13 + */ +@Data +public class ConstructionUserExitQueryReq implements Serializable { + + @Serial + private static final long serialVersionUID = 1108809723013529990L; + + /** + * 主键id + */ + private Long id; + + /** + * 身份证号码 + */ + private String sfzNumber; + + /** + * 用户id + */ + private Long userId; + + /** + * 项目id + */ + private Long projectId; + + /** + * 班组id + */ + private Long teamId; + + /** + * 入场时间 + */ + private String entryDate; + + /** + * 退场时间 + */ + private String leaveDate; + + /** + * 备注 + */ + private String remark; +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberExitReq.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberExitReq.java new file mode 100644 index 00000000..a8dc29a6 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/req/projectteammember/ProjectTeamMemberExitReq.java @@ -0,0 +1,32 @@ +package org.dromara.project.domain.req.projectteammember; + +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; + +/** + * @author lcj + * @date 2025/3/31 10:54 + */ +@Data +public class ProjectTeamMemberExitReq implements Serializable { + + @Serial + private static final long serialVersionUID = 6911310088122710744L; + + /** + * 主键id + */ + private Long id; + + /** + * 文件路径 + */ + private String filePath; + + /** + * 备注 + */ + private String remark; +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/project/ProjectContractorListResp.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/project/ProjectContractorListResp.java new file mode 100644 index 00000000..79190719 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/resp/project/ProjectContractorListResp.java @@ -0,0 +1,35 @@ +package org.dromara.project.domain.resp.project; + +import lombok.Data; +import org.dromara.common.core.domain.vo.IdAndNameVO; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** + * @author lcj + * @date 2025/3/31 16:16 + */ +@Data +public class ProjectContractorListResp implements Serializable { + + @Serial + private static final long serialVersionUID = 3089953733712392942L; + + /** + * id + */ + private Long id; + + /** + * 项目名称 + */ + private String projectName; + + /** + * 项目下的分包公司列表 + */ + private List contractorList; + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserExitVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserExitVo.java new file mode 100644 index 00000000..4e3f2bc2 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusConstructionUserExitVo.java @@ -0,0 +1,82 @@ +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.BusConstructionUserExit; + +import java.io.Serial; +import java.io.Serializable; + + +/** + * 施工人员入场退场记录信息视图对象 bus_construction_user_exit + * + * @author lcj + * @date 2025-03-31 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = BusConstructionUserExit.class) +public class BusConstructionUserExitVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @ExcelProperty(value = "主键id") + private Long id; + + /** + * 身份证号码 + */ + @ExcelProperty(value = "身份证号码") + private String sfzNumber; + + /** + * 用户id + */ + @ExcelProperty(value = "用户id") + private Long userId; + + /** + * 项目id + */ + @ExcelProperty(value = "项目id") + private Long projectId; + + /** + * 班组id + */ + @ExcelProperty(value = "班组id") + private Long teamId; + + /** + * 入场时间 + */ + @ExcelProperty(value = "入场时间") + private String entryDate; + + /** + * 退场时间 + */ + @ExcelProperty(value = "退场时间") + private String leaveDate; + + /** + * 退场文件 + */ + @ExcelProperty(value = "退场文件") + private String path; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusProjectVo.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusProjectVo.java index daa230c7..b24d7722 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusProjectVo.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/BusProjectVo.java @@ -138,6 +138,16 @@ public class BusProjectVo implements Serializable { @ExcelProperty(value = "打卡范围") private String punchRange; + /** + * 打卡时间开始 + */ + private String playCardStart; + + /** + * 打卡时间结束 + */ + private String playCardEnd; + /** * 设计总量 */ diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/mapper/BusConstructionUserExitMapper.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/mapper/BusConstructionUserExitMapper.java new file mode 100644 index 00000000..3ddc9313 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/mapper/BusConstructionUserExitMapper.java @@ -0,0 +1,15 @@ +package org.dromara.project.mapper; + +import org.dromara.project.domain.BusConstructionUserExit; +import org.dromara.project.domain.vo.BusConstructionUserExitVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 施工人员入场退场记录信息Mapper接口 + * + * @author lcj + * @date 2025-03-31 + */ +public interface BusConstructionUserExitMapper extends BaseMapperPlus { + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserExitService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserExitService.java new file mode 100644 index 00000000..0a435002 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserExitService.java @@ -0,0 +1,54 @@ +package org.dromara.project.service; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +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.BusConstructionUserExit; +import org.dromara.project.domain.req.constructionuserexit.ConstructionUserExitQueryReq; +import org.dromara.project.domain.vo.BusConstructionUserExitVo; + +import java.util.List; + +/** + * 施工人员入场退场记录信息Service接口 + * + * @author lcj + * @date 2025-03-31 + */ +public interface IBusConstructionUserExitService extends IService { + + /** + * 查询施工人员入场退场记录信息 + * + * @param id 主键 + * @return 施工人员入场退场记录信息 + */ + BusConstructionUserExitVo queryById(Long id); + + /** + * 分页查询施工人员入场退场记录信息列表 + * + * @param req 查询条件 + * @param pageQuery 分页参数 + * @return 施工人员入场退场记录信息分页列表 + */ + TableDataInfo queryPageList(ConstructionUserExitQueryReq req, PageQuery pageQuery); + + /** + * 查询符合条件的施工人员入场退场记录信息列表 + * + * @param req 查询条件 + * @return 施工人员入场退场记录信息列表 + */ + List queryList(ConstructionUserExitQueryReq req); + + /** + * 获取施工人员入场退场记录信息查询条件封装 + * + * @param req 查询条件 + * @return 查询条件封装 + */ + LambdaQueryWrapper buildQueryWrapper(ConstructionUserExitQueryReq req); + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java index 36af2d91..035fa239 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusConstructionUserService.java @@ -6,6 +6,7 @@ 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.BusConstructionUser; +import org.dromara.project.domain.req.constructionuser.ConstructionUserChangeProjectReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq; @@ -63,6 +64,14 @@ public interface IBusConstructionUserService extends IService { */ List queryList(ProjectQueryReq req); + /** + * 查询当前登录用户项目列表以及项目列表下的分包公司列表 + * + * @return 项目列表以及项目列表下的分包公司列表 + */ + List queryProjectContractorList(); + /** * 新增项目 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectTeamMemberService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectTeamMemberService.java index e174759e..865a3ea3 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectTeamMemberService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusProjectTeamMemberService.java @@ -7,11 +7,11 @@ import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.project.domain.BusProjectTeamMember; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberCreateReq; +import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberExitReq; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberQueryReq; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberUpdateReq; import org.dromara.project.domain.vo.BusProjectTeamMemberVo; -import java.util.Collection; import java.util.List; /** @@ -64,13 +64,12 @@ public interface IBusProjectTeamMemberService extends IService ids, Boolean isValid); + Boolean deleteById(ProjectTeamMemberExitReq req); /** * 获取项目班组成员视图对象 diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserExitServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserExitServiceImpl.java new file mode 100644 index 00000000..9a9508d9 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserExitServiceImpl.java @@ -0,0 +1,102 @@ +package org.dromara.project.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.dromara.common.core.utils.ObjectUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.project.domain.BusConstructionUserExit; +import org.dromara.project.domain.req.constructionuserexit.ConstructionUserExitQueryReq; +import org.dromara.project.domain.vo.BusConstructionUserExitVo; +import org.dromara.project.mapper.BusConstructionUserExitMapper; +import org.dromara.project.service.IBusConstructionUserExitService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 施工人员入场退场记录信息Service业务层处理 + * + * @author lcj + * @date 2025-03-31 + */ +@Service +public class BusConstructionUserExitServiceImpl extends ServiceImpl + implements IBusConstructionUserExitService { + + /** + * 查询施工人员入场退场记录信息 + * + * @param id 主键 + * @return 施工人员入场退场记录信息 + */ + @Override + public BusConstructionUserExitVo queryById(Long id) { + return baseMapper.selectVoById(id); + } + + /** + * 分页查询施工人员入场退场记录信息列表 + * + * @param req 查询条件 + * @param pageQuery 分页参数 + * @return 施工人员入场退场记录信息分页列表 + */ + @Override + public TableDataInfo queryPageList(ConstructionUserExitQueryReq req, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(req); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的施工人员入场退场记录信息列表 + * + * @param req 查询条件 + * @return 施工人员入场退场记录信息列表 + */ + @Override + public List queryList(ConstructionUserExitQueryReq req) { + LambdaQueryWrapper lqw = buildQueryWrapper(req); + return baseMapper.selectVoList(lqw); + } + + /** + * 获取施工人员入场退场记录信息查询条件封装 + * + * @param req 查询条件 + * @return 查询条件封装 + */ + @Override + public LambdaQueryWrapper buildQueryWrapper(ConstructionUserExitQueryReq req) { + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + if (req == null) { + return lqw; + } + Long id = req.getId(); + String sfzNumber = req.getSfzNumber(); + Long userId = req.getUserId(); + Long projectId = req.getProjectId(); + Long teamId = req.getTeamId(); + String entryDate = req.getEntryDate(); + String leaveDate = req.getLeaveDate(); + String remark = req.getRemark(); + // 模糊查询 + lqw.like(StringUtils.isNotBlank(sfzNumber), BusConstructionUserExit::getSfzNumber, sfzNumber); + lqw.like(StringUtils.isNotBlank(remark), BusConstructionUserExit::getRemark, remark); + // 精确查询 + lqw.eq(ObjectUtils.isNotEmpty(id), BusConstructionUserExit::getId, id); + lqw.eq(ObjectUtils.isNotEmpty(userId), BusConstructionUserExit::getUserId, userId); + lqw.eq(ObjectUtils.isNotEmpty(projectId), BusConstructionUserExit::getProjectId, projectId); + lqw.eq(ObjectUtils.isNotEmpty(teamId), BusConstructionUserExit::getTeamId, teamId); + lqw.eq(StringUtils.isNotBlank(entryDate), BusConstructionUserExit::getEntryDate, entryDate); + lqw.eq(StringUtils.isNotBlank(leaveDate), BusConstructionUserExit::getLeaveDate, leaveDate); + // 排序 + lqw.orderByAsc(BusConstructionUserExit::getId); + return lqw; + } + +} diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java index ef86aadc..47c62495 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusConstructionUserServiceImpl.java @@ -3,6 +3,7 @@ package org.dromara.project.service.impl; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -15,6 +16,7 @@ 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.*; +import org.dromara.project.domain.req.constructionuser.ConstructionUserChangeProjectReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq; import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq; @@ -151,6 +153,46 @@ public class BusConstructionUserServiceImpl extends ServiceImpl 0) { + throw new ServiceException("施工人员还未退场,不能修改", HttpStatus.BAD_REQUEST); + } + // 数据校验 + if (req.getProjectId().equals(constructionUser.getProjectId())) { + throw new ServiceException("已在当前项目下,请勿重复修改", HttpStatus.BAD_REQUEST); + } + if (req.getContractorId().equals(constructionUser.getContractorId())) { + throw new ServiceException("已在当前分包公司下,请勿重复修改", HttpStatus.BAD_REQUEST); + } + BusConstructionUser validUser = new BusConstructionUser(); + BeanUtils.copyProperties(req, validUser); + this.validEntityBeforeSave(validUser, false); + // 操作数据库,更新数据 + LambdaUpdateWrapper lambdaUpdate = Wrappers.lambdaUpdate(BusConstructionUser.class) + .eq(BusConstructionUser::getId, id) + .set(BusConstructionUser::getProjectId, req.getProjectId()) + .set(BusConstructionUser::getContractorId, req.getContractorId()); + return this.update(lambdaUpdate); + } + /** * 保存前的数据校验 */ @@ -168,10 +210,10 @@ public class BusConstructionUserServiceImpl extends ServiceImpl queryProjectContractorList() { + Long userId = LoginHelper.getUserId(); + // 获取当前登录用户的项目列表 + LambdaQueryWrapper userProjectRelevancyLqw = Wrappers.lambdaQuery(BusUserProjectRelevancy.class) + .select(BusUserProjectRelevancy::getProjectId) + .eq(BusUserProjectRelevancy::getUserId, userId); + List projectIdList = userProjectRelevancyService.listObjs(userProjectRelevancyLqw, obj -> (Long) obj); + List projectList = this.listByIds(projectIdList); + // 获取项目列表下的分包公司列表 + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BusContractor::getProjectId, projectIdList); + Map> projectIdContractorList = contractorService.list(lqw).stream() + .collect(Collectors.groupingBy(BusContractor::getProjectId)); + // 获取封装 + return projectList.stream().map(project -> { + ProjectContractorListResp projectContractorListResp = new ProjectContractorListResp(); + // 添加项目信息 + projectContractorListResp.setId(project.getId()); + projectContractorListResp.setProjectName(project.getProjectName()); + // 获取分包公司列表 + List contractorList = projectIdContractorList.get(project.getId()); + if (CollUtil.isEmpty(contractorList)) { + throw new ServiceException("项目:" + project.getProjectName() + "下无分包单位,请创建后再进行操作", HttpStatus.BAD_REQUEST); + } + List idAndNameVOS = contractorList.stream() + .map(contractor -> IdAndNameVO.build(contractor.getId(), contractor.getName())).toList(); + projectContractorListResp.setContractorList(idAndNameVOS); + return projectContractorListResp; + }).toList(); + } + /** * 新增项目 * @@ -114,7 +158,7 @@ public class BusProjectServiceImpl extends ServiceImpl userIdList = List.of(userId, SystemConstants.SUPER_ADMIN_ID); + Set userIdList = new HashSet<>(List.of(userId, SystemConstants.SUPER_ADMIN_ID)); List userProjectRelevancyList = userIdList.stream().map(id -> { BusUserProjectRelevancy userProjectRelevancy = new BusUserProjectRelevancy(); userProjectRelevancy.setUserId(id); @@ -142,7 +186,7 @@ public class BusProjectServiceImpl extends ServiceImpl !collect.contains(id)) .toList(); if (!invalidIds.isEmpty()) { - throw new ServiceException("删除失败,项目编号为:" + invalidIds + ",没有操作权限", HttpStatus.FORBIDDEN); + throw new ServiceException("操作失败,项目编号为:" + invalidIds + ",没有操作权限", HttpStatus.FORBIDDEN); } } diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java index 41e2d46d..6bcc9816 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamMemberServiceImpl.java @@ -16,9 +16,11 @@ 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.BusConstructionUser; +import org.dromara.project.domain.BusConstructionUserExit; import org.dromara.project.domain.BusProjectTeamMember; import org.dromara.project.domain.enums.ProjectTeamMemberPostEnum; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberCreateReq; +import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberExitReq; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberQueryReq; import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberUpdateReq; import org.dromara.project.domain.vo.BusProjectTeamMemberVo; @@ -28,7 +30,10 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** @@ -53,6 +58,9 @@ public class BusProjectTeamMemberServiceImpl extends ServiceImpl ids, Boolean isValid) { + public Boolean deleteById(ProjectTeamMemberExitReq req) { + // 判断是否有权限操作对应项目下的内容 Long userId = LoginHelper.getUserId(); - List projectTeamMemberList = this.listByIds(ids); - if (isValid) { - // 做一些业务上的校验,判断是否需要校验 - // 获取项目id列表 - List projectIdList = projectTeamMemberList.stream().map(BusProjectTeamMember::getProjectId).toList(); - // 判断是否有权限操作对应项目下的内容 - projectService.validAuth(projectIdList, userId); + Long id = req.getId(); + String filePath = req.getFilePath(); + if (StringUtils.isBlank(filePath)) { + throw new ServiceException("请上传退场文件", HttpStatus.BAD_REQUEST); } - // 判断对应数据是否都存在 - if (projectTeamMemberList.size() != ids.size()) { - throw new ServiceException("删除项目班组下的成员失败,数据缺失", HttpStatus.BAD_REQUEST); + BusProjectTeamMember projectTeamMember = this.getById(id); + if (projectTeamMember == null) { + throw new ServiceException("对应项目班组下的成员不存在", HttpStatus.NOT_FOUND); } - List memberIds = projectTeamMemberList.stream().map(BusProjectTeamMember::getMemberId).toList(); - LambdaUpdateWrapper queryWrapper = new LambdaUpdateWrapper<>(); - queryWrapper.in(BusConstructionUser::getId, memberIds); - queryWrapper.set(BusConstructionUser::getTeamId, null); - constructionUserService.update(null, queryWrapper); - return this.removeBatchByIds(ids); + projectService.validAuth(projectTeamMember.getProjectId(), userId); + boolean result = this.removeById(id); + if (!result) { + throw new ServiceException("删除项目班组下的成员失败,数据库异常", HttpStatus.ERROR); + } + // 将文件信息保存到数据库 + BusConstructionUser constructionUser = constructionUserService.getById(projectTeamMember.getMemberId()); + BusConstructionUserExit constructionUserExit = new BusConstructionUserExit(); + constructionUserExit.setProjectId(constructionUser.getProjectId()); + constructionUserExit.setUserId(constructionUser.getId()); + constructionUserExit.setPath(filePath); + constructionUserExit.setTeamId(constructionUser.getTeamId()); + constructionUserExit.setSfzNumber(constructionUser.getSfzNumber()); + constructionUserExit.setEntryDate(constructionUser.getEntryDate()); + constructionUserExit.setLeaveDate(new Date()); + constructionUserExit.setRemark(req.getRemark()); + constructionUserExitService.save(constructionUserExit); + // 同步修改用户表的team_id字段 + LambdaUpdateWrapper constructionUserLuw = Wrappers.lambdaUpdate(BusConstructionUser.class) + .eq(BusConstructionUser::getId, projectTeamMember.getMemberId()) + .set(BusConstructionUser::getTeamId, null) + .set(BusConstructionUser::getLeaveDate, new Date()); + constructionUserService.update(constructionUserLuw); + return true; } /** diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java index 81200c11..b8aea77c 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysOssController.java @@ -3,20 +3,20 @@ package org.dromara.system.controller.system; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.hutool.core.util.ObjectUtil; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotEmpty; +import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.QueryGroup; -import org.dromara.common.web.core.BaseController; 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.web.core.BaseController; import org.dromara.system.domain.bo.SysOssBo; import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.service.ISysOssService; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.validation.constraints.NotEmpty; -import lombok.RequiredArgsConstructor; import org.springframework.http.MediaType; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -81,6 +81,22 @@ public class SysOssController extends BaseController { return R.ok(uploadVo); } + /** + * 上传OSS对象存储(不自动保存数据) + * + * @param file 文件 + */ + @SaCheckPermission("system:oss:upload") + @Log(title = "OSS对象存储", businessType = BusinessType.INSERT) + @PostMapping(value = "/upload/vo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R uploadWithNoSave(@RequestPart("file") MultipartFile file) { + if (ObjectUtil.isNull(file)) { + return R.fail("上传文件不能为空"); + } + SysOssUploadVo uploadVo = ossService.uploadWithNoSave(file); + return R.ok(uploadVo); + } + /** * 下载OSS对象 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java index 057c068c..9d18f6d4 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysOssService.java @@ -1,10 +1,11 @@ package org.dromara.system.service; +import jakarta.servlet.http.HttpServletResponse; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.system.domain.bo.SysOssBo; +import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; -import jakarta.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; import java.io.File; @@ -52,6 +53,14 @@ public interface ISysOssService { */ SysOssVo upload(MultipartFile file); + /** + * 上传 MultipartFile 到对象存储服务,不保存文件信息到数据库 + * + * @param file 要上传的 MultipartFile 对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + */ + SysOssUploadVo uploadWithNoSave(MultipartFile file); + /** * 上传文件到对象存储服务,并保存文件信息到数据库 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java index c2eb08c7..e1650448 100644 --- a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysOssServiceImpl.java @@ -25,6 +25,7 @@ import org.dromara.common.oss.enumd.AccessPolicyType; import org.dromara.common.oss.factory.OssFactory; import org.dromara.system.domain.SysOss; import org.dromara.system.domain.bo.SysOssBo; +import org.dromara.system.domain.vo.SysOssUploadVo; import org.dromara.system.domain.vo.SysOssVo; import org.dromara.system.mapper.SysOssMapper; import org.dromara.system.service.ISysOssService; @@ -203,6 +204,29 @@ public class SysOssServiceImpl implements ISysOssService, OssService { return buildResultEntity(originalfileName, suffix, storage.getConfigKey(), uploadResult); } + /** + * 上传 MultipartFile 到对象存储服务,不保存文件信息到数据库 + * + * @param file 要上传的 MultipartFile 对象 + * @return 上传成功后的 SysOssVo 对象,包含文件信息 + */ + @Override + public SysOssUploadVo uploadWithNoSave(MultipartFile file) { + String originalFilename = file.getOriginalFilename(); + String suffix = StringUtils.substring(originalFilename, originalFilename.lastIndexOf("."), originalFilename.length()); + OssClient storage = OssFactory.instance(); + UploadResult uploadResult; + try { + uploadResult = storage.uploadSuffix(file.getBytes(), suffix, file.getContentType()); + } catch (IOException e) { + throw new ServiceException(e.getMessage()); + } + SysOssUploadVo uploadVo = new SysOssUploadVo(); + uploadVo.setUrl(uploadResult.getUrl()); + uploadVo.setFileName(originalFilename); + return uploadVo; + } + /** * 上传文件到对象存储服务,并保存文件信息到数据库 * diff --git a/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/resources/mapper/project/BusConstructionUserExitMapper.xml b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/resources/mapper/project/BusConstructionUserExitMapper.xml new file mode 100644 index 00000000..28c05196 --- /dev/null +++ b/RuoYi-Vue-Plus/ruoyi-modules/ruoyi-system/src/main/resources/mapper/project/BusConstructionUserExitMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql b/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql index d7537b69..7b1d7e30 100644 --- a/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql +++ b/RuoYi-Vue-Plus/script/sql/xinnengyuan.sql @@ -503,3 +503,36 @@ CREATE TABLE `bus_construction_blacklist` PRIMARY KEY (`id`) USING BTREE, INDEX `idx_user_id` (`user_id` ASC) USING BTREE comment '用户id' ) comment = '黑名单' collate = utf8mb4_unicode_ci; + +DROP TABLE IF EXISTS `bus_construction_user_file`; +CREATE TABLE `bus_construction_user_file` +( + `id` bigint not null auto_increment comment '主键id', + `user_id` bigint not null comment '用户id', + `file_type` char(2) null comment '图片类型', + `file_name` varchar(255) null comment '文件名称', + `path` varchar(1024) null comment '图片路径', + `create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间', + `update_time` datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间', + `remark` varchar(512) null comment '备注', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_user_id` (`user_id` ASC) USING BTREE comment '用户id' +) comment = '施工人员文件存储' collate = utf8mb4_unicode_ci; + +DROP TABLE IF EXISTS `bus_construction_user_exit`; +CREATE TABLE `bus_construction_user_exit` +( + `id` bigint not null auto_increment comment '主键id', + `sfz_number` varchar(32) null comment '身份证号码', + `user_id` bigint not null comment '用户id', + `project_id` bigint not null comment '项目id', + `team_id` bigint not null comment '班组id', + `entry_date` varchar(64) null comment '入场时间', + `leave_date` varchar(64) null comment '退场时间', + `path` varchar(1024) null comment '退场文件', + `remark` varchar(512) null comment '备注', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_user_id` (`user_id` ASC) USING BTREE comment '用户id', + INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目id', + INDEX `idx_team_id` (`team_id` ASC) USING BTREE comment '班组id' +) comment = '施工人员入场退场记录信息' COLLATE = utf8mb4_unicode_ci;