From b738bb821d650915a2603f372ecf3805d8a166f0 Mon Sep 17 00:00:00 2001 From: zt Date: Sat, 6 Sep 2025 13:06:33 +0800 Subject: [PATCH] app --- .../web/controller/AuthController.java | 6 + .../web/service/SysRegisterService.java | 40 ++++ .../src/main/resources/application-dev.yml | 2 +- .../core/domain/model/RegisterBody.java | 8 + .../common/utils/PdfBoxQrCodeGenerator.java | 214 +++++++++++++++--- .../SubConstructionUserController.java | 46 ++++ .../app/SubConstructionUserAppController.java | 12 + .../service/impl/DesDrawingServiceImpl.java | 6 + .../impl/DesVolumeFileServiceImpl.java | 12 +- .../controller/BusProjectTeamController.java | 13 ++ .../app/BusAttendanceAppController.java | 22 +- .../app/BusProjectAppController.java | 17 ++ .../vo/attendance/AttendanceUserInfoVo.java | 37 +++ .../vo/projectteam/BusProjectTeamVo.java | 6 + .../service/IBusAttendanceService.java | 10 +- .../impl/BusAttendanceServiceImpl.java | 36 ++- .../impl/BusProjectTeamMemberServiceImpl.java | 19 ++ .../impl/BusProjectTeamServiceImpl.java | 22 +- .../impl/QltQualityInspectionServiceImpl.java | 17 ++ .../controller/app/SysUserAppController.java | 87 +++++++ .../controller/system/SysMenuController.java | 15 +- .../dromara/system/domain/bo/SysDeptBo.java | 4 + .../domain/dto/role/ConPerSysRoleDto.java | 77 +++++++ .../dromara/system/domain/vo/SysRoleVo.java | 4 + .../service/impl/SysDeptServiceImpl.java | 19 ++ .../service/impl/SysUserServiceImpl.java | 1 + .../resources/mapper/system/SysMenuMapper.xml | 3 +- .../resources/mapper/system/SysRoleMapper.xml | 3 +- 28 files changed, 692 insertions(+), 66 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/attendance/AttendanceUserInfoVo.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/SysUserAppController.java create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/role/ConPerSysRoleDto.java diff --git a/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java b/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java index c6fd7229..94118bcf 100644 --- a/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java +++ b/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java @@ -193,6 +193,12 @@ public class AuthController { return R.ok(); } + @PostMapping("/app/register") + public R appRegister(@Validated @RequestBody RegisterBody user) { + registerService.appRegister(user); + return R.ok(); + } + /** * 登录页面租户下拉框 * diff --git a/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java b/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java index c1e83007..9f53e148 100644 --- a/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java +++ b/xinnengyuan/ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java @@ -77,6 +77,46 @@ public class SysRegisterService { recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.register.success")); } + /** + * 注册 + */ + public void appRegister(RegisterBody registerBody) { + String tenantId = registerBody.getTenantId(); + String username = registerBody.getPhonenumber(); + String password = registerBody.getPassword(); + // 校验用户类型是否存在 + String userType = UserType.getUserType(registerBody.getUserType()).getUserType(); + // 校验密码是否符合要求 + String pattern = "^(?!.*\\s)(?!^[a-zA-Z]+$)(?!^[0-9]+$)(?!^[^a-zA-Z0-9]+$)(?!^[a-zA-Z0-9]+$).{8,18}$"; + boolean isValid = password.matches(pattern); + if (!isValid) { + throw new UserException("注册失败,密码需满足8–18位,包含大小写字母、数字、特殊字符中的至少三种组合"); + } + // 验证码开关 + SysUserBo sysUser = new SysUserBo(); + sysUser.setUserName(username); + sysUser.setNickName(username); + sysUser.setPhonenumber(username); + sysUser.setPassword(BCrypt.hashpw(password)); + sysUser.setUserType(userType); + sysUser.setEmail(registerBody.getEmail()); + + boolean exist = TenantHelper.dynamic(tenantId, () -> { + return userMapper.exists(new LambdaQueryWrapper() + .eq(SysUser::getPhonenumber, sysUser.getPhonenumber())); + }); + if (exist) { + throw new UserException("user.register.save.error", username); + } + boolean regFlag = userService.registerUser(sysUser, tenantId); + if (!regFlag) { + throw new UserException("user.register.error"); + } + + recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.register.success")); + } + + /** * 校验验证码 * diff --git a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml index 5f83ddbc..ddae7951 100644 --- a/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml +++ b/xinnengyuan/ruoyi-admin/src/main/resources/application-dev.yml @@ -13,7 +13,7 @@ spring.boot.admin.client: --- # snail-job 配置 snail-job: - enabled: false + enabled: true # 需要在 SnailJob 后台组管理创建对应名称的组,然后创建任务的时候选择对应的组,才能正确分派任务 group: "ruoyi_group" # SnailJob 接入验证令牌 详见 script/sql/ry_job.sql `sj_group_config` 表 diff --git a/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/RegisterBody.java b/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/RegisterBody.java index 6ea8a764..ff874a04 100644 --- a/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/RegisterBody.java +++ b/xinnengyuan/ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/RegisterBody.java @@ -30,4 +30,12 @@ public class RegisterBody extends LoginBody { private String userType; + private Long projectId; + + private String email; + + private String phonenumber; + + private Long deptId; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/PdfBoxQrCodeGenerator.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/PdfBoxQrCodeGenerator.java index 6d208f7c..8e63cbd7 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/PdfBoxQrCodeGenerator.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/common/utils/PdfBoxQrCodeGenerator.java @@ -111,12 +111,129 @@ public class PdfBoxQrCodeGenerator { /** * 在PDF每一页的指定位置添加二维码并返回数据流(根据页面方向自动调整位置) */ +// public static ByteArrayOutputStream addQRCodeToPDFOnAllPages(String srcPdf, byte[] qrCodeBytes, boolean isChangeFile) +// throws IOException { +// +// PdfReader reader; +// if (srcPdf.startsWith("http://") || srcPdf.startsWith("https://")) { +// // 网络地址 PDF +// URL url = new URL(srcPdf); +// HttpURLConnection connection = (HttpURLConnection) url.openConnection(); +// connection.setConnectTimeout(10000); +// connection.setReadTimeout(30000); +// connection.setRequestMethod("GET"); +// +// int responseCode = connection.getResponseCode(); +// if (responseCode != HttpURLConnection.HTTP_OK) { +// throw new IOException("无法获取 PDF 文件,HTTP响应码: " + responseCode); +// } +// InputStream inputStream = connection.getInputStream(); +// reader = new PdfReader(inputStream); +// } else { +// // 本地文件 PDF +// File srcFile = new File(srcPdf); +// if (!srcFile.exists()) { +// throw new IOException("源PDF文件不存在: " + srcPdf); +// } +// reader = new PdfReader(srcPdf); +// } +// +// ByteArrayOutputStream pdfOut = new ByteArrayOutputStream(); +// PdfWriter writer = new PdfWriter(pdfOut); +// PdfDocument pdfDoc = new PdfDocument(reader, writer); +// +// int numberOfPages = pdfDoc.getNumberOfPages(); +// +// for (int pageNum = 1; pageNum <= numberOfPages; pageNum++) { +// PdfPage page = pdfDoc.getPage(pageNum); +// Rectangle pageSize = page.getPageSize(); +// +// float pageWidth = pageSize.getWidth(); +// float pageHeight = pageSize.getHeight(); +// +// float qrX, qrY; +// float newWidth, newHeight; +// +// if (isChangeFile && pageNum == 1) { +// qrX = pageWidth - 143; +// qrY = pageHeight - 213; +// newWidth = 67; +// newHeight = 80; +// } else { +// if (pageWidth > pageHeight) { +// // 横版 +// qrX = pageWidth - 90; +// qrY = 24; +// newWidth = 67; +// newHeight = 79; +// } else { +// // 竖版 +// qrX = 226; +// qrY = pageHeight - 185; +// newWidth = 69; +// newHeight = 80; +// } +// } +// +// PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), pdfDoc); +// try (Canvas canvas = new Canvas(pdfCanvas, page.getPageSize())) { +// ImageData imageData = ImageDataFactory.create(qrCodeBytes); +// Image image = new Image(imageData) +// .scaleAbsolute(newWidth, newHeight) +// .setFixedPosition(qrX, qrY); +// canvas.add(image); +// } +// } +// +// pdfDoc.close(); +// return pdfOut; +// } + +// public static void main(String[] args) { +// String path = "C:\\Users\\YuanJie\\Desktop\\test.pdf"; +// String outputPath = "C:\\Users\\YuanJie\\Desktop\\test1.pdf"; +// +// String params = "http://192.168.110.151:7788/codeDetail?id=" + "1957649652924448769"; +// byte[] bytes = PdfBoxQrCodeGenerator.generateQRCodeBytes(params); +// +// try { +// System.out.println("二维码字节大小: " + bytes.length + " 字节"); +// +// // 在每一页添加二维码 +// ByteArrayOutputStream byteArrayOutputStream = +// PdfBoxQrCodeGenerator.addQRCodeToPDFOnAllPages(path, bytes, false); +// +// try (FileOutputStream fileOut = new FileOutputStream(outputPath)) { +// byteArrayOutputStream.writeTo(fileOut); +// } +// +// System.out.println("PDF文件已成功生成到: " + outputPath); +// System.out.println("生成的PDF大小: " + new File(outputPath).length() + " 字节"); +// +// } catch (Exception e) { +// e.printStackTrace(); +// System.out.println("图纸管理 => 审核结束,向文件添加二维码失败"); +// } +// } + + + + + + + + + + + + /** + * 在PDF每一页的指定位置添加二维码并返回数据流(二维码放大10倍,居中放置,带边界检查) + */ public static ByteArrayOutputStream addQRCodeToPDFOnAllPages(String srcPdf, byte[] qrCodeBytes, boolean isChangeFile) throws IOException { PdfReader reader; if (srcPdf.startsWith("http://") || srcPdf.startsWith("https://")) { - // 网络地址 PDF URL url = new URL(srcPdf); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(10000); @@ -130,7 +247,6 @@ public class PdfBoxQrCodeGenerator { InputStream inputStream = connection.getInputStream(); reader = new PdfReader(inputStream); } else { - // 本地文件 PDF File srcFile = new File(srcPdf); if (!srcFile.exists()) { throw new IOException("源PDF文件不存在: " + srcPdf); @@ -144,6 +260,11 @@ public class PdfBoxQrCodeGenerator { int numberOfPages = pdfDoc.getNumberOfPages(); + // 默认放大倍数为10倍 + float scaleMultiplier = 10.0f; + float baseQrSize = 80f; + float qrSize = baseQrSize * scaleMultiplier; + for (int pageNum = 1; pageNum <= numberOfPages; pageNum++) { PdfPage page = pdfDoc.getPage(pageNum); Rectangle pageSize = page.getPageSize(); @@ -151,37 +272,27 @@ public class PdfBoxQrCodeGenerator { float pageWidth = pageSize.getWidth(); float pageHeight = pageSize.getHeight(); - float qrX, qrY; - float newWidth, newHeight; + // 确保二维码尺寸不会超过页面尺寸的80% + float maxQrSize = Math.min(pageWidth, pageHeight) * 0.8f; + float finalQrSize = Math.min(qrSize, maxQrSize); - if (isChangeFile && pageNum == 1) { - qrX = pageWidth - 143; - qrY = pageHeight - 213; - newWidth = 67; - newHeight = 80; - } else { - if (pageWidth > pageHeight) { - // 横版 - qrX = pageWidth - 90; - qrY = 24; - newWidth = 67; - newHeight = 79; - } else { - // 竖版 - qrX = 226; - qrY = pageHeight - 185; - newWidth = 69; - newHeight = 80; + // 将二维码放在页面中央 + float qrX = (pageWidth - finalQrSize) / 2; + float qrY = (pageHeight - finalQrSize) / 2; + + try { + PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), pdfDoc); + try (Canvas canvas = new Canvas(pdfCanvas, pageSize)) { + ImageData imageData = ImageDataFactory.create(qrCodeBytes); + com.itextpdf.layout.element.Image image = new com.itextpdf.layout.element.Image(imageData); + image.scaleAbsolute(finalQrSize, finalQrSize); + image.setFixedPosition(qrX, qrY); + canvas.add(image); } - } - PdfCanvas pdfCanvas = new PdfCanvas(page.newContentStreamAfter(), page.getResources(), pdfDoc); - try (Canvas canvas = new Canvas(pdfCanvas, page.getPageSize())) { - ImageData imageData = ImageDataFactory.create(qrCodeBytes); - Image image = new Image(imageData) - .scaleAbsolute(newWidth, newHeight) - .setFixedPosition(qrX, qrY); - canvas.add(image); + } catch (Exception e) { + System.err.println("在页面 " + pageNum + " 添加二维码时出错: " + e.getMessage()); + e.printStackTrace(); } } @@ -189,6 +300,8 @@ public class PdfBoxQrCodeGenerator { return pdfOut; } + + // 如果使用带放大倍数参数的方法,需要修改main方法: public static void main(String[] args) { String path = "C:\\Users\\YuanJie\\Desktop\\test.pdf"; String outputPath = "C:\\Users\\YuanJie\\Desktop\\test1.pdf"; @@ -199,7 +312,13 @@ public class PdfBoxQrCodeGenerator { try { System.out.println("二维码字节大小: " + bytes.length + " 字节"); - // 在每一页添加二维码 + // 先保存二维码图片用于验证 + try (FileOutputStream qrOut = new FileOutputStream("C:\\Users\\YuanJie\\Desktop\\qrcode.png")) { + qrOut.write(bytes); + System.out.println("二维码图片已保存到桌面,用于验证二维码是否生成正确"); + } + + // 在每一页添加二维码,放大10倍 ByteArrayOutputStream byteArrayOutputStream = PdfBoxQrCodeGenerator.addQRCodeToPDFOnAllPages(path, bytes, false); @@ -207,14 +326,45 @@ public class PdfBoxQrCodeGenerator { byteArrayOutputStream.writeTo(fileOut); } + File outputFile = new File(outputPath); System.out.println("PDF文件已成功生成到: " + outputPath); - System.out.println("生成的PDF大小: " + new File(outputPath).length() + " 字节"); + System.out.println("生成的PDF大小: " + outputFile.length() + " 字节"); + + if (outputFile.length() == new File(path).length()) { + System.out.println("警告:输出文件大小与原文件相同,可能二维码未正确添加"); + } } catch (Exception e) { e.printStackTrace(); System.out.println("图纸管理 => 审核结束,向文件添加二维码失败"); } } + + + + + + + + + + + + + + + + + + + + + + + + + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserController.java index 86819480..92fc00f3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/SubConstructionUserController.java @@ -22,6 +22,14 @@ import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserAtte import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserGisVo; import org.dromara.contractor.domain.vo.constructionuser.SubConstructionUserVo; import org.dromara.contractor.service.ISubConstructionUserService; +import org.dromara.project.domain.dto.project.BusProjectQueryReq; +import org.dromara.project.domain.dto.projectteam.BusProjectTeamQueryReq; +import org.dromara.project.domain.dto.projectteammember.BusProjectTeamMemberCreateReq; +import org.dromara.project.domain.vo.project.BusProjectVo; +import org.dromara.project.domain.vo.projectteam.BusProjectTeamVo; +import org.dromara.project.service.IBusProjectService; +import org.dromara.project.service.IBusProjectTeamMemberService; +import org.dromara.project.service.IBusProjectTeamService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -41,6 +49,12 @@ public class SubConstructionUserController extends BaseController { private final ISubConstructionUserService constructionUserService; + private final IBusProjectTeamService busProjectTeamService; + + private final IBusProjectTeamMemberService busProjectTeamMemberService; + + private final IBusProjectService projectService; + /** * 查询施工人员列表 */ @@ -190,4 +204,36 @@ public class SubConstructionUserController extends BaseController { @PathVariable Long[] ids) { return toAjax(constructionUserService.deleteWithValidByIds(List.of(ids), true)); } + + /** + * 查询项目班组列表 + */ + @SaCheckPermission("project:projectTeam:addTeam") + @GetMapping("/projectList") + public TableDataInfo list(BusProjectQueryReq req, PageQuery pageQuery) { + return projectService.queryPageList(req, pageQuery); + } + + /** + * 查询项目班组列表 + */ + @SaCheckPermission("project:projectTeam:addTeam") + @GetMapping("/teamList") + public TableDataInfo teamList(BusProjectTeamQueryReq req, PageQuery pageQuery) { + return busProjectTeamService.queryPageList(req, pageQuery); + } + + /** + * 添加项目班组 + */ + @SaCheckPermission("project:projectTeam:addTeam") + @RepeatSubmit() + @PostMapping("/addTeam") + public R add(@Validated(AddGroup.class) @RequestBody BusProjectTeamMemberCreateReq req) { + return R.ok(busProjectTeamMemberService.insertByBo(req)); + } + + + + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/app/SubConstructionUserAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/app/SubConstructionUserAppController.java index 4b99ec65..5563649e 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/app/SubConstructionUserAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/contractor/controller/app/SubConstructionUserAppController.java @@ -50,6 +50,18 @@ public class SubConstructionUserAppController { return R.ok(constructionUserService.getVo(constructionUser, false)); } + /** + * 获取当前登录用户实名信息 + */ + @GetMapping("/isReal") + public R isReal() { + SubConstructionUser constructionUser = constructionUserService.lambdaQuery() + .eq(SubConstructionUser::getSysUserId, LoginHelper.getUserId()) + .last("limit 1") + .one(); + return R.ok(constructionUserService.getVo(constructionUser, false)); + } + /** * 根据用户id查询施工人员信息 */ diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDrawingServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDrawingServiceImpl.java index 36bb2af6..c4b01e6f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDrawingServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/design/service/impl/DesDrawingServiceImpl.java @@ -48,6 +48,7 @@ import org.springframework.transaction.annotation.Transactional; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; +import java.io.FileOutputStream; import java.io.IOException; import java.net.FileNameMap; import java.net.URLConnection; @@ -446,6 +447,11 @@ public class DesDrawingServiceImpl extends ServiceImpl page = baseMapper.queryJoinPageList(pageQuery.build(), bo); for (DesVolumeFileJoinVo vo : page.getRecords()) { SysOssVo ossVo = ossService.getById(vo.getFileId()); - vo.setFileUrl(ossVo.getUrl()); + if (ossVo != null) { + vo.setFileUrl(ossVo.getUrl()); + } } return TableDataInfo.build(page); } @@ -482,6 +484,7 @@ public class DesVolumeFileServiceImpl extends ServiceImpllambdaUpdate() @@ -561,8 +564,7 @@ public class DesVolumeFileServiceImpl extends ServiceImpl list(BusProjectPunchrangeBo bo, PageQuery pageQuery) { + return busProjectPunchrangeService.queryPageList(bo, pageQuery); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java index 49754c8a..189ec69f 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusAttendanceAppController.java @@ -16,10 +16,7 @@ import org.dromara.project.domain.dto.attendance.BusAttendancePunchCardByFaceReq import org.dromara.project.domain.vo.BusAttendanceRuleVo; import org.dromara.project.domain.vo.BusAttendanceVo; import org.dromara.project.domain.vo.BusMonthAttendanceVo; -import org.dromara.project.domain.vo.attendance.AttendanceCountVo; -import org.dromara.project.domain.vo.attendance.AttendanceUserCountVo; -import org.dromara.project.domain.vo.attendance.AttendanceUserDataVo; -import org.dromara.project.domain.vo.attendance.AttendanceUserVo; +import org.dromara.project.domain.vo.attendance.*; import org.dromara.project.service.IBusAttendanceRuleService; import org.dromara.project.service.IBusAttendanceService; import org.dromara.project.service.IBusProjectPunchrangeService; @@ -106,7 +103,6 @@ public class BusAttendanceAppController extends BaseController { return R.ok(attendanceService.getTodayAttendance(projectId)); } - /** * 获取用户指定月份打卡记录 */ @@ -124,7 +120,6 @@ public class BusAttendanceAppController extends BaseController { return R.ok(attendanceService.getAbnormalAttendance(projectId)); } - /** * 统计指定日期的打卡人员数量 */ @@ -133,7 +128,6 @@ public class BusAttendanceAppController extends BaseController { return R.ok(attendanceService.getAttendanceCount(dto)); } - /** * 指定日期的打卡人员列表 */ @@ -142,9 +136,6 @@ public class BusAttendanceAppController extends BaseController { return attendanceService.getAttendanceUser(dto,pageQuery); } - - - /** * 指定月份的打卡人员考勤统计 */ @@ -153,8 +144,6 @@ public class BusAttendanceAppController extends BaseController { return R.ok(attendanceService.getAttendanceUserCount(dto)); } - - /** * 指定月份的打卡人员考勤数据 */ @@ -164,8 +153,13 @@ public class BusAttendanceAppController extends BaseController { } - - + /** + * 指定月份的打卡人员信息 + */ + @GetMapping("/getAttendanceUserInfo") + public R getAttendanceUserInfo(AttendanceUserCountDto dto){ + return R.ok(attendanceService.getAttendanceUserInfo(dto)); + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java index d5754a6f..850c9306 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/controller/app/BusProjectAppController.java @@ -1,10 +1,16 @@ package org.dromara.project.controller.app; +import cn.dev33.satoken.annotation.SaIgnore; import jakarta.annotation.Resource; import jakarta.validation.constraints.NotNull; import org.dromara.common.core.domain.R; +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.dto.project.BusProjectQueryReq; +import org.dromara.project.domain.dto.userprojectrelevancy.BusUserProjectRelevancyQueryReq; import org.dromara.project.domain.vo.project.BusProjectContractorTeamListVo; +import org.dromara.project.domain.vo.project.BusProjectVo; import org.dromara.project.domain.vo.userprojectrelevancy.BusLoginUserProjectRelevancyVo; import org.dromara.project.service.IBusProjectService; import org.dromara.project.service.IBusUserProjectRelevancyService; @@ -58,4 +64,15 @@ public class BusProjectAppController { Long userId = LoginHelper.getUserId(); return R.ok(userProjectRelevancyService.queryListByUserId(userId)); } + + /** + * 注册项目选择列表 + */ + @SaIgnore + @GetMapping("/register/list") + public R> registerList() { + BusProjectQueryReq busProjectQueryReq = new BusProjectQueryReq(); + busProjectQueryReq.setPId(0L); + return R.ok(projectService.queryList(busProjectQueryReq)); + } } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/attendance/AttendanceUserInfoVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/attendance/AttendanceUserInfoVo.java new file mode 100644 index 00000000..04ae8ea7 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/attendance/AttendanceUserInfoVo.java @@ -0,0 +1,37 @@ +package org.dromara.project.domain.vo.attendance; + + +import lombok.Data; + +import java.util.Date; + +@Data +public class AttendanceUserInfoVo { + + private Long userId; + /** + * 用户昵称 + */ + private String nickName; + + /** + * 用户头像 + */ + private String avatar; + + /** + * 入场时间 + */ + private Date entryDate; + + /** + * 离场时间 + */ + private Date leaveDate; + + /** + * 退场状态(0未退场 1退场未提交材料 2已退场) + */ + private String exitStatus; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/projectteam/BusProjectTeamVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/projectteam/BusProjectTeamVo.java index 98ec9f06..d426eb39 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/projectteam/BusProjectTeamVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/domain/vo/projectteam/BusProjectTeamVo.java @@ -6,11 +6,13 @@ 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.BusProjectPunchrange; import org.dromara.project.domain.BusProjectTeam; import java.io.Serial; import java.io.Serializable; import java.util.Date; +import java.util.List; /** @@ -69,4 +71,8 @@ public class BusProjectTeamVo implements Serializable { @ExcelProperty(value = "创建时间") private Date createTime; + /** + * 打卡范围 + */ + List punchRangeList; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java index a4d903c0..2d83ec28 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/IBusAttendanceService.java @@ -12,10 +12,7 @@ import org.dromara.common.mybatis.core.page.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; import org.dromara.project.domain.vo.BusMonthAttendanceVo; -import org.dromara.project.domain.vo.attendance.AttendanceCountVo; -import org.dromara.project.domain.vo.attendance.AttendanceUserCountVo; -import org.dromara.project.domain.vo.attendance.AttendanceUserDataVo; -import org.dromara.project.domain.vo.attendance.AttendanceUserVo; +import org.dromara.project.domain.vo.attendance.*; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestParam; @@ -151,4 +148,9 @@ public interface IBusAttendanceService extends IService{ * 指定月份的打卡人员考勤数据 */ AttendanceUserDataVo getAttendanceUserData(AttendanceUserCountDto dto); + + /** + * 指定月份的打卡人员信息 + */ + AttendanceUserInfoVo getAttendanceUserInfo(AttendanceUserCountDto dto); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java index bc0996fd..56b8cdd6 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusAttendanceServiceImpl.java @@ -595,8 +595,18 @@ public class BusAttendanceServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); wrapper.eq(SubConstructionUser::getProjectId, dto.getProjectId()); + + if("1".equals(dto.getClockStatus()) && CollectionUtil.isEmpty(attendanceUserIds)){ + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setCode(cn.hutool.http.HttpStatus.HTTP_OK); + rspData.setMsg("查询成功"); + rspData.setRows(List.of()); + rspData.setTotal(0); + return rspData; + } + wrapper.in("1".equals(dto.getClockStatus()),SubConstructionUser::getSysUserId,attendanceUserIds); - wrapper.notIn("2".equals(dto.getClockStatus()),SubConstructionUser::getSysUserId,attendanceUserIds); + wrapper.notIn("2".equals(dto.getClockStatus()) && CollectionUtil.isNotEmpty(attendanceUserIds),SubConstructionUser::getSysUserId,attendanceUserIds); wrapper.eq(StrUtil.isNotBlank(dto.getTypeOfWork()),SubConstructionUser::getTypeOfWork,dto.getTypeOfWork()); wrapper.eq(dto.getTeamId()!=null,SubConstructionUser::getTeamId,dto.getTeamId()); Page result = constructionUserService.page(pageQuery.build(), wrapper); @@ -746,5 +756,29 @@ public class BusAttendanceServiceImpl extends ServiceImpl constructionUserLuw = Wrappers.lambdaUpdate(SubConstructionUser.class) .eq(SubConstructionUser::getId, constructionUser.getId()) + .set(SubConstructionUser::getProjectId, req.getProjectId()) .set(SubConstructionUser::getTeamId, projectTeamMember.getTeamId()) .set(SubConstructionUser::getTeamName, projectTeam.getTeamName()) .set(SubConstructionUser::getEntryDate, new Date()) .set(SubConstructionUser::getLeaveDate, null) .set(SubConstructionUser::getExitStatus, "0"); constructionUserService.update(constructionUserLuw); + + + List list = userProjectRelevancyService.list(Wrappers.lambdaQuery(BusUserProjectRelevancy.class) + .eq(BusUserProjectRelevancy::getUserId, constructionUser.getSysUserId()) + .eq(BusUserProjectRelevancy::getProjectId, req.getProjectId()) + ); + if(CollectionUtil.isEmpty(list)){ + BusUserProjectRelevancy relevancy = new BusUserProjectRelevancy(); + relevancy.setUserId(constructionUser.getSysUserId()); + relevancy.setProjectId(req.getProjectId()); + userProjectRelevancyService.save(relevancy); + } + return projectTeamMember.getId(); } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java index 97c59b71..b41e0a94 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/project/service/impl/BusProjectTeamServiceImpl.java @@ -37,10 +37,7 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; /** @@ -67,6 +64,7 @@ public class BusProjectTeamServiceImpl extends ServiceImpl punchRangeList = new ArrayList<>(); + + for (int i = 0; i < jsonArray.size(); i++) { + punchRangeList.add(jsonArray.getStr(i)); + } + projectTeamVo.setPunchRangeList(punchRangeList); + } catch (Exception e) { + projectTeamVo.setPunchRangeList(new ArrayList<>()); + } + } return projectTeamVo; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/QltQualityInspectionServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/QltQualityInspectionServiceImpl.java index c205b990..a3dc3560 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/QltQualityInspectionServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/quality/service/impl/QltQualityInspectionServiceImpl.java @@ -191,6 +191,7 @@ public class QltQualityInspectionServiceImpl extends ServiceImpl ossVoList = ossService.listByIds(ossIdList); qualityInspectionVo.setInspectionFileList(ossVoList); } + + String inspectionImgFile = qualityInspection.getInspectionImgFile(); + if (StringUtils.isNotBlank(inspectionImgFile)) { + List ossIdList = Arrays.stream(inspectionImgFile.split(",")).map(Long::parseLong).toList(); + List ossVoList = ossService.listByIds(ossIdList); + qualityInspectionVo.setInspectionImgFileList(ossVoList); + } + String rectificationFile = qualityInspection.getRectificationFile(); if (StringUtils.isNotBlank(rectificationFile)) { List ossIdList = Arrays.stream(rectificationFile.split(",")).map(Long::parseLong).toList(); List ossVoList = ossService.listByIds(ossIdList); qualityInspectionVo.setRectificationFileList(ossVoList); } + + String rectificationImgFile = qualityInspection.getRectificationImgFile(); + if (StringUtils.isNotBlank(rectificationImgFile)) { + List ossIdList = Arrays.stream(rectificationImgFile.split(",")).map(Long::parseLong).toList(); + List ossVoList = ossService.listByIds(ossIdList); + qualityInspectionVo.setRectificationImgFileList(ossVoList); + } + return qualityInspectionVo; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/SysUserAppController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/SysUserAppController.java new file mode 100644 index 00000000..a4870a63 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/app/SysUserAppController.java @@ -0,0 +1,87 @@ +package org.dromara.system.controller.app; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaIgnore; +import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.lang.tree.Tree; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.core.utils.StreamUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.encrypt.annotation.ApiEncrypt; +import org.dromara.common.excel.core.ExcelResult; +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.satoken.utils.LoginHelper; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.bo.SysPostBo; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.dto.role.SysRoleProjectDto; +import org.dromara.system.domain.enums.SysDeptTypeEnum; +import org.dromara.system.domain.vo.*; +import org.dromara.system.listener.SysUserImportListener; +import org.dromara.system.service.*; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * 用户信息 + * + * @author Lion Li + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app/system/user") +public class SysUserAppController extends BaseController { + + private final ISysUserService userService; + private final ISysRoleService roleService; + private final ISysPostService postService; + private final ISysDeptService deptService; + private final ISysTenantService tenantService; + + + /** + * 判断账号存在不 + */ + @SaIgnore + @GetMapping("/accountExist") + public R accountExist(String username) { + SysUserVo sysUserVo = userService.selectUserByUserName(username); + return R.ok(sysUserVo != null); + } + + + + /** + * 获取部门树列表 + */ + @SaIgnore + @GetMapping("/deptTree") + public R>> deptTree(SysDeptBo dept) { + dept.setDeptTypes(Arrays.asList(SysDeptTypeEnum.PROJECT.getCode(), SysDeptTypeEnum.COMPANY.getCode() + , SysDeptTypeEnum.CONTRACT.getCode())); + return R.ok(deptService.selectDeptTreeList(dept)); + } + + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java index ea94126d..7206efea 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysMenuController.java @@ -24,6 +24,7 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.List; +import java.util.stream.Collectors; /** * 菜单信息 @@ -45,8 +46,13 @@ public class SysMenuController extends BaseController { */ @GetMapping("/getRouters/{projectId}") public R> getRouters(@NotNull(message = "项目主键不能为空") - @PathVariable Long projectId) { + @PathVariable Long projectId,String menuSource) { List menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId(), projectId); + if("2".equals(menuSource)){ + menus = menus.stream().filter(menu -> "2".equals(menu.getMenuSource())).collect(Collectors.toList()); + }else { + menus = menus.stream().filter(menu -> "1".equals(menu.getMenuSource())).collect(Collectors.toList()); + } return R.ok(menuService.buildMenus(menus)); } @@ -96,8 +102,11 @@ public class SysMenuController extends BaseController { */ @SaCheckPermission("system:menu:query") @GetMapping(value = "/roleMenuTreeselect/{roleId}") - public R roleMenuTreeselect(@PathVariable("roleId") Long roleId) { - List menus = menuService.selectMenuList(LoginHelper.getUserId()); + public R roleMenuTreeselect(@PathVariable("roleId") Long roleId,String menuSource) { + + SysMenuBo sysMenuBo = new SysMenuBo(); + sysMenuBo.setMenuSource(menuSource); + List menus = menuService.selectMenuList(sysMenuBo,LoginHelper.getUserId()); MenuTreeSelectVo selectVo = new MenuTreeSelectVo(); selectVo.setCheckedKeys(menuService.selectMenuListByRoleId(roleId)); selectVo.setMenus(menuService.buildMenuTreeSelect(menus)); diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java index a6629600..ca47c6c3 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysDeptBo.java @@ -8,6 +8,7 @@ import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.system.domain.SysDept; import java.io.Serial; +import java.util.List; /** * 部门业务对象 sys_dept @@ -87,4 +88,7 @@ public class SysDeptBo extends BaseEntity { @NotBlank(message = "部门类型不能为空") private String deptType; + + private List deptTypes; + } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/role/ConPerSysRoleDto.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/role/ConPerSysRoleDto.java new file mode 100644 index 00000000..88bb1dc0 --- /dev/null +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/dto/role/ConPerSysRoleDto.java @@ -0,0 +1,77 @@ +package org.dromara.system.domain.dto.role; + +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.system.domain.SysRole; + +/** + * 角色信息业务对象 sys_role + * + * @author Michelle.Chung + */ + +@Data +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SysRole.class, reverseConvertGenerate = false) +public class ConPerSysRoleDto extends BaseEntity { + + public static final String ROLE_KEY = "base-sgry"; + + /** + * 角色ID + */ + private Long roleId; + + /** + * 部门ID + */ + private Long deptId; + + + private String roleName = "施工人员"; + + + private String roleKey = "base-sgry"; + + + private Integer roleSort = 1; + + + private String dataScope = "1"; + + /** + * 菜单树选择项是否关联显示 + */ + private Boolean menuCheckStrictly = true; + + /** + * 部门树选择项是否关联显示 + */ + private Boolean deptCheckStrictly = true; + + /** + * 角色状态(0正常 1停用) + */ + private String status = "0"; + + /** + * 备注 + */ + private String remark; + + /** + * 菜单组 + */ + private Long[] menuIds; + + + /** + * 角色类型 1-web 2-app + */ + private String roleSource = "2"; + +} diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java index adffe5e2..42614534 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java @@ -114,4 +114,8 @@ public class SysRoleVo implements Serializable { return SystemConstants.SUPER_ADMIN_ID.equals(this.roleId); } + /** + * 角色类型 1-web 2-app + */ + private String roleSource; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java index aa19169a..d6538169 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java @@ -2,6 +2,7 @@ package org.dromara.system.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.tree.Tree; import cn.hutool.core.util.ObjectUtil; @@ -25,6 +26,8 @@ import org.dromara.system.domain.SysPost; import org.dromara.system.domain.SysRole; import org.dromara.system.domain.SysUser; import org.dromara.system.domain.bo.SysDeptBo; +import org.dromara.system.domain.bo.SysRoleBo; +import org.dromara.system.domain.dto.role.ConPerSysRoleDto; import org.dromara.system.domain.enums.SysDeptTypeEnum; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.domain.vo.SysPostVo; @@ -33,6 +36,7 @@ import org.dromara.system.mapper.SysPostMapper; import org.dromara.system.mapper.SysRoleMapper; import org.dromara.system.mapper.SysUserMapper; import org.dromara.system.service.ISysDeptService; +import org.dromara.system.service.ISysRoleService; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; import org.springframework.cache.annotation.Caching; @@ -57,6 +61,8 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { private final SysUserMapper userMapper; private final SysPostMapper postMapper; + private final ISysRoleService roleService; + /** * 查询部门管理数据 * @@ -93,6 +99,7 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysDept::getStatus, bo.getStatus()); lqw.eq(StringUtils.isNotBlank(bo.getIsShow()), SysDept::getIsShow, bo.getIsShow()); lqw.eq(StringUtils.isNotBlank(bo.getDeptType()), SysDept::getDeptType, bo.getDeptType()); + lqw.in(CollectionUtil.isNotEmpty(bo.getDeptTypes()), SysDept::getDeptType, bo.getDeptTypes()); lqw.orderByAsc(SysDept::getAncestors); lqw.orderByAsc(SysDept::getParentId); lqw.orderByAsc(SysDept::getOrderNum); @@ -415,6 +422,18 @@ public class SysDeptServiceImpl implements ISysDeptService, DeptService { if (insert < 1) { throw new ServiceException("添加部门失败", HttpStatus.ERROR); } + + if( SysDeptTypeEnum.PROJECT.getCode().equals(bo.getDeptType())){ + SysRoleBo sysRoleBo = new SysRoleBo(); + + ConPerSysRoleDto conPerSysRoleDto = new ConPerSysRoleDto(); + conPerSysRoleDto.setDeptId(dept.getDeptId()); + BeanUtil.copyProperties(conPerSysRoleDto,sysRoleBo); + roleService.insertRole(sysRoleBo); + } + + + return insert; } diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java index b11274e5..1ec1db21 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java @@ -107,6 +107,7 @@ public class SysUserServiceImpl implements ISysUserService, UserService { QueryWrapper wrapper = Wrappers.query(); wrapper.eq("u.del_flag", SystemConstants.NORMAL) .eq(ObjectUtil.isNotNull(user.getUserId()), "u.user_id", user.getUserId()) + .like(StringUtils.isNotBlank(user.getNickName()), "u.nick_name", user.getNickName()) .like(StringUtils.isNotBlank(user.getUserName()), "u.user_name", user.getUserName()) .eq(StringUtils.isNotBlank(user.getStatus()), "u.status", user.getStatus()) .like(StringUtils.isNotBlank(user.getPhonenumber()), "u.phonenumber", user.getPhonenumber()) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml index 6e162edb..f4a3e082 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml @@ -68,7 +68,8 @@ m.menu_type, m.icon, m.order_num, - m.create_time + m.create_time, + m.menu_source from sys_menu m left join sys_role_menu rm on m.menu_id = rm.menu_id and m.status = '0' left join sys_role r on rm.role_id = r.role_id and r.status = '0' diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml index b4098c67..9e019a89 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -20,7 +20,8 @@ r.del_flag, r.create_time, r.remark, - r.is_special + r.is_special, + r.role_source from sys_role r left join sys_user_role sur on sur.role_id = r.role_id left join sys_user u on u.user_id = sur.user_id