From 05f29548073c79bc4aa47405629a53f28f69c765 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E4=B8=89=E7=82=AE?= <15856818120@163.com> Date: Sat, 24 Jan 2026 18:46:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=86=E7=BB=84=E5=92=8C=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../message/controller/GroupController.java | 99 ++++++++++ .../message/controller/WorkerController.java | 180 ++++++++++++++++++ .../java/com/bonus/message/dao/GroupVo.java | 45 +++++ .../java/com/bonus/message/dao/WorkerVo.java | 70 +++++++ .../com/bonus/message/mapper/GroupMapper.java | 56 ++++++ .../bonus/message/mapper/WorkerMapper.java | 44 +++++ .../bonus/message/service/GroupService.java | 30 +++ .../bonus/message/service/WorkerService.java | 33 ++++ .../service/impl/GroupServiceImpl.java | 95 +++++++++ .../service/impl/WorkerServiceImpl.java | 104 ++++++++++ .../src/main/resources/mapper/GroupMapper.xml | 55 ++++++ .../main/resources/mapper/WorkerMapper.xml | 61 ++++++ 12 files changed, 872 insertions(+) create mode 100644 bonus-business/src/main/java/com/bonus/message/controller/GroupController.java create mode 100644 bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java create mode 100644 bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java create mode 100644 bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java create mode 100644 bonus-business/src/main/java/com/bonus/message/mapper/GroupMapper.java create mode 100644 bonus-business/src/main/java/com/bonus/message/mapper/WorkerMapper.java create mode 100644 bonus-business/src/main/java/com/bonus/message/service/GroupService.java create mode 100644 bonus-business/src/main/java/com/bonus/message/service/WorkerService.java create mode 100644 bonus-business/src/main/java/com/bonus/message/service/impl/GroupServiceImpl.java create mode 100644 bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java create mode 100644 bonus-business/src/main/resources/mapper/GroupMapper.xml create mode 100644 bonus-business/src/main/resources/mapper/WorkerMapper.xml diff --git a/bonus-business/src/main/java/com/bonus/message/controller/GroupController.java b/bonus-business/src/main/java/com/bonus/message/controller/GroupController.java new file mode 100644 index 0000000..4d5cc75 --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/controller/GroupController.java @@ -0,0 +1,99 @@ +package com.bonus.message.controller; + +import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.core.page.TableDataInfo; +import com.bonus.message.dao.GroupVo; +import com.bonus.message.dao.WorkerVo; +import com.bonus.message.service.GroupService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author 马三炮 + * @date 2026/1/24 + */ +@Slf4j +@RestController +@RequestMapping("/worker") +public class GroupController extends BaseController { + + @Resource + private GroupService groupService; + + /** + * 获取分组管理列表 + */ + @GetMapping("/getGroupList") + public TableDataInfo getGroupList(GroupVo groupVo) { + try { + startPage(); + List list = groupService.getGroupList(groupVo); + return getDataTable(list); + } catch (Exception e) { + log.error(e.getMessage()); + return getDataTable(null); + } + } + + /** + * 新增分组 + */ + @PostMapping("/addGroup") + public AjaxResult addGroup(@RequestBody GroupVo groupVo) { + try { + int res = groupService.addGroup(groupVo); + if (res ==1) { + return AjaxResult.success(); + } else if (res ==2) { + return AjaxResult.error("分组已存在"); + } else { + return AjaxResult.error("新增失败"); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("系统异常,请联系管理员"); + } + } + + /** + * 删除分组 + */ + @PostMapping("/delGroup") + public AjaxResult delGroup(@RequestBody GroupVo groupVo) { + try { + int res = groupService.delGroup(groupVo); + if (res > 0) { + return AjaxResult.success(); + } else { + return AjaxResult.error("删除失败"); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("系统异常,请联系管理员"); + } + } + + /** + * 修改分组 + */ + @PostMapping("/updateGroup") + public AjaxResult updateGroup(@RequestBody GroupVo groupVo) { + try { + int res = groupService.updateGroup(groupVo); + if (res ==1) { + return AjaxResult.success(); + } else if (res ==2) { + return AjaxResult.error("组名已存在"); + } else { + return AjaxResult.error("修改失败"); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("系统异常,请联系管理员"); + } + } +} diff --git a/bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java b/bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java new file mode 100644 index 0000000..f81cc72 --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/controller/WorkerController.java @@ -0,0 +1,180 @@ +package com.bonus.message.controller; + +import com.bonus.common.core.controller.BaseController; +import com.bonus.common.core.domain.AjaxResult; +import com.bonus.common.core.page.TableDataInfo; +import com.bonus.common.utils.poi.ExcelUtil; +import com.bonus.message.dao.WorkerVo; +import com.bonus.message.service.WorkerService; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.poi.util.IOUtils; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.InputStream; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.List; + +/** + * @author 马三炮 + * @date 2026/1/24 + */ +@Slf4j +@RestController +@RequestMapping("/worker") +public class WorkerController extends BaseController { + + + @Resource + private WorkerService workerService; + + /** + * 获取人员管理列表 + */ + @GetMapping("/getWorkerList") + public TableDataInfo getWorkerList(WorkerVo workerVo) { + try { + startPage(); + List list = workerService.getWorkerList(workerVo); + return getDataTable(list); + } catch (Exception e) { + log.error(e.getMessage()); + return getDataTable(null); + } + } + + /** + * 新增人员 + */ + @PostMapping("/addWorker") + public AjaxResult addWorker(@RequestBody WorkerVo workerVo) { + try { + int res = workerService.addWorker(workerVo); + if (res ==1) { + return AjaxResult.success(); + } else if (res ==2) { + return AjaxResult.error("手机号已存在"); + } else { + return AjaxResult.error("新增失败"); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("系统异常,请联系管理员"); + } + } + + /** + * 删除人员 + */ + @PostMapping("/delWorker") + public AjaxResult delWorker(@RequestBody WorkerVo workerVo) { + try { + int res = workerService.delWorker(workerVo); + if (res > 0) { + return AjaxResult.success(); + } else { + return AjaxResult.error("删除失败"); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("系统异常,请联系管理员"); + } + } + + /** + * 修改人员 + */ + @PostMapping("/updateWorker") + public AjaxResult updateWorker(@RequestBody WorkerVo workerVo) { + try { + int res = workerService.updateWorker(workerVo); + if (res ==1) { + return AjaxResult.success(); + } else if (res ==2) { + return AjaxResult.error("手机号已存在"); + } else { + return AjaxResult.error("修改失败"); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("系统异常,请联系管理员"); + } + } + + @ApiOperation("人员模板下载") + @PostMapping("/downloadWorkerExcel") + public void downloadWorkerExcel(HttpServletRequest request, HttpServletResponse response) { + InputStream inputStream = null; + ServletOutputStream servletOutputStream = null; + try { + String path = "download/" + "人员导入模板.xlsx"; + inputStream = this.getClass().getClassLoader().getResourceAsStream(path); + response.setContentType("application/vnd.ms-excel"); + response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + response.addHeader("charset", "utf-8"); + response.addHeader("Pragma", "no-cache"); + String encodeName = URLEncoder.encode("人员导入模板.xlsx", StandardCharsets.UTF_8.toString()); + response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName); + servletOutputStream = response.getOutputStream(); + IOUtils.copy(inputStream, servletOutputStream); + response.flushBuffer(); + log.info("文件下载成功!!"); + } catch (Exception e) { + log.error(e.getMessage()); + e.printStackTrace(); + } finally { + try { + if (servletOutputStream != null) { + servletOutputStream.close(); + } + if (inputStream != null) { + inputStream.close(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + /** + * 导入人员 + */ + @PostMapping("/importWorker") + public AjaxResult importWorker(MultipartFile file) { + try { + ExcelUtil util = new ExcelUtil(WorkerVo.class); + List workerList = util.importExcel(file.getInputStream()); + String message = workerService.importWorker(workerList); + if ("导入成功".equals(message)) { + return success(message); + }else { + return AjaxResult.error(message); + } + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("模板错误"); + } + } + + + /** + * 获取人员管理列表不分页 + */ + @GetMapping("/getWorkerSelect") + public TableDataInfo getWorkerSelect(WorkerVo workerVo) { + try { + List list = workerService.getWorkerList(workerVo); + return getDataTable(list); + } catch (Exception e) { + log.error(e.getMessage()); + return getDataTable(null); + } + } + +} diff --git a/bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java b/bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java new file mode 100644 index 0000000..3f80c27 --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/dao/GroupVo.java @@ -0,0 +1,45 @@ +package com.bonus.message.dao; + +import lombok.Data; + +import java.util.Date; +import java.util.List; + +/** + * @author 马三炮 + * @date 2026/1/24 + */ +@Data +public class GroupVo { + + /** + * id + */ + private int id; + + /** + * 工作组名称 + */ + private String groupName; + + + /** + * 备注 + */ + private String remark; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /*** + * 分组人员信息 + */ + private List workerList; +} diff --git a/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java b/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java new file mode 100644 index 0000000..c0c57c5 --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/dao/WorkerVo.java @@ -0,0 +1,70 @@ +package com.bonus.message.dao; + +import com.bonus.common.annotation.Excel; +import lombok.Data; + +import java.util.Date; + +/** + * @author 马三炮 + * @date 2026/1/24 + */ +@Data +public class WorkerVo { + + /** + * id + */ + private int id; + + /** + * 姓名 + */ + @Excel(name = "姓名") + private String workerName; + + /** + * 部门Id + */ + private Integer orgId; + + /** + * 部门名称 + */ + @Excel(name = "所属部门") + private String orgName; + + + /** + * 性别 男/女 + */ + @Excel(name = "性别") + private String sex; + + /** + * 电话 + */ + @Excel(name = "电话") + private String phone; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 关键字 + */ + private String keyWord; + + /** + * 分组 + */ + private int groupId; + +} diff --git a/bonus-business/src/main/java/com/bonus/message/mapper/GroupMapper.java b/bonus-business/src/main/java/com/bonus/message/mapper/GroupMapper.java new file mode 100644 index 0000000..fc636ec --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/mapper/GroupMapper.java @@ -0,0 +1,56 @@ +package com.bonus.message.mapper; + + +import com.bonus.message.dao.GroupVo; +import com.bonus.message.dao.WorkerVo; + +import java.util.List; + +public interface GroupMapper { + + /** + * 获取分组管理列表 + */ + List getGroupList(GroupVo groupVo); + + /** + * 获取人员列表 + * @param group + * @return + */ + List getWorkerList(GroupVo group); + + /** + * 根据分组名称查询 + * @param groupVo + * @return + */ + GroupVo getGroupByName(GroupVo groupVo); + + /** + * 新增分组 + */ + int addGroup(GroupVo groupVo); + + /** + * 删除分组 + */ + int delGroup(GroupVo groupVo); + + /** + * 新增分组人员 + * @param worker + */ + void addGroupDetails(WorkerVo worker); + + /** + * 修改分组 + */ + void updateGroup(GroupVo groupVo); + + /** + * 根据分组删除人员 + * @param groupVo + */ + void delGroupDetails(GroupVo groupVo); +} diff --git a/bonus-business/src/main/java/com/bonus/message/mapper/WorkerMapper.java b/bonus-business/src/main/java/com/bonus/message/mapper/WorkerMapper.java new file mode 100644 index 0000000..55cc5cf --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/mapper/WorkerMapper.java @@ -0,0 +1,44 @@ +package com.bonus.message.mapper; + + +import com.bonus.common.core.domain.entity.SysDept; +import com.bonus.message.dao.WorkerVo; + +import java.util.List; + +public interface WorkerMapper { + + /** + * 获取人员管理列表 + */ + List getWorkerList(WorkerVo workerVo); + + /** + * 根据手机号查询 + * @param workerVo + * @return + */ + WorkerVo getWorkerByPhone(WorkerVo workerVo); + + /** + * 新增人员 + */ + int addWorker(WorkerVo workerVo); + + /** + * 删除人员 + */ + int delWorker(WorkerVo workerVo); + + /** + * 修改人员 + */ + int updateWorker(WorkerVo workerVo); + + /** + * 获取部门信息 + * @param workerVo + * @return + */ + SysDept getDeptById(WorkerVo workerVo); +} diff --git a/bonus-business/src/main/java/com/bonus/message/service/GroupService.java b/bonus-business/src/main/java/com/bonus/message/service/GroupService.java new file mode 100644 index 0000000..8ec46e9 --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/service/GroupService.java @@ -0,0 +1,30 @@ +package com.bonus.message.service; + + + +import com.bonus.message.dao.GroupVo; + +import java.util.List; + +public interface GroupService { + + /** + * 获取分组管理列表 + */ + List getGroupList(GroupVo groupVo); + + /** + * 新增分组 + */ + int addGroup(GroupVo groupVo); + + /** + * 删除分组 + */ + int delGroup(GroupVo groupVo); + + /** + * 修改分组 + */ + int updateGroup(GroupVo groupVo); +} diff --git a/bonus-business/src/main/java/com/bonus/message/service/WorkerService.java b/bonus-business/src/main/java/com/bonus/message/service/WorkerService.java new file mode 100644 index 0000000..bdc2be6 --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/service/WorkerService.java @@ -0,0 +1,33 @@ +package com.bonus.message.service; + +import com.bonus.message.dao.WorkerVo; + +import java.util.List; + +public interface WorkerService { + + /** + * 获取人员管理列表 + */ + List getWorkerList(WorkerVo workerVo); + + /** + * 新增人员 + */ + int addWorker(WorkerVo workerVo); + + /** + * 删除人员 + */ + int delWorker(WorkerVo workerVo); + + /** + * 修改人员 + */ + int updateWorker(WorkerVo workerVo); + + /** + * 导入人员 + */ + String importWorker(List workerList); +} diff --git a/bonus-business/src/main/java/com/bonus/message/service/impl/GroupServiceImpl.java b/bonus-business/src/main/java/com/bonus/message/service/impl/GroupServiceImpl.java new file mode 100644 index 0000000..143f883 --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/service/impl/GroupServiceImpl.java @@ -0,0 +1,95 @@ +package com.bonus.message.service.impl; + +import com.bonus.common.utils.StringUtils; +import com.bonus.message.dao.GroupVo; +import com.bonus.message.dao.WorkerVo; +import com.bonus.message.mapper.GroupMapper; +import com.bonus.message.service.GroupService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + * @author 马三炮 + * @date 2026/1/24 + */ +@Service +@Slf4j +public class GroupServiceImpl implements GroupService { + + @Resource + private GroupMapper groupMapper; + + /** + * 获取分组管理列表 + */ + @Override + public List getGroupList(GroupVo groupVo) { + List groupList = groupMapper.getGroupList(groupVo); + for (GroupVo group : groupList) { + List workerList = groupMapper.getWorkerList(group); + group.setWorkerList(workerList); + } + return groupList; + } + + /** + * 新增分组 + */ + @Override + @Transactional + public int addGroup(GroupVo groupVo) { + groupVo.setCreateTime(new Date()); + if (StringUtils.isNotEmpty(groupVo.getGroupName())){ + //判断该分组是否存在 + GroupVo group = groupMapper.getGroupByName(groupVo); + if (group != null){ + return 2; + } + } + groupMapper.addGroup(groupVo); + List workerList = groupVo.getWorkerList(); + for (WorkerVo worker : workerList) { + worker.setGroupId(groupVo.getId()); + groupMapper.addGroupDetails(worker); + } + return 1; + + } + + /** + * 删除分组 + */ + @Override + public int delGroup(GroupVo groupVo) { + return groupMapper.delGroup(groupVo); + } + + /** + * 修改分组 + */ + @Override + @Transactional + public int updateGroup(GroupVo groupVo) { + groupVo.setUpdateTime(new Date()); + if (StringUtils.isNotEmpty(groupVo.getGroupName())){ + //判断该分组是否存在 + GroupVo group = groupMapper.getGroupByName(groupVo); + if (group != null && groupVo.getId()!= group.getId()){ + return 2; + } + } + groupMapper.updateGroup(groupVo); + groupMapper.delGroupDetails(groupVo); + List workerList = groupVo.getWorkerList(); + for (WorkerVo worker : workerList) { + worker.setGroupId(groupVo.getId()); + groupMapper.addGroupDetails(worker); + } + return 0; + } +} diff --git a/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java b/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java new file mode 100644 index 0000000..e5fecbd --- /dev/null +++ b/bonus-business/src/main/java/com/bonus/message/service/impl/WorkerServiceImpl.java @@ -0,0 +1,104 @@ +package com.bonus.message.service.impl; + +import com.bonus.common.core.domain.entity.SysDept; +import com.bonus.common.utils.AesUtil; +import com.bonus.common.utils.StringUtils; +import com.bonus.message.dao.WorkerVo; +import com.bonus.message.mapper.WorkerMapper; +import com.bonus.message.service.WorkerService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + + +/** + * @author 马三炮 + * @date 2026/1/24 + */ +@Service +@Slf4j +public class WorkerServiceImpl implements WorkerService { + + @Resource + private WorkerMapper workerMapper; + + /** + * 获取人员管理列表 + */ + @Override + public List getWorkerList(WorkerVo workerVo) { + List workerList = workerMapper.getWorkerList(workerVo); + for (WorkerVo worker : workerList) { + workerVo.setPhone(AesUtil.encrypt(worker.getPhone())); + } + return workerList; + } + + /** + * 新增人员 + */ + @Override + public int addWorker(WorkerVo workerVo) { + workerVo.setCreateTime(new Date()); + if (StringUtils.isNotEmpty(workerVo.getPhone())){ + //判断该手机号是否存在 + WorkerVo worker = workerMapper.getWorkerByPhone(workerVo); + if (worker != null){ + return 2; + } + } + return workerMapper.addWorker(workerVo); + } + + /** + * 删除人员 + */ + @Override + public int delWorker(WorkerVo workerVo) { + return workerMapper.delWorker(workerVo); + } + + /** + * 修改人员 + */ + @Override + public int updateWorker(WorkerVo workerVo) { + workerVo.setUpdateTime(new Date()); + if (StringUtils.isNotEmpty(workerVo.getPhone())){ + //判断该手机号是否存在 + WorkerVo worker = workerMapper.getWorkerByPhone(workerVo); + if (worker != null && workerVo.getId() != worker.getId()){ + return 2; + } + } + return workerMapper.updateWorker(workerVo); + } + + /** + * 导入人员 + */ + @Override + @Transactional + public String importWorker(List workerList) { + + for (WorkerVo workerVo : workerList) { + //对必填项进行校验 + if(StringUtils.isEmpty(workerVo.getPhone()) + || StringUtils.isEmpty(workerVo.getOrgName()) + || StringUtils.isEmpty(workerVo.getWorkerName()) + || StringUtils.isEmpty(workerVo.getSex()) + ){ + return "缺少必填项"; + } + + SysDept sysDept = workerMapper.getDeptById(workerVo); + workerVo.setOrgId(sysDept.getDeptId().intValue()); + addWorker(workerVo); + } + return "导入成功"; + } +} diff --git a/bonus-business/src/main/resources/mapper/GroupMapper.xml b/bonus-business/src/main/resources/mapper/GroupMapper.xml new file mode 100644 index 0000000..1da5de1 --- /dev/null +++ b/bonus-business/src/main/resources/mapper/GroupMapper.xml @@ -0,0 +1,55 @@ + + + + + insert into pm_group (group_name,remark,create_time) + values (#{groupName},#{remark},#{createTime}) + + + insert into bm_group_details (group_id,worker_id) + values (#{groupId},#{id}) + + + update pm_group + + + + group_name=#{groupName}, + + + remark=#{remark}, + + + update_time=#{updateTime}, + + + where id = #{id} + + + update pm_group set is_active= '0' where id = #{id} + + + delete from bm_group_details where group_id = #{id} + + + + + + diff --git a/bonus-business/src/main/resources/mapper/WorkerMapper.xml b/bonus-business/src/main/resources/mapper/WorkerMapper.xml new file mode 100644 index 0000000..f234d61 --- /dev/null +++ b/bonus-business/src/main/resources/mapper/WorkerMapper.xml @@ -0,0 +1,61 @@ + + + + + insert into pm_worker (worker_name,org_id,sex,phone,create_time) + values (#{workerName},#{orgId},#{sex},#{phone},#{createTime}) + + + update pm_worker + + + + worker_name=#{workerName}, + + + org_id=#{orgId}, + + + sex=#{sex}, + + + phone=#{phone}, + + + update_time=#{updateTime}, + + + where id = #{id} + + + update pm_worker set is_active ='0' where id = #{id} + + + + + +