| | |
| | | package com.ruoyi.web.controller.api; |
| | | |
| | | |
| | | import cn.afterturn.easypoi.excel.ExcelExportUtil; |
| | | import cn.afterturn.easypoi.excel.entity.ExportParams; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.common.annotation.Log; |
| | |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.domain.entity.SysUser; |
| | | import com.ruoyi.common.enums.BusinessType; |
| | | import com.ruoyi.common.utils.WebUtils; |
| | | import com.ruoyi.framework.web.service.TokenService; |
| | | import com.ruoyi.system.dto.BranchAuditDTO; |
| | | import com.ruoyi.system.dto.TCrmBranchDTO; |
| | | import com.ruoyi.system.dto.UnbindDTO; |
| | | import com.ruoyi.system.dto.UnbindProcessingDTO; |
| | | import com.ruoyi.system.export.TCrmBranchAuditExport; |
| | | import com.ruoyi.system.export.TCrmBranchExport; |
| | | import com.ruoyi.system.export.TSysAppUserClinicExport; |
| | | import com.ruoyi.system.export.TSysAppUserExport; |
| | | import com.ruoyi.system.model.*; |
| | | import com.ruoyi.system.query.TCrmBranchAuditQuery; |
| | | import com.ruoyi.system.query.TCrmBranchQuery; |
| | | import com.ruoyi.system.query.TSysAppUserQuery; |
| | | import com.ruoyi.system.service.*; |
| | | import com.ruoyi.system.vo.TCrmBranchLiftVO; |
| | | import com.ruoyi.system.vo.TCrmBranchVO; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Propagation; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private final TCrmChangePointsService crmChangePointsService; |
| | | private final TCrmPositionService crmPositionService; |
| | | private final TCrmSalespersonService crmSalespersonService; |
| | | private final TCrmBranchLiftService crmBranchLiftService; |
| | | private final TRegionService regionService; |
| | | private final TokenService tokenService; |
| | | @Autowired |
| | | public TCrmBranchController(TCrmBranchService crmBranchService, TCrmBranchAreaService crmBranchAreaService, TCrmBranchSalaryService crmBranchSalaryService, ISysUserService sysUserService, TCrmChangePointsService crmChangePointsService, TCrmPositionService crmPositionService, TCrmSalespersonService crmSalespersonService, TokenService tokenService) { |
| | | public TCrmBranchController(TCrmBranchService crmBranchService, TCrmBranchAreaService crmBranchAreaService, TCrmBranchSalaryService crmBranchSalaryService, ISysUserService sysUserService, TCrmChangePointsService crmChangePointsService, TCrmPositionService crmPositionService, TCrmSalespersonService crmSalespersonService, TCrmBranchLiftService crmBranchLiftService, TRegionService regionService, TokenService tokenService) { |
| | | this.crmBranchService = crmBranchService; |
| | | this.crmBranchAreaService = crmBranchAreaService; |
| | | this.crmBranchSalaryService = crmBranchSalaryService; |
| | |
| | | this.crmChangePointsService = crmChangePointsService; |
| | | this.crmPositionService = crmPositionService; |
| | | this.crmSalespersonService = crmSalespersonService; |
| | | this.crmBranchLiftService = crmBranchLiftService; |
| | | this.regionService = regionService; |
| | | this.tokenService = tokenService; |
| | | } |
| | | |
| | |
| | | @ApiOperation(value = "获取crm分公司管理分页列表") |
| | | @PostMapping(value = "/pageList") |
| | | public R<PageInfo<TCrmBranchVO>> pageList(@RequestBody TCrmBranchQuery query) { |
| | | Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); |
| | | Long userId = tokenService.getLoginUser().getUserId(); |
| | | query.setRoleType(roleType); |
| | | query.setUserId(userId); |
| | | return R.ok(crmBranchService.pageList(query)); |
| | | } |
| | | |
| | | /** |
| | | * 获取crm分公司管理管理列表 |
| | | */ |
| | | @ApiOperation(value = "获取crm分公司审核分页列表") |
| | | @PostMapping(value = "/pageAuditList") |
| | | public R<PageInfo<TCrmBranchVO>> pageAuditList(@RequestBody TCrmBranchAuditQuery query) { |
| | | return R.ok(crmBranchService.pageAuditList(query)); |
| | | } |
| | | |
| | | /** |
| | | * 获取crm分公司管理管理列表 |
| | | */ |
| | | @ApiOperation(value = "获取crm分公司解除绑定分页列表") |
| | | @PostMapping(value = "/pageUnbindList") |
| | | public R<PageInfo<TCrmBranchLiftVO>> pageUnbindList(@RequestBody TCrmBranchAuditQuery query) { |
| | | return R.ok(crmBranchService.pageUnbindList(query)); |
| | | } |
| | | |
| | | /** |
| | | * 获取crm分公司管理管理列表 |
| | | */ |
| | | @ApiOperation(value = "获取crm分公司省公司,地区经理管理列表") |
| | | @GetMapping(value = "/listProvince") |
| | | public R<List<TCrmBranch>> listProvince(@RequestParam Integer personType) { |
| | | List<TCrmBranch> crmBranches = crmBranchService.list(Wrappers.lambdaQuery(TCrmBranch.class) |
| | | .eq(TCrmBranch::getPersonType, personType) |
| | | .eq(TCrmBranch::getStatus, 1) |
| | | .orderByDesc(TCrmBranch::getCreateTime)); |
| | | return R.ok(crmBranches); |
| | | } |
| | | |
| | | /** |
| | | * 获取crm分公司管理管理列表 |
| | | */ |
| | | @ApiOperation(value = "获取crm分公司地区经理,城市经理管理列表") |
| | | @GetMapping(value = "/listCity") |
| | | public R<List<TCrmBranch>> listCity() { |
| | | Long userId = tokenService.getLoginUser().getUserId(); |
| | | TCrmBranch crmBranch = crmBranchService.getOne(Wrappers.lambdaQuery(TCrmBranch.class) |
| | | .eq(TCrmBranch::getUserId, userId) |
| | | .eq(TCrmBranch::getPersonType, 1) |
| | | .eq(TCrmBranch::getStatus, 1) |
| | | .last("LIMIT 1")); |
| | | if(Objects.isNull(crmBranch)){ |
| | | return R.ok(new ArrayList<>()); |
| | | } |
| | | List<TCrmBranch> crmBranches = crmBranchService.list(Wrappers.lambdaQuery(TCrmBranch.class) |
| | | .eq(TCrmBranch::getProvinceBranchId, crmBranch.getId()) |
| | | .eq(TCrmBranch::getStatus, 1) |
| | | .orderByDesc(TCrmBranch::getCreateTime)); |
| | | return R.ok(crmBranches); |
| | | } |
| | | |
| | | /** |
| | |
| | | wrapper.eq(TCrmBranch::getId, crmSalesperson.getBranchId()); |
| | | } |
| | | } |
| | | wrapper.eq(TCrmBranch::getStatus,1).orderByDesc(TCrmBranch::getCreateTime); |
| | | wrapper.eq(TCrmBranch::getStatus,1) |
| | | .eq(TCrmBranch::getAuditStatus,2) |
| | | .orderByDesc(TCrmBranch::getCreateTime); |
| | | return R.ok(crmBranchService.list(wrapper)); |
| | | } |
| | | |
| | |
| | | @ApiOperation(value = "添加crm分公司管理") |
| | | @PostMapping(value = "/add") |
| | | public R<Boolean> add(@Validated @RequestBody TCrmBranchDTO dto) { |
| | | Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); |
| | | if (roleType == 2) { |
| | | dto.setAuditStatus(1); |
| | | } |
| | | if (roleType == 1) { |
| | | dto.setAuditStatus(2); |
| | | } |
| | | return crmBranchService.addBranch(dto); |
| | | } |
| | | |
| | |
| | | TCrmBranch crmBranch = crmBranchService.getById(id); |
| | | TCrmBranchVO crmBranchVO = new TCrmBranchVO(); |
| | | BeanUtils.copyProperties(crmBranch, crmBranchVO); |
| | | // 查询区域 |
| | | List<TCrmBranchArea> crmBranchAreas = crmBranchAreaService.list(Wrappers.lambdaQuery(TCrmBranchArea.class).eq(TCrmBranchArea::getBranchId, id)); |
| | | // 查询负责区域 |
| | | List<TCrmBranchArea> crmBranchAreas = crmBranchAreaService.list(Wrappers.lambdaQuery(TCrmBranchArea.class) |
| | | .eq(TCrmBranchArea::getAreaType, 1) |
| | | .eq(TCrmBranchArea::getBranchId, id)); |
| | | crmBranchVO.setCrmBranchAreas(crmBranchAreas); |
| | | // 查询管辖区域 |
| | | List<TCrmBranchArea> jurisdictionBranchAreas = crmBranchAreaService.list(Wrappers.lambdaQuery(TCrmBranchArea.class) |
| | | .eq(TCrmBranchArea::getAreaType, 2) |
| | | .eq(TCrmBranchArea::getBranchId, id)); |
| | | crmBranchVO.setJurisdictionBranchAreas(jurisdictionBranchAreas); |
| | | // 职位薪资 |
| | | List<TCrmPosition> crmPositions = crmPositionService.list(); |
| | | List<TCrmBranchSalary> crmBranchSalaries = crmBranchSalaryService.list(Wrappers.lambdaQuery(TCrmBranchSalary.class).eq(TCrmBranchSalary::getBranchId, id)); |
| | |
| | | } |
| | | crmBranchVO.setCrmBranchSalaries(crmBranchSalaries); |
| | | return R.ok(crmBranchVO); |
| | | } |
| | | |
| | | /** |
| | | * 查看crm分公司管理详情 |
| | | */ |
| | | @ApiOperation(value = "查看crm分公司解绑详情") |
| | | @GetMapping(value = "/getDetailUnbindById") |
| | | public R<TCrmBranchLiftVO> getDetailUnbindById(@RequestParam String id) { |
| | | |
| | | TCrmBranchLift crmBranchLift = crmBranchLiftService.getById(id); |
| | | |
| | | if(Objects.isNull(crmBranchLift)){ |
| | | return R.fail("未找到该解绑信息"); |
| | | } |
| | | |
| | | TCrmBranchLiftVO crmBranchLiftVO = new TCrmBranchLiftVO(); |
| | | BeanUtils.copyProperties(crmBranchLift, crmBranchLiftVO); |
| | | |
| | | TCrmBranch crmBranch = crmBranchService.getById(crmBranchLift.getBranchId()); |
| | | TCrmBranchVO crmBranchVO = new TCrmBranchVO(); |
| | | BeanUtils.copyProperties(crmBranch, crmBranchVO); |
| | | // 查询负责区域 |
| | | List<TCrmBranchArea> crmBranchAreas = crmBranchAreaService.list(Wrappers.lambdaQuery(TCrmBranchArea.class) |
| | | .eq(TCrmBranchArea::getAreaType, 1) |
| | | .eq(TCrmBranchArea::getBranchId, crmBranchLift.getBranchId())); |
| | | crmBranchVO.setCrmBranchAreas(crmBranchAreas); |
| | | // 查询管辖区域 |
| | | List<TCrmBranchArea> jurisdictionBranchAreas = crmBranchAreaService.list(Wrappers.lambdaQuery(TCrmBranchArea.class) |
| | | .eq(TCrmBranchArea::getAreaType, 2) |
| | | .eq(TCrmBranchArea::getBranchId, crmBranchLift.getBranchId())); |
| | | crmBranchVO.setJurisdictionBranchAreas(jurisdictionBranchAreas); |
| | | // 职位薪资 |
| | | List<TCrmPosition> crmPositions = crmPositionService.list(); |
| | | List<TCrmBranchSalary> crmBranchSalaries = crmBranchSalaryService.list(Wrappers.lambdaQuery(TCrmBranchSalary.class).eq(TCrmBranchSalary::getBranchId, id)); |
| | | for (TCrmBranchSalary crmBranchSalary : crmBranchSalaries) { |
| | | crmPositions.stream().filter(crmPosition -> Objects.equals(crmPosition.getId(), crmBranchSalary.getPositionId())).findFirst().ifPresent(crmPosition -> crmBranchSalary.setPositionName(crmPosition.getPositionName())); |
| | | } |
| | | crmBranchVO.setCrmBranchSalaries(crmBranchSalaries); |
| | | |
| | | crmBranchLiftVO.setCrmBranchVO(crmBranchVO); |
| | | |
| | | return R.ok(crmBranchLiftVO); |
| | | } |
| | | |
| | | /** |
| | |
| | | crmBranchService.updateById(crmBranch); |
| | | // 查询用户 |
| | | SysUser sysUser = sysUserService.selectUserById(crmBranch.getUserId()); |
| | | // 查询业务员 |
| | | List<TCrmSalesperson> crmSalespersons = crmSalespersonService.list(Wrappers.lambdaQuery(TCrmSalesperson.class) |
| | | .eq(TCrmSalesperson::getBranchId, id)); |
| | | switch (status){ |
| | | case 1: |
| | | // 解冻 |
| | | sysUser.setStatus("0"); |
| | | sysUserService.updateUser(sysUser); |
| | | if(!CollectionUtils.isEmpty(crmSalespersons)){ |
| | | List<Long> userIds = crmSalespersons.stream().map(TCrmSalesperson::getUserId).collect(Collectors.toList()); |
| | | sysUserService.updateUserStatusByUserIds(userIds, "0"); |
| | | } |
| | | break; |
| | | case 2: |
| | | // 冻结 |
| | | sysUser.setStatus("1"); |
| | | sysUserService.updateUser(sysUser); |
| | | // 查询业务员 |
| | | if(!CollectionUtils.isEmpty(crmSalespersons)){ |
| | | List<Long> userIds = crmSalespersons.stream().map(TCrmSalesperson::getUserId).collect(Collectors.toList()); |
| | | sysUserService.updateUserStatusByUserIds(userIds, "1"); |
| | | } |
| | | break; |
| | | } |
| | | return R.ok(); |
| | |
| | | } |
| | | crmBranchService.updateById(crmBranch); |
| | | changePoints.setUserType(1); |
| | | changePoints.setChangeReason(3); |
| | | crmChangePointsService.save(changePoints); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | @Log(title = "crm分公司管理信息-分公司管理信息导出", businessType = BusinessType.EXPORT) |
| | | @ApiOperation(value = "分公司管理信息导出") |
| | | @PostMapping("/exportList") |
| | | public void exportList(@RequestBody TCrmBranchQuery query){ |
| | | Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); |
| | | query.setRoleType(roleType); |
| | | List<TCrmBranchExport> crmBranchExports = crmBranchService.exportList(query); |
| | | Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TCrmBranchExport.class, crmBranchExports); |
| | | HttpServletResponse response = WebUtils.response(); |
| | | assert response != null; |
| | | response.setContentType("application/vnd.ms-excel"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | ServletOutputStream outputStream = null; |
| | | try { |
| | | String fileName = URLEncoder.encode("分公司管理信息.xls", "utf-8"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + fileName); |
| | | response.setContentType("application/vnd.ms-excel;charset=UTF-8"); |
| | | response.setHeader("Pragma", "no-cache"); |
| | | response.setHeader("Cache-Control", "no-cache"); |
| | | outputStream = response.getOutputStream(); |
| | | workbook.write(outputStream); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | outputStream.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Log(title = "crm分公司管理信息-分公司审核信息导出", businessType = BusinessType.EXPORT) |
| | | @ApiOperation(value = "分公司审核信息导出") |
| | | @PostMapping("/exportAuditList") |
| | | public void exportAuditList(@RequestBody TCrmBranchAuditQuery query){ |
| | | List<TCrmBranchAuditExport> crmBranchAuditExports = crmBranchService.exportAuditList(query); |
| | | Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TCrmBranchAuditExport.class, crmBranchAuditExports); |
| | | HttpServletResponse response = WebUtils.response(); |
| | | assert response != null; |
| | | response.setContentType("application/vnd.ms-excel"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | ServletOutputStream outputStream = null; |
| | | try { |
| | | String fileName = URLEncoder.encode("分公司审核信息.xls", "utf-8"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + fileName); |
| | | response.setContentType("application/vnd.ms-excel;charset=UTF-8"); |
| | | response.setHeader("Pragma", "no-cache"); |
| | | response.setHeader("Cache-Control", "no-cache"); |
| | | outputStream = response.getOutputStream(); |
| | | workbook.write(outputStream); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | outputStream.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 解除绑定 |
| | | */ |
| | | @Log(title = "crm分公司管理信息-解除绑定", businessType = BusinessType.UPDATE) |
| | | @ApiOperation(value = "crm分公司管理信息-解除绑定") |
| | | @PostMapping(value = "/unbind") |
| | | public R<String> unbind(@RequestBody UnbindDTO dto) { |
| | | Long userId = tokenService.getLoginUser().getUserId(); |
| | | TCrmBranch crmBranch = crmBranchService.getOne(Wrappers.lambdaQuery(TCrmBranch.class) |
| | | .eq(TCrmBranch::getUserId, userId) |
| | | .last("LIMIT 1")); |
| | | if(crmBranch.getPersonType() != 1){ |
| | | return R.fail("仅负责人可操作解除绑定"); |
| | | } |
| | | |
| | | TCrmBranchLift crmBranchLift = new TCrmBranchLift(); |
| | | crmBranchLift.setBranchId(dto.getBranchId()); |
| | | crmBranchLift.setChargePhone(dto.getChargePhone()); |
| | | crmBranchLift.setLiftReason(dto.getLiftReason()); |
| | | crmBranchLiftService.save(crmBranchLift); |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 分公司审核 |
| | | */ |
| | | @Log(title = "crm分公司管理信息-分公司审核", businessType = BusinessType.UPDATE) |
| | | @ApiOperation(value = "crm分公司管理信息-分公司审核") |
| | | @PostMapping(value = "/branchAudit") |
| | | public R<String> branchAudit(@RequestBody BranchAuditDTO dto) { |
| | | TCrmBranch crmBranch = crmBranchService.getById(dto.getId()); |
| | | crmBranch.setAuditStatus(dto.getAuditStatus()); |
| | | crmBranch.setAuditRemark(dto.getAuditRemark()); |
| | | crmBranch.setAuditTime(LocalDateTime.now()); |
| | | crmBranch.setMoneyCommission(dto.getMoneyCommission()); |
| | | crmBranch.setPointsCommission(dto.getPointsCommission()); |
| | | crmBranchService.updateById(crmBranch); |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 解绑处理 |
| | | */ |
| | | @Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED) |
| | | @Log(title = "crm分公司管理信息-解绑处理", businessType = BusinessType.UPDATE) |
| | | @ApiOperation(value = "crm分公司管理信息-解绑处理") |
| | | @PostMapping(value = "/unbindProcessing") |
| | | public R<String> unbindProcessing(@RequestBody UnbindProcessingDTO dto) { |
| | | // 查询解绑信息 |
| | | TCrmBranchLift crmBranchLift = crmBranchLiftService.getById(dto.getId()); |
| | | if (Objects.isNull(crmBranchLift)){ |
| | | return R.fail("未查询到该解绑信息"); |
| | | } |
| | | crmBranchLift.setStatus(dto.getStatus()); |
| | | crmBranchLift.setRemarks(dto.getRemarks()); |
| | | crmBranchLiftService.updateById(crmBranchLift); |
| | | TCrmBranch crmBranch = crmBranchService.getById(crmBranchLift.getBranchId()); |
| | | crmBranch.setPhone(crmBranchLift.getChargePhone()); |
| | | crmBranchService.updateById(crmBranch); |
| | | // 查询分公司绑定的人员 |
| | | SysUser sysUser = sysUserService.selectUserById(crmBranch.getUserId()); |
| | | sysUser.setPhonenumber(crmBranchLift.getChargePhone()); |
| | | sysUser.setUserName(crmBranchLift.getChargePhone()); |
| | | sysUserService.updateUser(sysUser); |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 通过分公司上级id查询负责区域 |
| | | */ |
| | | @ApiOperation(value = "crm分公司管理信息-通过分公司上级id查询负责区域",notes = "branchId:分公司id") |
| | | @GetMapping(value = "/getAreaByParentId") |
| | | public R<Set<TRegion>> getAreaByParentId(@RequestParam String branchId) { |
| | | |
| | | List<TCrmBranchArea> list = crmBranchAreaService.list(Wrappers.lambdaQuery(TCrmBranchArea.class) |
| | | .eq(TCrmBranchArea::getBranchId, branchId) |
| | | .eq(TCrmBranchArea::getAreaType, 1)); |
| | | |
| | | if(CollectionUtils.isEmpty(list)){ |
| | | return R.fail("未查询到负责区域"); |
| | | } |
| | | |
| | | List<TRegion> regionList = regionService.list(); |
| | | |
| | | // 匹配到省份 |
| | | Set<TRegion> regions = new HashSet<>(); |
| | | for (TCrmBranchArea tCrmBranchArea : list) { |
| | | List<TRegion> parent = regionList.stream().filter(a -> a.getCode().equals(tCrmBranchArea.getProvinceCode())).collect(Collectors.toList()); |
| | | regions.add(parent.get(0)); |
| | | } |
| | | |
| | | // 匹配市区和区县 |
| | | for (TRegion region : regions) { |
| | | List<String> cityCodes = list.stream().filter(a -> a.getProvinceCode().equals(region.getCode())) |
| | | .map(TCrmBranchArea::getCityCode) |
| | | .collect(Collectors.toList()); |
| | | |
| | | List<TRegion> tRegionList = regionList.stream().filter(a -> a.getParentId().equals(region.getId()) |
| | | && cityCodes.contains(a.getCode())).collect(Collectors.toList()); |
| | | |
| | | for (TRegion child : tRegionList) { |
| | | List<TRegion> children1 = regionList.stream().filter(a -> a.getParentId().equals(child.getId())).collect(Collectors.toList()); |
| | | child.setChildren(children1); |
| | | } |
| | | region.setChildren(tRegionList); |
| | | |
| | | } |
| | | |
| | | return R.ok(regions); |
| | | } |
| | | |
| | | } |
| | | |