From 15cbd2f0852fa69aa78c08ccb8ef775cef1bdf09 Mon Sep 17 00:00:00 2001 From: wanghao Date: Fri, 31 Oct 2025 10:35:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E7=96=86=E6=96=B0=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/sql/xj_emergency值班添加排序.sql | 2 + .../entity/EmergencySchedulesItem.java | 3 + .../emergency/entity/vo/WeekDataVO.java | 11 +- .../EmergencySchedulesNewServiceImpl.java | 9 +- .../service/impl/SysDepartServiceImpl.java | 204 ++++++++++++------ 5 files changed, 159 insertions(+), 70 deletions(-) create mode 100644 db/sql/xj_emergency值班添加排序.sql diff --git a/db/sql/xj_emergency值班添加排序.sql b/db/sql/xj_emergency值班添加排序.sql new file mode 100644 index 0000000..6f654ee --- /dev/null +++ b/db/sql/xj_emergency值班添加排序.sql @@ -0,0 +1,2 @@ +ALTER TABLE `emergency_schedules_new_item` + ADD COLUMN `sort` tinyint NULL DEFAULT 0 COMMENT '排序' AFTER `user_name`; \ No newline at end of file diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/EmergencySchedulesItem.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/EmergencySchedulesItem.java index f2854c2..7cff111 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/EmergencySchedulesItem.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/EmergencySchedulesItem.java @@ -31,4 +31,7 @@ public class EmergencySchedulesItem { @Schema(title = "人员姓名") private String userName; + + @Schema(title = "排序") + private Integer sort; } diff --git a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/WeekDataVO.java b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/WeekDataVO.java index 960e8d1..ecc919c 100644 --- a/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/WeekDataVO.java +++ b/health-emergency/health-emergency-api/src/main/java/com/renkang/emergency/entity/vo/WeekDataVO.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.util.Comparator; import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -29,10 +30,16 @@ public class WeekDataVO { private List professionalUserList; public List getOperationUserList(List itemList) { - return itemList.stream().filter(item -> "0".equals(item.getUserType())).collect(Collectors.toList()); + return itemList.stream() + .filter(item -> "0".equals(item.getUserType())) + .sorted(Comparator.comparing(EmergencySchedulesItem::getSort)) // 根据 sort 字段升序排序 + .collect(Collectors.toList()); } public List getProfessionalUserList(List itemList) { - return itemList.stream().filter(item -> "1".equals(item.getUserType())).collect(Collectors.toList()); + return itemList.stream() + .filter(item -> "1".equals(item.getUserType())) + .sorted(Comparator.comparing(EmergencySchedulesItem::getSort)) // 根据 sort 字段升序排序 + .collect(Collectors.toList()); } } diff --git a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencySchedulesNewServiceImpl.java b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencySchedulesNewServiceImpl.java index e335baa..94be7e7 100644 --- a/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencySchedulesNewServiceImpl.java +++ b/health-emergency/health-emergency-biz/src/main/java/com/renkang/emergency/service/impl/EmergencySchedulesNewServiceImpl.java @@ -160,7 +160,7 @@ public class EmergencySchedulesNewServiceImpl extends MPJBaseServiceImpl itemList) { WeekDataVO daySchedules = getDaySchedules(dto, day); - if (ObjectUtil.isNotEmpty(daySchedules)) { + if (null != daySchedules) { EmergencySchedules emergencySchedules = new EmergencySchedules(); emergencySchedules.setSchedulesTime(daySchedules.getTime()); emergencySchedules.setId(StrUtil.isNotEmpty(daySchedules.getSchedulesId()) ? daySchedules.getSchedulesId() : null); @@ -194,16 +194,19 @@ public class EmergencySchedulesNewServiceImpl extends MPJBaseServiceImpl userIdSet = new HashSet<>(); - userList.forEach(item -> { + int sortIndex = 0; // 添加计数器 + for (EmergencySchedulesItem item : userList) { String userId = item.getUserId(); if (!userIdSet.contains(userId)) { // 如果不包含,则进行设置并添加 item.setSchedulesId(emergencySchedules.getId()); item.setUserType(userType); + item.setSort(sortIndex); itemList.add(item); userIdSet.add(userId); + sortIndex++; } - }); + } } // 写入数据库 itemService.saveOrUpdateBatch(itemList); diff --git a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java index 6178f2c..6e0dda3 100644 --- a/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java +++ b/jeecg-system/jeecg-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java @@ -27,6 +27,7 @@ import org.jeecg.common.constant.FillRuleConstant; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.exception.ExceptionAssertsUtil; import org.jeecg.common.system.bean.response.BaseUser; +import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.SysDepartGps; import org.jeecg.common.system.vo.SysDepartModel; @@ -211,7 +212,7 @@ public class SysDepartServiceImpl extends ServiceImpl secondDeparts = departMapper - .selectList(new LambdaQueryWrapper().eq(SysDepart::getParentId, "1683768826307096578")); - // 二级单位名称分组 - Map secondMap = secondDeparts.stream() - .collect(Collectors.toMap(SysDepart::getDepartName, depart -> depart, (existing, replacement) -> existing)); + public void departDataInit() { + String filePath = "C:\\Users\\Huawei\\Desktop\\JSON-1761272930886.xlsx"; - // 获取目前的三级部门数据 - List threeDeparts = departMapper - .selectList(new LambdaQueryWrapper() - .in(SysDepart::getParentId, secondDeparts.stream().map(SysDepart::getId).collect(Collectors.toList()))); - // 三级部门名称分组 - Map threeMap = threeDeparts.stream() - .collect(Collectors.toMap(SysDepart::getDepartName, depart -> depart, (existing, replacement) -> existing)); - - // 获取目前的四级部门数据 - List fourDeparts = departMapper - .selectList(new LambdaQueryWrapper() - .in(SysDepart::getParentId, threeDeparts.stream().map(SysDepart::getId).collect(Collectors.toList()))); - // 三级部门名称分组 - Map fourMap = fourDeparts.stream() - .collect(Collectors.toMap(SysDepart::getDepartName, depart -> depart, (existing, replacement) -> existing)); - - List secondDepartList = new ArrayList<>(); - - List threeDepartList = new ArrayList<>(); - - List fourDepartList = new ArrayList<>(); + // 2 + List twoDeparts = new ArrayList<>(); + // 3 + List threeDeparts = new ArrayList<>(); + // 4 + List fourDeparts = new ArrayList<>(); + // 5 + List fiveDeparts = new ArrayList<>(); + // 6 + List sixDeparts = new ArrayList<>(); try (FileInputStream file = new FileInputStream(filePath); XSSFWorkbook workbook = new XSSFWorkbook(file)) { - // 获取第一个工作表 XSSFSheet sheet = workbook.getSheetAt(0); - // 从第二行开始(索引为1) - for (int i = 2; i <= sheet.getLastRowNum(); i++) { + for (int i = 1; i <= sheet.getLastRowNum(); i++) { XSSFRow row = sheet.getRow(i); if (row != null) { - // 获取第一个单元格(索引0)的数据 二级单位名称 + // 获取第一个单元格(索引0)的数据 层级 XSSFCell firstCell = row.getCell(0); - String firstCellValue = firstCell != null ? getCellValue(firstCell) : "[空]"; + String level = firstCell != null ? getCellValue(firstCell) : "[空]"; - // 获取第二个单元格(索引1)的数据 三级部门名称 - XSSFCell secondCell = row.getCell(1); - String secondCellValue = secondCell != null ? getCellValue(secondCell) : "[空]"; + // 获取第二个单元格(索引1)的数据 名称 + XSSFCell oneCell = row.getCell(1); + String name = oneCell != null ? getCellValue(oneCell) : "[空]"; - // 获取第三个单元格(索引1)的数据 经度 - XSSFCell threeCell = row.getCell(2); - String threeCellValue = secondCell != null ? getCellValue(threeCell) : "[空]"; + // 获取第三个单元格(索引1)的数据 id + XSSFCell secondCell = row.getCell(2); + String unitId = secondCell != null ? getCellValue(secondCell) : "[空]"; - // 获取第四个单元格(索引1)的数据 经度 - XSSFCell fourCell = row.getCell(3); - String fourCellValue = secondCell != null ? getCellValue(fourCell) : "[空]"; + // 获取第四个单元格(索引1)的数据 上级id + XSSFCell threeCell = row.getCell(3); + String parentUnitId = threeCell != null ? getCellValue(threeCell) : "[空]"; - if (StrUtil.isNotBlank(firstCellValue)) { - SysDepart depart = secondMap.get(firstCellValue); - if (depart == null) { - // 现有不存在 需添加 - SysDepart newDepart = new SysDepart(); - newDepart.setDepartName(firstCellValue); - newDepart.setParentId("1683768826307096578"); - newDepart.setOrgCategory("2"); - newDepart.setOrgType("2"); - this.saveDepartData(newDepart,GlobalUtils.getLoginUser().getUsername()); - if (null != newDepart.getId()){ - SysDepartGps departGps = new SysDepartGps(); - departGps.setDepartId(newDepart.getId()); - String run = converter.run(threeCellValue + "-" + fourCellValue); - System.out.println(run); -// // 经度 -// departGps.setLng(); -// // 纬度 -// departGps.setLat(); + // 获取第五个单元格(索引1)的数据 code + XSSFCell fourCell = row.getCell(4); + String unitCode = threeCell != null ? getCellValue(fourCell) : "[空]"; - } - } + // 判断当前几级单位 + long numDepart = level.chars() + .filter(c -> c == '|') + .count(); + SysDepart depart = new SysDepart(); + depart.setId(unitCode); + depart.setDepartName(name); + depart.setDepartNameEn(unitId); + depart.setParentId(parentUnitId); + depart.setDepartOrder(0); + depart.setOrgCategory("2"); + depart.setOrgClass("1"); + depart.setCreateBy(GlobalUtils.getLoginUser().getUsername()); + depart.setStatus("1"); + if (numDepart == 1){ + twoDeparts.add(depart); + } + if (numDepart == 2){ + threeDeparts.add(depart); + } + if (numDepart == 3){ + fourDeparts.add(depart); + } + if (numDepart == 4){ + fiveDeparts.add(depart); + } + if (numDepart == 5){ + sixDeparts.add(depart); } } } @@ -1620,6 +1612,88 @@ public class SysDepartServiceImpl extends ServiceImpl sysDeparts = departMapper.selectList(new LambdaQueryWrapper<>()); + + // 2 +// for (SysDepart twoDepart : twoDeparts) { +// boolean exists = sysDeparts.stream() +// .anyMatch(sysDepart -> twoDepart.getDepartNameEn().equals(sysDepart.getDepartNameEn())); +// +// if (exists) { +// System.out.println("已添加过"); +// } else { +// this.saveDepartData(twoDepart, twoDepart.getCreateBy()); +// } +// } + + //3 +// for (SysDepart threeDepart : threeDeparts) { +// boolean exists = sysDeparts.stream() +// .anyMatch(sysDepart -> threeDepart.getDepartNameEn().equals(sysDepart.getDepartNameEn())); +// +// if (exists) { +// System.out.println("已添加过"); +// } else { +// SysDepart depart = departMapper.selectOne(new LambdaQueryWrapper() +// .eq(SysDepart::getDepartNameEn, threeDepart.getParentId())); +// if (depart != null) { +// threeDepart.setParentId(depart.getId()); +// } +// this.saveDepartData(threeDepart, threeDepart.getCreateBy()); +// } +// } +// +// //4 +// for (SysDepart fourDepart : fourDeparts) { +// boolean exists = sysDeparts.stream() +// .anyMatch(sysDepart -> fourDepart.getDepartNameEn().equals(sysDepart.getDepartNameEn())); +// +// if (exists) { +// System.out.println("已添加过"); +// } else { +// SysDepart depart = departMapper.selectOne(new LambdaQueryWrapper() +// .eq(SysDepart::getDepartNameEn, fourDepart.getParentId())); +// if (depart != null) { +// fourDepart.setParentId(depart.getId()); +// } +// this.saveDepartData(fourDepart, fourDepart.getCreateBy()); +// } +// } +// +// //5 +// for (SysDepart fiveDepart : fiveDeparts) { +// boolean exists = sysDeparts.stream() +// .anyMatch(sysDepart -> fiveDepart.getDepartNameEn().equals(sysDepart.getDepartNameEn())); +// +// if (exists) { +// System.out.println("已添加过"); +// } else { +// SysDepart depart = departMapper.selectOne(new LambdaQueryWrapper() +// .eq(SysDepart::getDepartNameEn, fiveDepart.getParentId())); +// if (depart != null) { +// fiveDepart.setParentId(depart.getId()); +// } +// this.saveDepartData(fiveDepart, fiveDepart.getCreateBy()); +// } +// } +// +// //6 + for (SysDepart sixDepart : sixDeparts) { + boolean exists = sysDeparts.stream() + .anyMatch(sysDepart -> sixDepart.getDepartNameEn().equals(sysDepart.getDepartNameEn())); + + if (exists) { + System.out.println("已添加过"); + } else { + SysDepart depart = departMapper.selectOne(new LambdaQueryWrapper() + .eq(SysDepart::getDepartNameEn, sixDepart.getParentId())); + if (depart != null) { + sixDepart.setParentId(depart.getId()); + } + this.saveDepartData(sixDepart, sixDepart.getCreateBy()); + } + } + } /**