|  |  |  | 
|---|
|  |  |  | package com.ruoyi.web.controller.api; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RestController; | 
|---|
|  |  |  | 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.basic.PageInfo; | 
|---|
|  |  |  | 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.StringUtils; | 
|---|
|  |  |  | import com.ruoyi.common.utils.WebUtils; | 
|---|
|  |  |  | import com.ruoyi.framework.web.service.TokenService; | 
|---|
|  |  |  | import com.ruoyi.system.dto.TCrmClinicAuditDTO; | 
|---|
|  |  |  | import com.ruoyi.system.dto.TCrmClinicDTO; | 
|---|
|  |  |  | import com.ruoyi.system.export.TCrmChangePointsBranchExport; | 
|---|
|  |  |  | import com.ruoyi.system.export.TCrmClinicAuditExport; | 
|---|
|  |  |  | import com.ruoyi.system.export.TCrmClinicListExport; | 
|---|
|  |  |  | import com.ruoyi.system.model.*; | 
|---|
|  |  |  | import com.ruoyi.system.query.TCrmChangePointsQuery; | 
|---|
|  |  |  | import com.ruoyi.system.query.TCrmClinicQuery; | 
|---|
|  |  |  | import com.ruoyi.system.service.*; | 
|---|
|  |  |  | import com.ruoyi.system.vo.TCrmClinicVO; | 
|---|
|  |  |  | import com.ruoyi.system.vo.TSysAppUserVO; | 
|---|
|  |  |  | import com.ruoyi.web.controller.tool.MsgUtils; | 
|---|
|  |  |  | 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.util.CollectionUtils; | 
|---|
|  |  |  | import org.springframework.validation.annotation.Validated; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.servlet.ServletOutputStream; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletResponse; | 
|---|
|  |  |  | import java.io.IOException; | 
|---|
|  |  |  | import java.net.URLEncoder; | 
|---|
|  |  |  | import java.time.LocalDateTime; | 
|---|
|  |  |  | import java.util.HashMap; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  | import java.util.Objects; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * <p> | 
|---|
|  |  |  | 
|---|
|  |  |  | * @author xiaochen | 
|---|
|  |  |  | * @since 2025-08-20 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Api(tags = "crm诊所管理") | 
|---|
|  |  |  | @RestController | 
|---|
|  |  |  | @RequestMapping("/t-crm-clinic") | 
|---|
|  |  |  | public class TCrmClinicController { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private final TCrmClinicService crmClinicService; | 
|---|
|  |  |  | private final TCrmSupplierService crmSupplierService; | 
|---|
|  |  |  | private final TCrmBranchService crmBranchService; | 
|---|
|  |  |  | private final TCrmWarehouseService crmWarehouseService; | 
|---|
|  |  |  | private final TCrmSalespersonService crmSalespersonService; | 
|---|
|  |  |  | private final ISysUserService sysUserService; | 
|---|
|  |  |  | private final TCrmDeviceService crmDeviceService; | 
|---|
|  |  |  | private final TokenService tokenService; | 
|---|
|  |  |  | private final MsgUtils msgUtils; | 
|---|
|  |  |  | private final TSysMessageTemplateService sysMessageTemplateService; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | public TCrmClinicController(TCrmClinicService crmClinicService, TCrmSupplierService crmSupplierService, TCrmBranchService crmBranchService, TCrmWarehouseService crmWarehouseService, TCrmSalespersonService crmSalespersonService, ISysUserService sysUserService, TCrmDeviceService crmDeviceService, TokenService tokenService, MsgUtils msgUtils, TSysMessageTemplateService sysMessageTemplateService) { | 
|---|
|  |  |  | this.crmClinicService = crmClinicService; | 
|---|
|  |  |  | this.crmSupplierService = crmSupplierService; | 
|---|
|  |  |  | this.crmBranchService = crmBranchService; | 
|---|
|  |  |  | this.crmWarehouseService = crmWarehouseService; | 
|---|
|  |  |  | this.crmSalespersonService = crmSalespersonService; | 
|---|
|  |  |  | this.sysUserService = sysUserService; | 
|---|
|  |  |  | this.crmDeviceService = crmDeviceService; | 
|---|
|  |  |  | this.tokenService = tokenService; | 
|---|
|  |  |  | this.msgUtils = msgUtils; | 
|---|
|  |  |  | this.sysMessageTemplateService = sysMessageTemplateService; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取crm诊所管理管理列表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "获取crm诊所管理分页列表") | 
|---|
|  |  |  | @PostMapping(value = "/pageList") | 
|---|
|  |  |  | public R<PageInfo<TCrmClinicVO>> pageList(@RequestBody TCrmClinicQuery query) { | 
|---|
|  |  |  | Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); | 
|---|
|  |  |  | Long userId = tokenService.getLoginUser().getUserId(); | 
|---|
|  |  |  | if(roleType == 2){ | 
|---|
|  |  |  | query.setUserId(userId); | 
|---|
|  |  |  | query.setRoleType(roleType); | 
|---|
|  |  |  | // 查询账号绑定的分公司 | 
|---|
|  |  |  | TCrmBranch crmBranch = crmBranchService.getOne(Wrappers.lambdaQuery(TCrmBranch.class) | 
|---|
|  |  |  | .eq(TCrmBranch::getUserId,userId) | 
|---|
|  |  |  | .last("LIMIT 1")); | 
|---|
|  |  |  | query.setBranchId(crmBranch.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(roleType == 3){ | 
|---|
|  |  |  | query.setUserId(userId); | 
|---|
|  |  |  | query.setRoleType(roleType); | 
|---|
|  |  |  | // 查询账号绑定的业务员 | 
|---|
|  |  |  | TCrmSalesperson crmSalesperson = crmSalespersonService.getOne(Wrappers.lambdaQuery(TCrmSalesperson.class) | 
|---|
|  |  |  | .eq(TCrmSalesperson::getUserId,userId) | 
|---|
|  |  |  | .last("LIMIT 1")); | 
|---|
|  |  |  | query.setSalespersonId(crmSalesperson.getId()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(crmClinicService.pageList(query)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取crm诊所管理管理列表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "获取crm诊所管理审核分页列表") | 
|---|
|  |  |  | @PostMapping(value = "/pageAuditList") | 
|---|
|  |  |  | public R<PageInfo<TCrmClinicVO>> pageAuditList(@RequestBody TCrmClinicQuery query) { | 
|---|
|  |  |  | return R.ok(crmClinicService.pageAuditList(query)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取crm诊所管理管理列表 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "获取crm诊所管理列表",notes = "type 1=设备使用 2=其他") | 
|---|
|  |  |  | @PostMapping(value = "/list") | 
|---|
|  |  |  | public R<List<TCrmClinic>> list(@RequestParam(value = "type") Integer type) { | 
|---|
|  |  |  | if(type == 1){ | 
|---|
|  |  |  | List<TCrmDevice> list = crmDeviceService.list(); | 
|---|
|  |  |  | LambdaQueryWrapper<TCrmClinic> wrapper = new LambdaQueryWrapper<>(); | 
|---|
|  |  |  | if(!CollectionUtils.isEmpty(list)){ | 
|---|
|  |  |  | List<String> clinicIds = list.stream().map(TCrmDevice::getClinicId).collect(Collectors.toList()); | 
|---|
|  |  |  | wrapper.notIn(TCrmClinic::getId,clinicIds); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | wrapper.eq(TCrmClinic::getStatus,3).orderByDesc(TCrmClinic::getCreateTime); | 
|---|
|  |  |  | return R.ok(crmClinicService.list(wrapper)); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | return R.ok(crmClinicService.list(Wrappers.lambdaQuery(TCrmClinic.class) | 
|---|
|  |  |  | .eq(TCrmClinic::getStatus,3) | 
|---|
|  |  |  | .orderByDesc(TCrmClinic::getCreateTime))); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 添加crm诊所管理管理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Log(title = "crm诊所管理信息-新增crm诊所管理", businessType = BusinessType.INSERT) | 
|---|
|  |  |  | @ApiOperation(value = "添加crm诊所管理") | 
|---|
|  |  |  | @PostMapping(value = "/add") | 
|---|
|  |  |  | public R<Boolean> add(@Validated @RequestBody TCrmClinicDTO dto) { | 
|---|
|  |  |  | Integer roleType = tokenService.getLoginUser().getUser().getRoleType(); | 
|---|
|  |  |  | if (roleType == 1){ | 
|---|
|  |  |  | dto.setStatus(3); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | dto.setStatus(1); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return crmClinicService.addClinic(dto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 修改crm诊所管理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Log(title = "crm诊所管理信息-修改crm诊所管理", businessType = BusinessType.UPDATE) | 
|---|
|  |  |  | @ApiOperation(value = "修改crm诊所管理") | 
|---|
|  |  |  | @PostMapping(value = "/update") | 
|---|
|  |  |  | public R<Boolean> update(@Validated @RequestBody TCrmClinicDTO dto) { | 
|---|
|  |  |  | return crmClinicService.updateClinic(dto); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 查看crm诊所管理详情 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "查看crm诊所管理详情") | 
|---|
|  |  |  | @GetMapping(value = "/getDetailById") | 
|---|
|  |  |  | public R<TCrmClinicVO> getDetailById(@RequestParam String id) { | 
|---|
|  |  |  | TCrmClinic crmSupplier = crmClinicService.getById(id); | 
|---|
|  |  |  | TCrmClinicVO crmSupplierVO = new TCrmClinicVO(); | 
|---|
|  |  |  | BeanUtils.copyProperties(crmSupplier, crmSupplierVO); | 
|---|
|  |  |  | // 获取关联的分公司名称 | 
|---|
|  |  |  | TCrmBranch crmBranch = crmBranchService.getById(crmSupplier.getBranchId()); | 
|---|
|  |  |  | if(Objects.nonNull(crmBranch)){ | 
|---|
|  |  |  | crmSupplierVO.setBranchName(crmBranch.getBranchName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 获取关联的业务员名称 | 
|---|
|  |  |  | TCrmSalesperson crmSalesperson = crmSalespersonService.getById(crmSupplier.getSalespersonId()); | 
|---|
|  |  |  | if(Objects.nonNull(crmSalesperson)){ | 
|---|
|  |  |  | crmSupplierVO.setSalespersonName(crmSalesperson.getSalespersonName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 获取关联仓库 | 
|---|
|  |  |  | TCrmWarehouse crmWarehouse = crmWarehouseService.getById(crmSupplier.getWarehouseId()); | 
|---|
|  |  |  | if(Objects.nonNull(crmWarehouse)){ | 
|---|
|  |  |  | crmSupplierVO.setWarehouseName(crmWarehouse.getWarehouseName()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(crmSupplierVO); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 删除crm诊所管理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Log(title = "crm诊所管理信息-删除crm诊所管理", businessType = BusinessType.DELETE) | 
|---|
|  |  |  | @ApiOperation(value = "删除crm诊所管理") | 
|---|
|  |  |  | @DeleteMapping(value = "/deleteById") | 
|---|
|  |  |  | public R<Boolean> deleteById(@RequestParam String id) { | 
|---|
|  |  |  | // 删除账号 | 
|---|
|  |  |  | TCrmClinic crmClinic = crmClinicService.getById(id); | 
|---|
|  |  |  | sysUserService.deleteUserById(crmClinic.getUserId()); | 
|---|
|  |  |  | return R.ok(crmClinicService.removeById(id)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 批量删除crm诊所管理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Log(title = "crm诊所管理信息-删除crm诊所管理", businessType = BusinessType.DELETE) | 
|---|
|  |  |  | @ApiOperation(value = "批量删除crm诊所管理") | 
|---|
|  |  |  | @DeleteMapping(value = "/deleteByIds") | 
|---|
|  |  |  | public R<Boolean> deleteByIds(@RequestBody List<String> ids) { | 
|---|
|  |  |  | // 删除账号 | 
|---|
|  |  |  | List<TCrmClinic> crmClinicList = crmClinicService.list(Wrappers.lambdaQuery(TCrmClinic.class).in(TCrmClinic::getId, ids)); | 
|---|
|  |  |  | List<Long> userIds = crmClinicList.stream().map(TCrmClinic::getUserId).collect(Collectors.toList()); | 
|---|
|  |  |  | sysUserService.deleteUserByIds(userIds); | 
|---|
|  |  |  | return R.ok(crmClinicService.removeByIds(ids)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 批量删除crm诊所管理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Log(title = "crm诊所管理信息-诊所管理解冻冻结", businessType = BusinessType.UPDATE) | 
|---|
|  |  |  | @ApiOperation(value = "诊所管理解冻冻结",notes = "状态 3=使用中 4=冻结") | 
|---|
|  |  |  | @PutMapping(value = "/thawOrFreeze") | 
|---|
|  |  |  | public R<Boolean> thawOrFreeze(@RequestParam(value = "id")String id, | 
|---|
|  |  |  | @RequestParam(value = "status")Integer status) { | 
|---|
|  |  |  | TCrmClinic crmClinic = crmClinicService.getById(id); | 
|---|
|  |  |  | crmClinic.setStatus(status); | 
|---|
|  |  |  | crmClinicService.updateById(crmClinic); | 
|---|
|  |  |  | // 查询用户 | 
|---|
|  |  |  | SysUser sysUser = sysUserService.selectUserById(crmClinic.getUserId()); | 
|---|
|  |  |  | switch (status){ | 
|---|
|  |  |  | case 3: | 
|---|
|  |  |  | // 解冻 | 
|---|
|  |  |  | sysUser.setStatus("0"); | 
|---|
|  |  |  | sysUserService.updateUser(sysUser); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | case 4: | 
|---|
|  |  |  | // 冻结 | 
|---|
|  |  |  | sysUser.setStatus("1"); | 
|---|
|  |  |  | sysUserService.updateUser(sysUser); | 
|---|
|  |  |  | break; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 批量删除crm诊所管理 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Log(title = "crm诊所管理信息-诊所管理审核", businessType = BusinessType.UPDATE) | 
|---|
|  |  |  | @ApiOperation(value = "诊所管理审核",notes = "状态 1=待审核 2=已拒绝 3=使用中 4=冻结") | 
|---|
|  |  |  | @PutMapping(value = "/auditClinic") | 
|---|
|  |  |  | public R<Boolean> auditClinic(@RequestBody TCrmClinicAuditDTO dto) { | 
|---|
|  |  |  | TCrmClinic crmClinic = crmClinicService.getById(dto.getId()); | 
|---|
|  |  |  | crmClinic.setStatus(dto.getStatus()); | 
|---|
|  |  |  | crmClinic.setAuditRemark(dto.getAuditRemark()); | 
|---|
|  |  |  | crmClinicService.updateById(crmClinic); | 
|---|
|  |  |  | // 查询用户 | 
|---|
|  |  |  | if(dto.getStatus() == 3){ | 
|---|
|  |  |  | SysUser sysUser = sysUserService.selectUserById(crmClinic.getUserId()); | 
|---|
|  |  |  | sysUser.setDelFlag("0"); | 
|---|
|  |  |  | sysUserService.updateUser(sysUser); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Log(title = "crm诊所管理信息-诊所管理导出", businessType = BusinessType.EXPORT) | 
|---|
|  |  |  | @ApiOperation(value = "诊所管理导出") | 
|---|
|  |  |  | @PostMapping("/exportList") | 
|---|
|  |  |  | public void exportList(@RequestBody TCrmClinicQuery query){ | 
|---|
|  |  |  | List<TCrmClinicListExport> crmClinicListExports = crmClinicService.exportList(query); | 
|---|
|  |  |  | for (TCrmClinicListExport crmClinicListExport : crmClinicListExports) { | 
|---|
|  |  |  | if(Objects.nonNull(crmClinicListExport.getLowProcurementMoney())){ | 
|---|
|  |  |  | crmClinicListExport.setLowProcurementMoneyStr("¥"+crmClinicListExport.getLowProcurementMoney()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(Objects.nonNull(crmClinicListExport.getMonthPurchaseAmount())){ | 
|---|
|  |  |  | crmClinicListExport.setMonthPurchaseAmountStr("¥"+crmClinicListExport.getMonthPurchaseAmount()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TCrmClinicListExport.class, crmClinicListExports); | 
|---|
|  |  |  | 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("/exportAudit") | 
|---|
|  |  |  | public void exportAudit(@RequestBody TCrmClinicQuery query){ | 
|---|
|  |  |  | List<TCrmClinicAuditExport> crmClinicAuditExports = crmClinicService.exportAudit(query); | 
|---|
|  |  |  | for (TCrmClinicAuditExport crmClinicAuditExport : crmClinicAuditExports) { | 
|---|
|  |  |  | if(Objects.nonNull(crmClinicAuditExport.getLowProcurementMoney())){ | 
|---|
|  |  |  | crmClinicAuditExport.setLowProcurementMoneyStr("¥"+crmClinicAuditExport.getLowProcurementMoney()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), TCrmClinicAuditExport.class, crmClinicAuditExports); | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 业绩短信提醒 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @ApiOperation(value = "crm诊所管理信息-业绩短信提醒", notes = "clinicId:诊所id") | 
|---|
|  |  |  | @GetMapping(value = "/medicationReminder") | 
|---|
|  |  |  | public R<String> medicationReminder(@RequestParam(value = "clinicId") String clinicId) { | 
|---|
|  |  |  | TCrmClinic crmClinic = crmClinicService.getById(clinicId); | 
|---|
|  |  |  | if(StringUtils.isNotBlank(crmClinic.getPhone())){ | 
|---|
|  |  |  | int performanceCount = crmClinic.getPerformanceCount() + 1; | 
|---|
|  |  |  | TCrmSalesperson crmSalesperson = crmSalespersonService.getById(crmClinic.getSalespersonId()); | 
|---|
|  |  |  | TSysMessageTemplate messageTemplate = sysMessageTemplateService.getOne(Wrappers.lambdaQuery(TSysMessageTemplate.class) | 
|---|
|  |  |  | .eq(TSysMessageTemplate::getTemplateType, 2)); | 
|---|
|  |  |  | // 发送短信 | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | Map<String,String> params = new HashMap<>(); | 
|---|
|  |  |  | params.put("name",crmSalesperson.getSalespersonName()); | 
|---|
|  |  |  | params.put("num", Integer.toString(performanceCount)); | 
|---|
|  |  |  | msgUtils.sendMsg(crmClinic.getPhone(),params, messageTemplate.getTemplateCode()); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | throw new RuntimeException(e); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return R.ok(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|