ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/AssetHouseInspectionItemController.java
@@ -269,6 +269,7 @@ e.printStackTrace(); } } } @Log(title = "房屋巡检导入", businessType = BusinessType.INSERT) @@ -345,6 +346,7 @@ assetHouseInspectionDetail.setRemark(assetHouseInspectionImport.getHouseCloseStatus()); if (assetHouseInspectionImport.getHouseCloseStatus().equals("正常")){ assetHouseInspectionDetail.setInspectionResult(true); assetHouseInspectionRecord.setHouseCloseStatus("正常"); }else{ assetHouseInspectionDetail.setInspectionResult(false); } @@ -352,14 +354,13 @@ String waterStatus1 = assetHouseInspectionImport.getWaterStatus1(); String waterStatus2 = assetHouseInspectionImport.getWaterStatus2(); String waterStatus3 = assetHouseInspectionImport.getWaterStatus3(); assetHouseInspectionRecord.setWaterElectronicGasCloseStatus("正常"); AssetHouseInspectionDetail assetHouseInspectionDetailWatter1 = new AssetHouseInspectionDetail(); assetHouseInspectionDetailWatter1.setInspectionItemId(3); assetHouseInspectionDetailWatter1.setItemName("水电气表关闭情况"); assetHouseInspectionDetailWatter1.setSubItemId(4); assetHouseInspectionDetailWatter1.setSubItemName("水表关闭情况"); assetHouseInspectionDetailWatter1.setRemark(assetHouseInspectionImport.getWaterStatus1()); assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter1); AssetHouseInspectionDetail assetHouseInspectionDetailWatter2 = new AssetHouseInspectionDetail(); assetHouseInspectionDetailWatter2.setInspectionItemId(3); @@ -367,7 +368,6 @@ assetHouseInspectionDetailWatter2.setSubItemId(5); assetHouseInspectionDetailWatter2.setSubItemName("气表关闭情况"); assetHouseInspectionDetailWatter2.setRemark(assetHouseInspectionImport.getWaterStatus2()); assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter2); AssetHouseInspectionDetail assetHouseInspectionDetailWatter3 = new AssetHouseInspectionDetail(); assetHouseInspectionDetailWatter3.setInspectionItemId(3); @@ -375,10 +375,11 @@ assetHouseInspectionDetailWatter3.setSubItemId(6); assetHouseInspectionDetailWatter3.setSubItemName("电表关闭情况"); assetHouseInspectionDetailWatter3.setRemark(assetHouseInspectionImport.getWaterStatus3()); assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter3); if (waterStatus1.equals("正常")&&waterStatus2.equals("正常")&&waterStatus3.equals("正常")){ assetHouseInspectionDetailWatter1.setInspectionResult(true); assetHouseInspectionDetailWatter2.setInspectionResult(true); assetHouseInspectionDetailWatter3.setInspectionResult(true); assetHouseInspectionRecord.setWaterElectronicGasCloseStatus("正常"); }else{ StringBuilder stringBuilder = new StringBuilder(); if (!waterStatus1.equals("正常")){ @@ -404,6 +405,10 @@ } assetHouseInspectionRecord.setInnerStatus(stringBuilder.toString()); } assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter1); assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter2); assetHouseInspectionDetails.add(assetHouseInspectionDetailWatter3); String innerStatus1 = assetHouseInspectionImport.getInnerStatus1(); String innerStatus2 = assetHouseInspectionImport.getInnerStatus2(); String innerStatus3 = assetHouseInspectionImport.getInnerStatus3(); @@ -414,7 +419,6 @@ assetHouseInspectionDetailInner1.setSubItemId(8); assetHouseInspectionDetailInner1.setSubItemName("墙壁漏水情况"); assetHouseInspectionDetailInner1.setRemark(assetHouseInspectionImport.getWaterStatus1()); assetHouseInspectionDetails.add(assetHouseInspectionDetailInner1); AssetHouseInspectionDetail assetHouseInspectionDetailInner2 = new AssetHouseInspectionDetail(); assetHouseInspectionDetailInner2.setInspectionItemId(7); @@ -422,7 +426,6 @@ assetHouseInspectionDetailInner2.setSubItemId(9); assetHouseInspectionDetailInner2.setSubItemName("设备损坏情况"); assetHouseInspectionDetailInner2.setRemark(assetHouseInspectionImport.getWaterStatus2()); assetHouseInspectionDetails.add(assetHouseInspectionDetailInner2); AssetHouseInspectionDetail assetHouseInspectionDetailInner3 = new AssetHouseInspectionDetail(); assetHouseInspectionDetailInner3.setInspectionItemId(7); @@ -430,7 +433,6 @@ assetHouseInspectionDetailInner3.setSubItemId(10); assetHouseInspectionDetailInner3.setSubItemName("墙壁掉灰情况"); assetHouseInspectionDetailInner3.setRemark(assetHouseInspectionImport.getWaterStatus3()); assetHouseInspectionDetails.add(assetHouseInspectionDetailInner3); AssetHouseInspectionDetail assetHouseInspectionDetailInner4 = new AssetHouseInspectionDetail(); assetHouseInspectionDetailInner4.setInspectionItemId(7); @@ -438,9 +440,13 @@ assetHouseInspectionDetailInner4.setSubItemId(11); assetHouseInspectionDetailInner4.setSubItemName("地瓷砖开裂情况"); assetHouseInspectionDetailInner4.setRemark(assetHouseInspectionImport.getWaterStatus3()); assetHouseInspectionDetails.add(assetHouseInspectionDetailInner4); if (innerStatus1.equals("正常")&&innerStatus2.equals("正常")&&innerStatus3.equals("正常")&&innerStatus4.equals("正常")){ assetHouseInspectionRecord.setInnerStatus("正常"); assetHouseInspectionDetailInner4.setInspectionResult(true); assetHouseInspectionDetailInner3.setInspectionResult(true); assetHouseInspectionDetailInner2.setInspectionResult(true); assetHouseInspectionDetailInner1.setInspectionResult(true); }else{ StringBuilder stringBuilder = new StringBuilder(); if (!innerStatus1.equals("正常")){ @@ -451,27 +457,32 @@ } if (!innerStatus2.equals("正常")){ stringBuilder.append(innerStatus2).append("|"); assetHouseInspectionDetailInner1.setInspectionResult(false); assetHouseInspectionDetailInner2.setInspectionResult(false); }else{ assetHouseInspectionDetailInner1.setInspectionResult(true); assetHouseInspectionDetailInner2.setInspectionResult(true); } if (!innerStatus3.equals("正常")){ stringBuilder.append(innerStatus3).append("|"); assetHouseInspectionDetailInner1.setInspectionResult(false); assetHouseInspectionDetailInner3.setInspectionResult(false); }else{ assetHouseInspectionDetailInner1.setInspectionResult(true); assetHouseInspectionDetailInner3.setInspectionResult(true); } if (!innerStatus4.equals("正常")){ stringBuilder.append(innerStatus4).append("|"); assetHouseInspectionDetailInner1.setInspectionResult(false); assetHouseInspectionDetailInner4.setInspectionResult(false); }else{ assetHouseInspectionDetailInner1.setInspectionResult(true); assetHouseInspectionDetailInner4.setInspectionResult(true); } if (stringBuilder.length()>0){ stringBuilder.deleteCharAt(stringBuilder.length()-1); } assetHouseInspectionRecord.setInnerStatus(stringBuilder.toString()); } assetHouseInspectionDetails.add(assetHouseInspectionDetailInner4); assetHouseInspectionDetails.add(assetHouseInspectionDetailInner3); assetHouseInspectionDetails.add(assetHouseInspectionDetailInner2); assetHouseInspectionDetails.add(assetHouseInspectionDetailInner1); assetHouseInspectionRecord.setRemarks(assetHouseInspectionImport.getRemark()); assetHouseInspectionRecordService.save(assetHouseInspectionRecord); assetHouseInspectionDetails.add(assetHouseInspectionDetail); @@ -481,6 +492,9 @@ assetHouseInspectionDetailService.saveBatch(assetHouseInspectionDetails); } if(!result.isEmpty()){ return R.fail(result.toString()); } return R.ok(); } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaNotifationUserController.java
@@ -1,8 +1,36 @@ package com.ruoyi.web.controller.api; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.model.OaNotification; import com.ruoyi.system.model.OaNotificationUser; import com.ruoyi.system.query.NotificationListQuery; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.OaNotifationUserService; import com.ruoyi.system.service.OaNotificationService; import com.ruoyi.system.service.TDeptService; import com.ruoyi.system.vo.system.NotificationDeptUserDetailVO; import com.ruoyi.system.vo.system.NotificationDetailVO; import com.ruoyi.system.vo.system.NotificationUserDetailVO; import com.ruoyi.system.vo.system.NotificationVO; import io.swagger.annotations.ApiOperation; import jdk.nashorn.internal.parser.Token; import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * <p> @@ -15,6 +43,98 @@ @RestController @RequestMapping("/oa-notifation-user") public class OaNotifationUserController { @Resource private OaNotificationService oaNotificationService; @Resource private OaNotifationUserService oaNotifationUserService; @Resource private TDeptService deptService; @Resource private ISysUserService sysUserService; @Resource private TokenService tokenService; /** * 获取部门树列表 */ @ApiOperation("消息通知分页列表") @PostMapping("/pageList") public R<PageInfo<NotificationVO>> pageListUser(@RequestBody NotificationListQuery query) { Long userId = tokenService.getLoginUser().getUserId(); query.setUserId(userId); return R.ok(oaNotificationService.pageListUser(query)); } @ApiOperation(value = "消息通知详情") @GetMapping(value = "/detail") public R<NotificationDetailVO> detail(String id) { NotificationDetailVO notificationDetailVO = new NotificationDetailVO(); OaNotification oaNotification = oaNotificationService.getById(id); BeanUtils.copyProperties(oaNotification, notificationDetailVO); // StringBuilder deptName = new StringBuilder(); // List<TDept> tDepts = deptService.list(); // List<SysUser> sysUsers = sysUserService.selectAllList(); // List<OaNotificationUser> notifationUsers = oaNotifationUserService.lambdaQuery().eq(OaNotificationUser::getNotificationId, id) // .list(); // Map<Integer, String> deptMap = tDepts.stream().collect(Collectors.toMap(TDept::getId, TDept::getDeptName)); // Map<Long, SysUser> userMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, e->e)); // if (oaNotification.getType()){ // for (String deptId : oaNotification.getDeptIds().split(",")) { // String orDefault = deptMap.getOrDefault(Integer.parseInt(deptId), ""); // deptName.append(orDefault).append(","); // } // if (deptName.length() > 0){ // notificationDetailVO.setDeptName(deptName.substring(0,deptName.length()-1)); // }else { // notificationDetailVO.setDeptName(""); // } // List<NotificationDeptUserDetailVO> notificationUserVOS = new ArrayList<>(); // List<Long> userIds = notifationUsers.stream().map(e -> e.getUserId().longValue()).collect(Collectors.toList()); // if (!userIds.isEmpty()){ // Map<String, List<SysUser>> deptUserList = sysUsers.stream().filter(e -> userIds.contains(e.getUserId())) // .collect(Collectors.groupingBy(SysUser::getDeptId)); // // 遍历这个map // for (Map.Entry<String, List<SysUser>> entry : deptUserList.entrySet()) { // List<SysUser> users = entry.getValue(); // String deptId = entry.getKey(); // NotificationDeptUserDetailVO notificationDeptUserDetailVO = new NotificationDeptUserDetailVO(); // notificationDeptUserDetailVO.setDeptName(deptMap.getOrDefault(Integer.parseInt(deptId), "")); // notificationDeptUserDetailVO.setUsers(users); // // 查询部门下的员工数是否和users一致 // long count = sysUsers.stream().filter(e -> e.getDeptId().equals(deptId)).count(); // if (count==users.size()){ // notificationDeptUserDetailVO.setIsAll(true); // }else{ // notificationDeptUserDetailVO.setIsAll(false); // } // notificationUserVOS.add(notificationDeptUserDetailVO); // } // } // notificationDetailVO.setNotificationDeptUserDetailVOList(notificationUserVOS); // // }else{ // // notificationDetailVO.setDeptName("全部人员"); // } // List<NotificationUserDetailVO> notificationUserDetailVOS = new ArrayList<>(); // for (OaNotificationUser notifationUser : notifationUsers) { // NotificationUserDetailVO notificationUserDetailVO = new NotificationUserDetailVO(); // BeanUtils.copyProperties(notifationUser, notificationUserDetailVO); // SysUser sysUser = userMap.get(notifationUser.getUserId().longValue()); // if (sysUser==null){ // continue; // } // notificationUserDetailVO.setDeptName(deptMap.getOrDefault(Integer.parseInt(sysUser.getDeptId()), "")); // notificationUserDetailVO.setNickName(sysUser.getNickName()); // notificationUserDetailVO.setPhonenumber(sysUser.getPhonenumber()); // notificationUserDetailVO.setPosition(sysUser.getPosition()); // notificationUserDetailVOS.add(notificationUserDetailVO); // } // notificationDetailVO.setNotificationUserDetailVOS(notificationUserDetailVOS); return R.ok(notificationDetailVO); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/OaNotificationController.java
@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -51,7 +52,8 @@ */ @ApiOperation("消息通知分页列表") @PostMapping("/pageList") public R<PageInfo<NotificationVO>> pageList(@RequestBody NotificationListQuery query) { public R<PageInfo<NotificationVO>> pageList(@RequestBody NotificationListQuery query ) { return R.ok(oaNotificationService.pageList(query)); } @@ -164,7 +166,7 @@ } notificationDetailVO.setNotificationUserDetailVOS(notificationUserDetailVOS); return R.ok(); return R.ok(notificationDetailVO); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -13,6 +13,7 @@ import com.ruoyi.common.core.domain.entity.SysDept; import com.ruoyi.common.core.domain.entity.SysRole; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.domain.entity.TDept; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; @@ -20,12 +21,11 @@ import com.ruoyi.common.utils.WebUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.dto.SysUserUpdateStatusDTO; import com.ruoyi.system.importExcel.TSysUserImportExcel; import com.ruoyi.system.importExcel.EmployeeImportExcel; import com.ruoyi.system.query.SysUserQuery; import com.ruoyi.system.service.*; import com.ruoyi.system.vo.system.SysUserVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.poi.ss.usermodel.Workbook; @@ -38,12 +38,13 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.net.URLEncoder; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -65,6 +66,8 @@ @Autowired private ISysDeptService deptService; @Autowired private TDeptService tDeptService; @Autowired private TokenService tokenService; @@ -185,59 +188,189 @@ @ApiOperation(value = "员工导入") @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) @PostMapping("/importUser") public R<String> importUser(@RequestPart("file") MultipartFile file) { List<SysRole> sysRoles = roleService.selectRoleAll(); public R<Object> importUser(@RequestPart("file") MultipartFile file) { ImportParams params = new ImportParams(); // params.setTitleRows(1); // 标题行数 params.setHeadRows(1); //表头行数 InputStream inputStream = null; // List<CustomerImportFailedData> failedData = new ArrayList<>(); List<TSysUserImportExcel> locationExcelList; List<EmployeeImportExcel> employeeExcelList; try { inputStream = file.getInputStream(); locationExcelList = ExcelImportUtil.importExcel(inputStream, TSysUserImportExcel.class, params); employeeExcelList = ExcelImportUtil.importExcel(inputStream, EmployeeImportExcel.class, params); } catch (Exception e) { e.printStackTrace(); throw new ServiceException("员工导入失败!"); throw new ServiceException("员工导入失败: " + e.getMessage()); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { throw new ServiceException(e.getMessage()); e.printStackTrace(); } } if (CollectionUtils.isEmpty(locationExcelList)) { throw new ServiceException("员工数据为空!"); } if (CollectionUtils.isEmpty(employeeExcelList)) { throw new ServiceException("员工数据为空!"); } JSONObject result = new JSONObject(); List<SysUser> sysUsers = new ArrayList<>(); for (TSysUserImportExcel locationExcel : locationExcelList) { System.err.println(locationExcel); SysUser sysUser = new SysUser(); sysUser.setStatus("0"); sysUser.setDelFlag("0"); sysUser.setCreateBy(getUsername()); int successCount = 0; int failCount = 0; List<String> errorMessages = new ArrayList<>(); for (EmployeeImportExcel employeeExcel : employeeExcelList) { try { // 数据验证 // 数据验证 if (StringUtils.isEmpty(employeeExcel.getNickName())) { errorMessages.add("第" + (successCount + failCount + 1) + "行:姓名为空"); failCount++; continue; } if (StringUtils.isEmpty(employeeExcel.getPhoneNumber())) { errorMessages.add("第" + (successCount + failCount + 1) + "行:联系电话为空"); failCount++; continue; } // 转换并保存用户 SysUser sysUser = convertToSysUser(employeeExcel); if (StringUtils.isEmpty(employeeExcel.getDepartment())) { errorMessages.add("第" + (successCount + failCount + 1) + "行:所在股室为空"); failCount++; continue; } TDept dept = tDeptService.lambdaQuery().eq(TDept::getDeptName, employeeExcel.getDepartment()) .last("limit 1").one(); if (dept == null){ errorMessages.add("第" + (successCount + failCount + 1) + "行:所在股室不存在"); failCount++; continue; } sysUser.setDeptId(dept.getId().toString()); userService.insertUser(sysUser); successCount++; } catch (Exception e) { errorMessages.add("第" + (successCount + failCount + 1) + "行:" + e.getMessage()); failCount++; e.printStackTrace(); } if (!result.isEmpty()) { return R.ok(result.toString()); } return R.ok(); JSONObject result = new JSONObject(); result.put("successCount", successCount); result.put("failCount", failCount); result.put("totalCount", successCount + failCount); if (!errorMessages.isEmpty()) { result.put("errorMessages", errorMessages); return R.fail(result.get("errorMessages")); } return R.ok("导入完成", result.toString()); } /** * 解析日期字符串为Date对象 * @param dateStr 日期字符串,格式如:2022.09 * @return Date对象 */ private Date parseDate(String dateStr) { if (StringUtils.isEmpty(dateStr)) { return null; } try { // 支持 YYYY.MM 格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); return sdf.parse(dateStr); } catch (ParseException e) { try { // 支持 YYYY-MM 格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); return sdf.parse(dateStr); } catch (ParseException ex) { try { // 支持 YYYY-MM-DD 格式 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.parse(dateStr); } catch (ParseException exc) { return null; } } } } /** * 将EmployeeImportExcel转换为SysUser * @param employeeExcel 员工导入Excel数据 * @return SysUser对象 */ private SysUser convertToSysUser(EmployeeImportExcel employeeExcel) { SysUser sysUser = new SysUser(); sysUser.setPassword(SecurityUtils.encryptPassword("123456")); // 基本信息 sysUser.setNickName(employeeExcel.getNickName()); sysUser.setUserName(employeeExcel.getPhoneNumber()); sysUser.setPhonenumber(employeeExcel.getPhoneNumber()); // 性别转换 if ("男".equals(employeeExcel.getSex())) { sysUser.setSex("0"); } else if ("女".equals(employeeExcel.getSex())) { sysUser.setSex("1"); } else { sysUser.setSex("0"); } // 身份证 sysUser.setIdCard(employeeExcel.getIdCard()); // 政治面貌 sysUser.setPoliticalOutlook(employeeExcel.getPoliticalOutlook()); // 时间字段 sysUser.setParticipationTime(parseDate(employeeExcel.getParticipationTime())); sysUser.setCompanyTime(parseDate(employeeExcel.getCompanyTime())); sysUser.setPositionTime(parseDate(employeeExcel.getPositionTime())); // 学历信息 sysUser.setFirstDegree(employeeExcel.getFirstDegree()); sysUser.setFirstCollege(employeeExcel.getFirstCollege()); sysUser.setFirstMajor(employeeExcel.getFirstMajor()); sysUser.setHighestDegree(employeeExcel.getHighestDegree()); sysUser.setHighestCollege(employeeExcel.getHighestCollege()); sysUser.setHighestMajor(employeeExcel.getHighestMajor()); // 职务和部门 sysUser.setPosition(employeeExcel.getPosition()); sysUser.setOrganization(employeeExcel.getOrganization()); // 系统字段 sysUser.setStatus("0"); // 正常状态 sysUser.setDelFlag("0"); // 未删除 sysUser.setCreateBy(getUsername()); return sysUser; } @ApiOperation(value = "员工导入模板下载") @GetMapping("/importDownload") public void importDownload() { List<TSysUserImportExcel> locationImportExcels = new ArrayList<>(); TSysUserImportExcel tLocationImportExcel = new TSysUserImportExcel(); locationImportExcels.add(tLocationImportExcel); Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TSysUserImportExcel.class, locationImportExcels); List<EmployeeImportExcel> employeeImportExcels = new ArrayList<>(); EmployeeImportExcel employeeImportExcel = new EmployeeImportExcel(); employeeImportExcels.add(employeeImportExcel); ExportParams exportParams = new ExportParams(); exportParams.setTitle("员工信息导入模板"); exportParams.setSheetName("员工信息"); Workbook workbook = ExcelExportUtil.exportExcel(exportParams, EmployeeImportExcel.class, employeeImportExcels); HttpServletResponse response = WebUtils.response(); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("员工导入模板.xls", "utf-8"); String fileName = URLEncoder.encode("员工信息导入模板.xls", "utf-8"); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); response.setHeader("content-Type", "application/vnd.ms-excel"); response.setHeader("Pragma", "no-cache"); @@ -248,6 +381,7 @@ e.printStackTrace(); System.out.println("员工导入模板下载失败!"); } finally { if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { @@ -255,6 +389,7 @@ } } } } /** * 修改用户 ruoyi-system/src/main/java/com/ruoyi/system/importExcel/EmployeeImportExcel.java
New file @@ -0,0 +1,99 @@ package com.ruoyi.system.importExcel; import cn.afterturn.easypoi.excel.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data @ApiModel(value = "员工导入Excel") public class EmployeeImportExcel implements Serializable { @Excel(name = "姓名", width = 20) @ApiModelProperty(value = "姓名") private String nickName; @Excel(name = "性别", width = 10) @ApiModelProperty(value = "性别") private String sex; @Excel(name = "身份证号码", width = 25) @ApiModelProperty(value = "身份证号码") private String idCard; @Excel(name = "年龄", width = 10) @ApiModelProperty(value = "年龄") private Integer age; @Excel(name = "政治面貌", width = 15) @ApiModelProperty(value = "政治面貌") private String politicalOutlook; @Excel(name = "参工时间", width = 15) @ApiModelProperty(value = "参工时间") private String participationTime; @Excel(name = "进入公司时间", width = 15) @ApiModelProperty(value = "进入公司时间") private String companyTime; // 第一学历 @Excel(name = "第一学历-学历", width = 15) @ApiModelProperty(value = "第一学历") private String firstDegree; @Excel(name = "第一学历-学院", width = 25) @ApiModelProperty(value = "第一学历学院") private String firstCollege; @Excel(name = "第一学历-专业", width = 25) @ApiModelProperty(value = "第一学历专业") private String firstMajor; // 最高学历 @Excel(name = "最高学历-学历", width = 15) @ApiModelProperty(value = "最高学历") private String highestDegree; @Excel(name = "最高学历-学院", width = 25) @ApiModelProperty(value = "最高学历学院") private String highestCollege; @Excel(name = "最高学历-专业", width = 25) @ApiModelProperty(value = "最高学历专业") private String highestMajor; @Excel(name = "所在股室", width = 20) @ApiModelProperty(value = "所在股室") private String department; @Excel(name = "职务", width = 25) @ApiModelProperty(value = "职务") private String position; @Excel(name = "任职时间", width = 15) @ApiModelProperty(value = "任职时间") private String positionTime; @Excel(name = "电话号码", width = 15) @ApiModelProperty(value = "电话号码") private String phoneNumber; @Excel(name = "编制", width = 15) @ApiModelProperty(value = "编制") private String organization; // 部门名称(系统字段) @Excel(name = "部门名称", width = 20) @ApiModelProperty(value = "部门名称") private String deptName; // 角色名称(系统字段) @Excel(name = "角色名称", width = 20) @ApiModelProperty(value = "角色名称") private String roleName; } ruoyi-system/src/main/java/com/ruoyi/system/mapper/OaNotificationMapper.java
@@ -21,4 +21,6 @@ List<NotificationVO> pageList(@Param("query")NotificationListQuery query, @Param("pageInfo")PageInfo<NotificationVO> pageInfo); List<NotificationVO> pageListUser(@Param("query")NotificationListQuery query, @Param("pageInfo")PageInfo<NotificationVO> pageInfo); } ruoyi-system/src/main/java/com/ruoyi/system/model/OaNotification.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -47,6 +48,7 @@ @ApiModelProperty(value = "创建时间") @TableField("create_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime createTime; @ApiModelProperty(value = "创建人") @@ -55,6 +57,7 @@ @ApiModelProperty(value = "更新时间") @TableField("update_time") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime updateTime; @ApiModelProperty(value = "更新人") ruoyi-system/src/main/java/com/ruoyi/system/model/OaNotificationUser.java
@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import java.io.Serializable; import java.time.LocalDateTime; /** * <p> @@ -42,6 +44,5 @@ @ApiModelProperty(value = "阅读状态 0-未读,1-已读") @TableField("read_status") private Boolean readStatus; } ruoyi-system/src/main/java/com/ruoyi/system/query/NotificationListQuery.java
@@ -17,4 +17,6 @@ private String deptName; @ApiModelProperty(value = "部门ids 前端忽略") private List<Integer> deptIds; @ApiModelProperty(value = "当前登陆人id 前端忽略") private Long userId; } ruoyi-system/src/main/java/com/ruoyi/system/service/OaNotificationService.java
@@ -18,4 +18,5 @@ PageInfo<NotificationVO> pageList(NotificationListQuery query); PageInfo<NotificationVO> pageListUser(NotificationListQuery query); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/OaNotificationServiceImpl.java
@@ -62,4 +62,36 @@ pageInfo.setRecords(list); return pageInfo; } @Override public PageInfo<NotificationVO> pageListUser(NotificationListQuery query) { List<TDept> tDepts = deptMapper.selectList(null); Map<Integer, String> deptMap = tDepts.stream().collect(Collectors.toMap(TDept::getId, TDept::getDeptName)); if (StringUtils.hasLength(query.getDeptName())){ List<Integer> deptIds = deptMapper.selectList(new LambdaQueryWrapper<TDept>().like(TDept::getDeptName, query.getDeptName())) .stream().map(TDept::getId).collect(Collectors.toList()); if (deptIds.isEmpty()){ return new PageInfo<>(); } query.setDeptIds(deptIds); } PageInfo<NotificationVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<NotificationVO> list = this.baseMapper.pageListUser(query,pageInfo); for (NotificationVO notificationVO : list) { StringBuilder deptName = new StringBuilder(); if (notificationVO.getType()){ for (String deptId : notificationVO.getDeptIds().split(",")) { String orDefault = deptMap.getOrDefault(Integer.parseInt(deptId), ""); deptName.append(orDefault).append(","); } notificationVO.setDeptName(deptName.substring(0,deptName.length()-1)); }else{ notificationVO.setDeptName("全部人员"); } } pageInfo.setRecords(list); return pageInfo; } } ruoyi-system/src/main/java/com/ruoyi/system/vo/system/NotificationVO.java
@@ -1,10 +1,14 @@ package com.ruoyi.system.vo.system; import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.system.model.OaApproval; import com.ruoyi.system.model.OaNotification; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.time.LocalDateTime; @Data @ApiModel(value = "消息通知分页返回VO") @@ -12,5 +16,7 @@ @ApiModelProperty(value = "通知部门") private String deptName; @ApiModelProperty(value = "阅读状态 0-未读,1-已读") private Boolean readStatus; } ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationPurchaseItemMapper.xml
@@ -24,7 +24,7 @@ from oa_approval_application_purchase_item t1 left join asset_type t2 on t2.id = t1.asset_type_id where t1.approval_application_id = #{query.approvalApplicationId} order by t1.id desc </select> </mapper> ruoyi-system/src/main/resources/mapper/system/OaApprovalApplicationsMapper.xml
@@ -33,6 +33,7 @@ <if test="query.userId != null "> and applicant_user_id like concat('%',#{query.userId},'%') </if> order by approval_time desc </select> </mapper> ruoyi-system/src/main/resources/mapper/system/OaNotificationMapper.xml
@@ -35,5 +35,22 @@ AND disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} order by create_time desc </select> <select id="pageListUser" resultType="com.ruoyi.system.vo.system.NotificationVO"> select t1.read_status as readStatus,t1.notification_id notificationId,t2.* from oa_notification t2 where 1=1 <if test="query.title != null and query.title != ''"> and t2.title like concat('%',#{query.title},'%') </if> <if test="deptIds != null and deptIds.size() > 0"> AND ( <foreach collection="deptIds" item="deptId" separator=" OR "> FIND_IN_SET(#{deptId}, t2.dept_ids) </foreach> ) </if> and t1.user_id = #{query.userId} AND t2.disabled = ${@com.ruoyi.common.enums.DisabledEnum@NO.getCode()} order by t1.id desc </select> </mapper>