diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCompanyDataCleanController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCompanyDataCleanController.java new file mode 100644 index 0000000..bca1232 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysCompanyDataCleanController.java @@ -0,0 +1,195 @@ +package com.ruoyi.web.controller.system; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.R; +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.service.DictService; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.pay.domain.PayAttendance; +import com.ruoyi.pay.domain.PayButie; +import com.ruoyi.pay.domain.PayEmployeeInfo; +import com.ruoyi.pay.domain.bo.*; +import com.ruoyi.pay.domain.vo.*; +import com.ruoyi.pay.mapper.*; +import com.ruoyi.pay.service.IPayEmployeeInfoService; +import com.ruoyi.pay.service.impl.*; +import com.ruoyi.system.service.ISysDeptService; +import com.ruoyi.system.service.impl.SysRoleServiceImpl; +import com.ruoyi.system.service.impl.SysUserServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import javax.validation.constraints.NotEmpty; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 租户数据清理——彻底清理 + */ + +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/system/clean") +public class SysCompanyDataCleanController extends BaseController { + private final PaySalaryReportMapper salaryReportMapper; + private final PaySalaryReportServiceImpl salaryReportService; + private final PayEmployeeInfoServiceImpl payEmployeeInfoService; + private final PayButieEmplyeeServiceImpl payButieEmplyeeService; + private final PayButieServiceImpl butieService; + private final PayRequireAttendanceReportServiceImpl payRequireAttendanceReportService; + private final PayDayWorkHoursServiceImpl payDayWorkHoursService; + private final PayWorkOrderBaohuoServiceImpl payWorkOrderBaohuoService; + private final PayProductsServiceImpl payProductsService; + private final PayMaterialServiceImpl payMaterialService; + private final PayTenantServiceImpl payTenantService; + private final SysUserServiceImpl userService; + private final SysRoleServiceImpl roleService; + private final PayAttendanceServiceImpl payAttendanceService; + private final ISysDeptService deptService; + private final PaySubInfoServiceImpl subInfoService; + /** + * 数据清理 + * @param ids + * @return + * @throws Exception + */ + @SaCheckPermission("pay:company:clean") + @Log(title = "公司数据清理", businessType = BusinessType.DELETE) + @Transactional + @DeleteMapping("/tenant/{ids}") + public R delete(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) throws Exception { + for(Long id:ids){ + //删除公司下面的数据信息 + //工资总表 + PaySalaryReportBo salaryReportBo = new PaySalaryReportBo(); + salaryReportBo.setTenantId(id); + List asWorkOrderVos = salaryReportService.queryList(salaryReportBo); + List salaryids = asWorkOrderVos.stream().map(PaySalaryReportVo::getId).collect(Collectors.toList()); + if(salaryids!=null&&salaryids.size()>0){ + salaryReportService.deleteWithValidByIds(salaryids,true); + } + //日工工时 + PayDayWorkHoursBo riBo = new PayDayWorkHoursBo(); + riBo.setTenantId(id); + List riVos = payDayWorkHoursService.queryList(riBo); + List riids = riVos.stream().map(PayDayWorkHoursVo::getId).collect(Collectors.toList()); + if(riids!=null&&riids.size()>0) { + payDayWorkHoursService.deleteWithValidByIds(riids, true); + } + //包活工单 + PayWorkOrderBaohuoBo wBo = new PayWorkOrderBaohuoBo(); + wBo.setTenantId(id); + List rlVos = payWorkOrderBaohuoService.queryList(wBo); + List wids = rlVos.stream().map(PayWorkOrderBaohuoVo::getId).collect(Collectors.toList()); + if(wids!=null&&wids.size()>0) { + payWorkOrderBaohuoService.deleteWithValidByIds(wids,true); + } + //产品 + PayProductsBo pBo = new PayProductsBo(); + pBo.setTenantId(id); + List xjVos = payProductsService.queryList(pBo); + List xjids = xjVos.stream().map(PayProductsVo::getId).collect(Collectors.toList()); + if(xjids!=null&&xjids.size()>0) { + payProductsService.deleteWithValidByIds(xjids, true); + } + //毛料 + PayMaterialBo materialBo = new PayMaterialBo(); + materialBo.setTenantId(id); + List asEventVos = payMaterialService.queryList(materialBo); + List eids = asEventVos.stream().map( PayMaterialVo::getId).collect(Collectors.toList()); + if(eids!=null&&eids.size()>0) { + payMaterialService.deleteWithValidByIds(eids, true); + } + //员工扣补 + PayButieEmplyeeBo ebBo = new PayButieEmplyeeBo(); + ebBo.setTenantId(id); + List ebVos = payButieEmplyeeService.queryList(ebBo); + List ebids = ebVos.stream().map(PayButieEmplyeeVo::getId).collect(Collectors.toList()); + if(ebids!=null&&ebids.size()>0) { + payButieEmplyeeService.deleteWithValidByIds(ebids, true); + } + //补贴 + PayButieBo btBo = new PayButieBo(); + btBo.setTenantId(id); + List sxtVos = butieService.queryList(btBo); + List sxtids = sxtVos.stream().map(PayButieVo::getId).collect(Collectors.toList()); + if(sxtids!=null&&sxtids.size()>0) { + butieService.deleteWithValidByIds(sxtids, true); + } + //应出勤 + PayRequireAttendanceReportBo acBo = new PayRequireAttendanceReportBo(); + acBo.setTenantId(id); + List acVos = payRequireAttendanceReportService.queryList(acBo); + List acids = acVos.stream().map(PayRequireAttendanceReportVo::getId).collect(Collectors.toList()); + if(acids!=null&&acids.size()>0) { + payRequireAttendanceReportService.deleteWithValidByIds(acids, true); + } + //考勤 + PayAttendanceBo aBo = new PayAttendanceBo(); + aBo.setTenantId(id); + List aVos = payAttendanceService.queryList(aBo); + List aids = aVos.stream().map(PayAttendanceVo::getId).collect(Collectors.toList()); + if(aids!=null&&aids.size()>0) { + payAttendanceService.deleteWithValidByIds(aids, true); + } + //员工 + PayEmployeeInfoBo empBo = new PayEmployeeInfoBo(); + empBo.setTenantId(id); + List empVos = payEmployeeInfoService.queryList(empBo); + List empids = empVos.stream().map(PayEmployeeInfoVo::getId).collect(Collectors.toList()); + if(empids!=null&&empids.size()>0) { + payEmployeeInfoService.deleteWithValidByIds(empids, true); + } + //部门 + SysDept bmBo = new SysDept(); + bmBo.setTenantId(id); + List pjVos = deptService.selectDeptList(bmBo); + List bmids = pjVos.stream().map(SysDept::getDeptId).collect(Collectors.toList()); + if(bmids!=null&&bmids.size()>0) { + for(Long bmid:bmids){ + deptService.deleteDeptById(bmid); + } + } + //------------------------------------------------------------------------------------------------------ + //删除公司订阅信息 + PaySubInfoBo subInfo=new PaySubInfoBo(); + subInfo.setTenantId(id); + List infoVos = subInfoService.queryList(subInfo); + List sids = infoVos.stream().map(PaySubInfoVo::getId).collect(Collectors.toList()); + if(sids!=null&&sids.size()>0){ + subInfoService.deleteWithValidByIds(sids,true); + } + //删除公司下所有用户 + SysUser user = new SysUser(); + user.setTenantId(id); + List users = userService.selectUserList(user); + if(users!=null&&users.size()>0){ + List uids = users.stream().map(SysUser::getUserId).collect(Collectors.toList()); + userService.deleteUserByIds(uids.toArray(uids.toArray(new Long[uids.size()]))); + } + + //删除公司下的所有角色 + SysRole role = new SysRole(); + role.setTenantId(id); + List roles = roleService.selectRoleList(role); + if(roles!=null&&roles.size()>0){ + List rids = roles.stream().map(SysRole::getRoleId).collect(Collectors.toList()); + roleService.deleteRoleByIds(rids.toArray(rids.toArray(new Long[rids.size()]))); + } + } + return toAjax(payTenantService.deleteWithValidByIds(Arrays.asList(ids), true)); + } +}