diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java index f03929a9..b01a122d 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/message/BpmMessageConvert.java @@ -71,7 +71,7 @@ public interface BpmMessageConvert { if (reason != null) { MsgData approvalReason = new MsgData(); if (reason.length() > 10) { - reason = reason.substring(0,10) + ". . . . "; + reason = reason.substring(0, 10) + ". . . . "; } approvalReason.setName("thing12"); @@ -84,6 +84,61 @@ public interface BpmMessageConvert { return message; } + + /** + * @param openId 微信小程序唯一id + * @param processInstanceName 流程名称 + * @param result 审批结果 + * @param reason 审批原因 + * @param miniProgramState 小程序的状态 + * @return + */ + default SubscribeMessageReqDTO convertApprovalResultNotificationPage(String openId, String processInstanceName, + String time, String result, String reason, + String miniProgramState, String page) { + SubscribeMessageReqDTO message = new SubscribeMessageReqDTO(); + message.setToUser(openId); + message.setTemplateId("OnJjp5pdjG1PHMoELYaqp3Xq8jWZ5E6ndO0clEIQ4tk"); + //审批类型 + MsgData processType = new MsgData(); + processType.setName("thing1"); + processType.setValue(processInstanceName); + message.addData(processType); + + //发起时间 + MsgData createTime = new MsgData(); + createTime.setName("time2"); + createTime.setValue(time); + message.addData(createTime); + + //审批时间 + MsgData approvalTime = new MsgData(); + approvalTime.setName("time7"); + approvalTime.setValue(DateUtils.dateFormat(new Date(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)); + message.addData(approvalTime); + + //审批结果 + MsgData approvalResult = new MsgData(); + approvalResult.setName("phrase3"); + approvalResult.setValue(result); + message.addData(approvalResult); + + if (reason != null) { + MsgData approvalReason = new MsgData(); + if (reason.length() > 10) { + reason = reason.substring(0, 10) + ". . . . "; + } + + approvalReason.setName("thing12"); + approvalReason.setValue(reason); + message.addData(approvalReason); + } + + message.setMiniprogramState(miniProgramState); + message.setPage(page); + return message; + } + /** * @param openId 微信小程序唯一id * @param processInstanceName 流程名称 @@ -128,10 +183,10 @@ public interface BpmMessageConvert { } /** - * @param openId 微信小程序唯一id - * @param workTaskDO 任务对象 - * @param nickname 发布人姓名 - * @param miniProgramState 小程序的状态 + * @param openId 微信小程序唯一id + * @param workTaskDO 任务对象 + * @param nickname 发布人姓名 + * @param miniProgramState 小程序的状态 * @return */ default SubscribeMessageReqDTO convertWorkTask(String openId, String processInstanceName, BpmOAWorkTaskDO workTaskDO, @@ -165,7 +220,7 @@ public interface BpmMessageConvert { content.setName("thing2"); if (isFlag) { content.setValue("你分配的任务已完成!"); - }else { + } else { content.setValue("你收到了一个新的任务!"); } message.addData(content); @@ -173,7 +228,7 @@ public interface BpmMessageConvert { message.setMiniprogramState(miniProgramState); if (isFlag) { message.setPage("subPages/task/taskAssignment?userId=" + workTaskDO.getReceiverUserId() + "&deptId=" + deptId); - }else { + } else { message.setPage("subPages/task/taskDispose?id=" + workTaskDO.getId()); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java index c8b0ef55..145d9607 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/financialpayment/FinancialPaymentServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.module.bpm.service.financialpayment; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import cn.iocoder.yudao.framework.common.Constants; import cn.iocoder.yudao.framework.common.pojo.CommonResult; @@ -40,7 +39,6 @@ import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils.getLoginUserId; @@ -120,16 +118,15 @@ public class FinancialPaymentServiceImpl implements FinancialPaymentService { AdminUserRespDTO adminUserRespDTO = userApi.getUser(financialPayment.getUserId()).getData(); if (StrUtil.isNotEmpty(adminUserRespDTO.getOpenId())) { String result = vo.getStatus() == 1 ? "通过" : "拒绝"; + String page = vo.getStatus() == 1 ? + "subPages/paymentVoucher/paymentVoucher?id=" + financialPayment.getProcessInstanceId() + "&isDetail=1" : + "pages/bpm/task/todo/examineApprove?id=" + financialPayment.getProcessInstanceId() + "&isDetail=1"; // --- 发消息通知发起人 String time = financialPaymentItem.getCreateTime().format(Constants.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND); subscribeMessageSendApi.sendApprovalResultNotification( - BpmMessageConvert.INSTANCE.convertApprovalResultNotification( + BpmMessageConvert.INSTANCE.convertApprovalResultNotificationPage( adminUserRespDTO.getOpenId(), financialPayment.getProcessInstanceName(), time, result, (StrUtil.isEmpty(financialPaymentItem.getNotes()) ? result : financialPaymentItem.getNotes()), - financialPayment.getProcessInstanceId(), - /** - * 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 - */ - "formal")); + page, "formal")); } } catch (Exception e) { log.error("财务管理审批发送通知人失败:{}", financialPayment); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupController.java index e68827cb..5a026776 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/AttendanceAddressGroupController.java @@ -6,10 +6,13 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupItemRespVO; import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupRespVO; import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupDO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupItemDO; +import cn.iocoder.yudao.module.system.service.attendance.addressgroup.AttendanceAddressGroupItemService; import cn.iocoder.yudao.module.system.service.attendance.addressgroup.AttendanceAddressGroupService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -22,6 +25,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.util.Collections; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -35,21 +39,23 @@ public class AttendanceAddressGroupController { @Resource private AttendanceAddressGroupService attendanceAddressGroupService; + @Resource + private AttendanceAddressGroupItemService attendanceAddressGroupItemService; - @PostMapping("/create") - @Operation(summary = "创建考勤地址组") + @PostMapping("/createOrUpdate") + @Operation(summary = "创建更新考勤地址组") @PreAuthorize("@ss.hasPermission('system:attendance-address-group:create')") public CommonResult createAttendanceAddressGroup(@Valid @RequestBody AttendanceAddressGroupSaveReqVO createReqVO) { return success(attendanceAddressGroupService.createAttendanceAddressGroup(createReqVO)); } - @PutMapping("/update") - @Operation(summary = "更新考勤地址组") - @PreAuthorize("@ss.hasPermission('system:attendance-address-group:update')") - public CommonResult updateAttendanceAddressGroup(@Valid @RequestBody AttendanceAddressGroupSaveReqVO updateReqVO) { - attendanceAddressGroupService.updateAttendanceAddressGroup(updateReqVO); - return success(true); - } +// @PutMapping("/update") +// @Operation(summary = "更新考勤地址组") +// @PreAuthorize("@ss.hasPermission('system:attendance-address-group:update')") +// public CommonResult updateAttendanceAddressGroup(@Valid @RequestBody AttendanceAddressGroupSaveReqVO updateReqVO) { +// attendanceAddressGroupService.updateAttendanceAddressGroup(updateReqVO); +// return success(true); +// } @DeleteMapping("/delete") @Operation(summary = "删除考勤地址组") @@ -66,7 +72,11 @@ public class AttendanceAddressGroupController { @PreAuthorize("@ss.hasPermission('system:attendance-address-group:query')") public CommonResult getAttendanceAddressGroup(@RequestParam("id") Long id) { AttendanceAddressGroupDO attendanceAddressGroup = attendanceAddressGroupService.getAttendanceAddressGroup(id); - return success(BeanUtils.toBean(attendanceAddressGroup, AttendanceAddressGroupRespVO.class)); + AttendanceAddressGroupRespVO vo = BeanUtils.toBean(attendanceAddressGroup, AttendanceAddressGroupRespVO.class); + List listByAddressGroupIds = attendanceAddressGroupItemService.getListByAddressGroupIds(Collections.singletonList(vo.getId())); + List items = BeanUtils.toBean(listByAddressGroupIds, AttendanceAddressGroupItemRespVO.class); + vo.setItems(items); + return success(vo); } @GetMapping("/page") @@ -77,6 +87,14 @@ public class AttendanceAddressGroupController { return success(BeanUtils.toBean(pageResult, AttendanceAddressGroupRespVO.class)); } + @GetMapping("/allList") + @Operation(summary = "获得考勤地址组") + @PreAuthorize("@ss.hasPermission('system:attendance-address-group:query')") + public CommonResult> getAllList() { + List list = attendanceAddressGroupService.getAllList(); + return success(BeanUtils.toBean(list, AttendanceAddressGroupRespVO.class)); + } + @GetMapping("/export-excel") @Operation(summary = "导出考勤地址组 Excel") @PreAuthorize("@ss.hasPermission('system:attendance-address-group:export')") diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupRespVO.java index 0a0dd1bd..75dc0669 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupRespVO.java @@ -4,6 +4,8 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.time.LocalDateTime; +import java.util.List; + import com.alibaba.excel.annotation.*; @Schema(description = "管理后台 - 考勤地址组 Response VO") @@ -23,4 +25,7 @@ public class AttendanceAddressGroupRespVO { @ExcelProperty("创建时间") private LocalDateTime createTime; + @Schema(description = "子表", example = "子表") + private List items; + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupSaveReqVO.java index 4a472861..c348bfd3 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/addressgroup/vo/AttendanceAddressGroupSaveReqVO.java @@ -1,7 +1,9 @@ package cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; +import lombok.Data; + +import java.util.List; @Schema(description = "管理后台 - 考勤地址组新增/修改 Request VO") @Data @@ -13,4 +15,6 @@ public class AttendanceAddressGroupSaveReqVO { @Schema(description = "名称", example = "张三") private String name; + @Schema(description = "子列表", example = "子列表") + private List items; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogCommentConvert.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogCommentConvert.java index 1898eb7f..f6c4fc11 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogCommentConvert.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/convert/worklog/LogCommentConvert.java @@ -15,10 +15,10 @@ public interface LogCommentConvert { LogCommentConvert INSTANCE = Mappers.getMapper(LogCommentConvert.class); /** - * @param openId 微信小程序唯一id - * @param logCommentDO 评论对象 - * @param nickname 发布人姓名 - * @param miniProgramState 小程序的状态 + * @param openId 微信小程序唯一id + * @param logCommentDO 评论对象 + * @param nickname 发布人姓名 + * @param miniProgramState 小程序的状态 * @return */ default SubscribeMessageReqDTO convertLogComment(String openId, WorkLogCommentDO logCommentDO, String nickname, String miniProgramState) { @@ -32,7 +32,7 @@ public interface LogCommentConvert { noticeType.setName("phrase8"); if (logCommentDO.getType()) { noticeType.setValue("评论回复"); - }else { + } else { noticeType.setValue("日志评论"); } message.addData(noticeType); @@ -54,7 +54,7 @@ public interface LogCommentConvert { String comment = logCommentDO.getComment(); content.setName("thing2"); if (comment.length() > 10) { - comment = comment.substring(0,10) + ". . . . "; + comment = comment.substring(0, 10) + ". . . . "; } content.setValue(comment); message.addData(content); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/birthday/BirthdayJob.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/birthday/BirthdayJob.java new file mode 100644 index 00000000..d9645c32 --- /dev/null +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/job/birthday/BirthdayJob.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.system.job.birthday; + +import cn.iocoder.yudao.framework.tenant.core.job.TenantJob; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; +import cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.xxl.job.core.biz.model.ReturnT; +import com.xxl.job.core.handler.annotation.XxlJob; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.List; + +@Component +@Slf4j +@EnableScheduling +public class BirthdayJob { + + + @Resource + private AdminUserMapper adminUserMapper; + + /** + * 生日提醒 + * + * @return + */ + @XxlJob("birthdayJob") + @TenantJob // --- ⚠️ 这个注解 会将租户列表拉出来 完了后逐个租户执行 定时任务需要注意 + public ReturnT execute() { + String time = LocalDateTime.now().format(DateTimeFormatter.ofPattern("MM-dd")); + // -- 获取当天月日 生日的人员列表 + List list = adminUserMapper.selectList(new LambdaQueryWrapper() + .like(AdminUserDO::getBirthdayDay, time)); + if (!list.isEmpty()) { + // TODO: 2024/9/2 发送短信未指定人 + log.info("生日提醒,生日为{},人员为{}", time, list); + } + // 返回执行成功 + return ReturnT.SUCCESS; + } +} diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java index 11b99f2f..013ee777 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/AttendanceServiceImpl.java @@ -372,15 +372,14 @@ public class AttendanceServiceImpl implements AttendanceService { public Integer verifyCheckInAddress(double latitude, double longitude, List addressList, String addressGroupIds) { if (StringUtils.isNotEmpty(addressGroupIds)) { List addressGroupIdList = Arrays.stream(addressGroupIds.split(Constants.COMMA)).map(Long::parseLong).collect(Collectors.toList()); - List list = attendanceAddressGroupItemService.setListByAddressGroupIds(addressGroupIdList); + List list = attendanceAddressGroupItemService.getListByAddressGroupIds(addressGroupIdList); if (!list.isEmpty()) { addressList.addAll(list); } } int num = 0; for (AttendanceAddressGroupItemDO item : addressList) { - num = GeoUtil.distance(latitude, longitude - , Double.parseDouble(item.getLatitude()), Double.parseDouble(item.getLongitude()), item.getScope()); + num = GeoUtil.distance(latitude, longitude, Double.parseDouble(item.getLatitude()), Double.parseDouble(item.getLongitude()), item.getScope()); if (num == 1) { return num; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemService.java index d705281d..175db4cc 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemService.java @@ -59,5 +59,5 @@ public interface AttendanceAddressGroupItemService { * @param addressGroupIdList * @return */ - List setListByAddressGroupIds(List addressGroupIdList); + List getListByAddressGroupIds(List addressGroupIdList); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemServiceImpl.java index eb41c219..32a6cd47 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupItemServiceImpl.java @@ -58,7 +58,7 @@ public class AttendanceAddressGroupItemServiceImpl implements AttendanceAddressG } @Override - public List setListByAddressGroupIds(List addressGroupIdList) { + public List getListByAddressGroupIds(List addressGroupIdList) { return attendanceAddressGroupItemMapper.selectList(new LambdaQueryWrapper() .in(AttendanceAddressGroupItemDO::getAddressGroupId, addressGroupIdList)); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupService.java index 0029c582..5a892666 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupService.java @@ -6,6 +6,7 @@ import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.Attendanc import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupDO; import javax.validation.Valid; +import java.util.List; /** * 考勤地址组 Service 接口 @@ -52,4 +53,10 @@ public interface AttendanceAddressGroupService { */ PageResult getAttendanceAddressGroupPage(AttendanceAddressGroupPageReqVO pageReqVO); + /** + * 获取所有列表 + * + * @return + */ + List getAllList(); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupServiceImpl.java index 28cd5e5c..83280258 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/attendance/addressgroup/AttendanceAddressGroupServiceImpl.java @@ -1,15 +1,22 @@ package cn.iocoder.yudao.module.system.service.attendance.addressgroup; +import cn.hutool.core.collection.CollectionUtil; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.addressgroup.vo.AttendanceAddressGroupSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupDO; +import cn.iocoder.yudao.module.system.dal.dataobject.attendance.addressgroup.AttendanceAddressGroupItemDO; +import cn.iocoder.yudao.module.system.dal.mysql.attendance.addressgroup.AttendanceAddressGroupItemMapper; import cn.iocoder.yudao.module.system.dal.mysql.attendance.addressgroup.AttendanceAddressGroupMapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; /** * 考勤地址组 Service 实现类 @@ -22,14 +29,53 @@ public class AttendanceAddressGroupServiceImpl implements AttendanceAddressGroup @Resource private AttendanceAddressGroupMapper attendanceAddressGroupMapper; + @Resource + private AttendanceAddressGroupItemMapper attendanceAddressGroupItemMapper; @Override public Long createAttendanceAddressGroup(AttendanceAddressGroupSaveReqVO createReqVO) { - // 插入 + Long id = createReqVO.getId(); AttendanceAddressGroupDO attendanceAddressGroup = BeanUtils.toBean(createReqVO, AttendanceAddressGroupDO.class); - attendanceAddressGroupMapper.insert(attendanceAddressGroup); + if (id == null) { + // 插入 + attendanceAddressGroupMapper.insert(attendanceAddressGroup); + id = attendanceAddressGroup.getId(); + } else { + attendanceAddressGroupMapper.updateById(attendanceAddressGroup); + } + // -- 更新子表 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper() + .eq(AttendanceAddressGroupItemDO::getAddressGroupId, id); + if (CollectionUtil.isEmpty(createReqVO.getItems())) { + attendanceAddressGroupItemMapper.delete(lambdaQueryWrapper); + } else { + List items = BeanUtils.toBean(createReqVO.getItems(), AttendanceAddressGroupItemDO.class); + for (AttendanceAddressGroupItemDO item : items) { + item.setAddressGroupId(id); + } + List oldItems = attendanceAddressGroupItemMapper.selectList(new LambdaQueryWrapper() + .eq(AttendanceAddressGroupItemDO::getAddressGroupId, id)); + // -- 过滤出所有需要添加的 + List saveList = items.stream().filter(a -> a.getId() == null).collect(Collectors.toList()); + if (!CollectionUtil.isEmpty(saveList)) { + attendanceAddressGroupItemMapper.insertBatch(saveList); + } + // -- 过滤出所有需要更新的 + List editList = items.stream().filter(a -> a.getId() != null).collect(Collectors.toList()); + List ids = new ArrayList<>(); + if (!CollectionUtil.isEmpty(editList)) { + attendanceAddressGroupItemMapper.updateBatch(editList); + ids = editList.stream().map(AttendanceAddressGroupItemDO::getId).collect(Collectors.toList()); + } + // -- 过滤出所有需要删除的 + List oldIds = oldItems.stream().map(AttendanceAddressGroupItemDO::getId).collect(Collectors.toList()); + List delIds = new ArrayList<>(CollectionUtil.subtract(oldIds, ids)); + if (CollectionUtil.isNotEmpty(delIds)) { + attendanceAddressGroupItemMapper.deleteBatchIds(delIds); + } + } // 返回 - return attendanceAddressGroup.getId(); + return id; } @Override @@ -55,4 +101,9 @@ public class AttendanceAddressGroupServiceImpl implements AttendanceAddressGroup return attendanceAddressGroupMapper.selectPage(pageReqVO); } + @Override + public List getAllList() { + return attendanceAddressGroupMapper.selectList(); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index 7318338d..1952ebd9 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -31,6 +31,7 @@ import cn.iocoder.yudao.module.system.service.permission.PermissionService; import cn.iocoder.yudao.module.system.service.tenant.TenantService; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; import com.google.common.annotations.VisibleForTesting; import com.xingyuv.http.util.StringUtil; import lombok.extern.slf4j.Slf4j;