package com.ruoyi.aftersalesservice.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.aftersalesservice.dto.AfterSalesServiceExeclDto; import com.ruoyi.aftersalesservice.dto.AfterSalesServiceNewDto; import com.ruoyi.aftersalesservice.pojo.AfterSalesService; import com.ruoyi.aftersalesservice.service.AfterSalesServiceService; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.service.ISalesLedgerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * @author :yys * @date : 2025/7/30 9:27 */ @RestController @Api(tags = "售后服务") @RequestMapping("/afterSalesService") public class AfterSalesServiceController extends BaseController { @Autowired private AfterSalesServiceService afterSalesServiceService; @Autowired private SysUserMapper sysUserMapper; @Autowired private ISalesLedgerService salesLedgerService; @GetMapping("/listPage") @ApiOperation("售后服务-分页查询") @Log(title = "售后服务-分页查询", businessType = BusinessType.OTHER) public AjaxResult listPage(Page page, AfterSalesServiceNewDto afterSalesService) { IPage listPage = afterSalesServiceService.listPage(page, afterSalesService); return AjaxResult.success(listPage); } @Log(title = "售后服务-反馈登记", businessType = BusinessType.EXPORT) @PostMapping("/export") @ApiOperation("售后服务-反馈登记") public void export(HttpServletResponse response) { Page page = new Page(-1,-1); AfterSalesServiceNewDto afterSalesService = new AfterSalesServiceNewDto(); IPage listPage = afterSalesServiceService.listPage(page, afterSalesService); List list = new ArrayList<>(); listPage.getRecords().forEach(item -> { AfterSalesServiceExeclDto dto = new AfterSalesServiceExeclDto(); BeanUtils.copyProperties(item, dto); dto.setStatusName(item.getStatus().toString()); list.add(dto); }); ExcelUtil util = new ExcelUtil(AfterSalesServiceExeclDto.class); util.exportExcel(response, list , "反馈登记"); } @Log(title = "售后服务-售后处理", businessType = BusinessType.EXPORT) @PostMapping("/exportTwo") @ApiOperation("售后服务-售后处理") public void exportTwo(HttpServletResponse response) { Page page = new Page(-1,-1); AfterSalesServiceNewDto afterSalesService = new AfterSalesServiceNewDto(); IPage listPage = afterSalesServiceService.listPage(page, afterSalesService); listPage.getRecords().forEach(item -> { item.setStatusName(item.getStatus().toString()); }); ExcelUtil util = new ExcelUtil(AfterSalesServiceNewDto.class); util.exportExcel(response, listPage.getRecords() , "售后处理"); } @PostMapping("/add") @ApiOperation("售后服务-新增") @Log(title = "售后服务-新增", businessType = BusinessType.INSERT) public AjaxResult add(@RequestBody AfterSalesServiceNewDto afterSalesServiceNewDto) { return afterSalesServiceService.addAfterSalesServiceDto(afterSalesServiceNewDto) ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/update") @ApiOperation("售后服务-修改") @Log(title = "售后服务-修改", businessType = BusinessType.UPDATE) public AjaxResult update(@RequestBody AfterSalesServiceNewDto afterSalesServiceNewDto) { if (afterSalesServiceNewDto.getProductModelIdList() != null && afterSalesServiceNewDto.getProductModelIdList().isEmpty() ) { String productModelIds = afterSalesServiceNewDto.getProductModelIdList().stream() .map(String::valueOf) .collect(Collectors.joining(",")); afterSalesServiceNewDto.setProductModelIds(productModelIds); } boolean update = afterSalesServiceService.updateById(afterSalesServiceNewDto); return update ? AjaxResult.success() : AjaxResult.error(); } @DeleteMapping("/delete") @ApiOperation("售后服务-删除") @Log(title = "售后服务-删除", businessType = BusinessType.DELETE) public AjaxResult delete(@RequestBody List ids) { if (CollectionUtils.isEmpty(ids)) { return AjaxResult.error("请传入要删除的ID"); } boolean delete = afterSalesServiceService.removeByIds(ids); return delete ? AjaxResult.success() : AjaxResult.error(); } @PostMapping("/dispose") @ApiOperation("售后服务-处理") @Log(title = "售后服务-处理", businessType = BusinessType.UPDATE) public AjaxResult dispose(@RequestBody AfterSalesService afterSalesService) { AfterSalesService byId = afterSalesServiceService.getById(afterSalesService.getId()); if(byId == null) throw new RuntimeException("未找到该数据"); if(byId.getStatus().equals(2)) throw new RuntimeException("该数据已处理"); SysUser sysUser = sysUserMapper.selectUserById(afterSalesService.getDisposeUserId()); if(sysUser == null) throw new RuntimeException("处理人不存在"); afterSalesService.setDisposeNickName(sysUser.getNickName()); afterSalesService.setStatus(2); boolean update = afterSalesServiceService.updateById(afterSalesService); return update ? AjaxResult.success() : AjaxResult.error(); } @GetMapping("listSalesLedger") @ApiOperation("售后服务-获取销售台账") public AjaxResult listSalesLedger(SalesLedgerDto salesLedgerDto, Page page) { IPage list = salesLedgerService.listSalesLedger(salesLedgerDto,page); return AjaxResult.success(list); } @GetMapping("getById") @ApiOperation("售后服务-根据id获取详情") public AjaxResult getById(Long id) { return AjaxResult.success(afterSalesServiceService.getAfterSalesServiceNewDtoById(id)); } @ApiOperation("售后服务-统计工单情况") @GetMapping("count") public AjaxResult count() { return AjaxResult.success(afterSalesServiceService.countAfterSalesService()); } }