From 0c1fd28763abc309b5a45fd79eb424cbe342de6d Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Wed, 19 Feb 2025 17:26:54 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E5=94=AE=E5=90=8E=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E6=8C=89=E7=85=A7=E4=B8=87=E6=9D=90=E8=A6=81=E6=B1=82?= =?UTF-8?q?=EF=BC=8C=E5=94=AE=E5=90=8E=E7=AE=A1=E7=90=86=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E5=AE=A2=E8=AF=89=E9=80=9A=E7=9F=A5=E5=8D=95=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=8A=9F=E8=83=BD=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=83=A8=E5=88=86=E8=A1=8C=E5=92=8C=E5=85=A8=E9=83=A8=E8=A1=8C?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=EF=BC=8C=E5=AF=BC=E5=87=BA=E6=9B=B4=E5=A4=9A?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=20=E6=96=B0=E5=A2=9E=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=92=8C=E9=80=89=E6=8B=A9=E5=AF=BC=E5=87=BA?= =?UTF-8?q?=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3=20=E6=96=B0=E5=A2=9E=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=94=AE=E5=90=8E=E7=AE=A1=E7=90=86=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E5=AE=A2=E8=AF=89=E9=80=9A=E7=9F=A5=E5=8D=95=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E6=96=B9=E6=B3=95=20=E6=96=B0=E5=A2=9E=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=AE=A2=E8=AF=89=E9=80=9A=E7=9F=A5=E5=8D=95?= =?UTF-8?q?=E9=9B=86=E5=90=88=E6=96=B9=E6=B3=95=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=94=AE=E5=90=8E=E5=AE=A2=E8=AF=89=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=8D=95=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AftersalesComplaintNoticeController.java | 20 ++++- .../vo/AftersalesComplaintExportVO.java | 30 ++----- ...AftersalesComplaintNoticeDetailMapper.java | 6 ++ .../AftersalesComplaintNoticeMapper.java | 1 + ...ftersalesComplaintNoticeDetailService.java | 4 +- .../IAftersalesComplaintNoticeService.java | 4 + ...salesComplaintNoticeDetailServiceImpl.java | 86 ++++++++++--------- .../AftersalesComplaintNoticeServiceImpl.java | 8 ++ .../AftersalesComplaintNoticeDetailMapper.xml | 10 +++ 9 files changed, 98 insertions(+), 71 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesComplaintNoticeController.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesComplaintNoticeController.java index e184ffc6..89c0a9d9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesComplaintNoticeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesComplaintNoticeController.java @@ -4,8 +4,10 @@ import java.util.List; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; import com.ruoyi.aftersales.domain.AftersalesComplaintNoticeDetail; +import com.ruoyi.aftersales.domain.AftersalesOrder; import com.ruoyi.aftersales.domain.vo.AftersalesComplaintExportVO; import com.ruoyi.aftersales.domain.vo.AftersalesMaterialVO; +import com.ruoyi.aftersales.domain.vo.ExportAftersalesOrderVo; import com.ruoyi.aftersales.service.IAfterSalesShippingDeviceService; import com.ruoyi.aftersales.service.IAftersalesComplaintNoticeDetailService; import com.ruoyi.common.core.text.Convert; @@ -75,11 +77,21 @@ public class AftersalesComplaintNoticeController extends BaseController @Log(title = "售后客诉通知单", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(AftersalesComplaintNoticeDetail aftersalesComplaintNoticeDetail,String ids) + public AjaxResult export(AftersalesComplaintNotice complaintNotice,String ids) { - List complaintNoticeDetails = complaintNoticeDetailService.getAfterComplaintExportList(Convert.toStrArray(ids)); - ExcelUtil util = new ExcelUtil(AftersalesComplaintExportVO.class); - return util.exportExcel(complaintNoticeDetails, "售后客诉通知单数据"); + if (StringUtils.isEmpty(ids)){ + + List list = aftersalesComplaintNoticeService.selectAftersalesComplaintNoticeList(complaintNotice); + List complaintNoticeDetails = complaintNoticeDetailService.getAfterComplaintExportList(list); + ExcelUtil util = new ExcelUtil(AftersalesComplaintExportVO.class); + return util.exportExcel(complaintNoticeDetails, "售后客诉通知单数据"); + }else { + String[] complaintNoticeCodes = ids.split(","); + List list = aftersalesComplaintNoticeService.selectAftersalesComplaintNoticeListByCodes(complaintNoticeCodes); + List complaintNoticeDetails = complaintNoticeDetailService.getAfterComplaintExportList(list); + ExcelUtil util = new ExcelUtil(AftersalesComplaintExportVO.class); + return util.exportExcel(complaintNoticeDetails, "售后客诉通知单数据"); + } } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/AftersalesComplaintExportVO.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/AftersalesComplaintExportVO.java index 45c77412..e77a6fc8 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/AftersalesComplaintExportVO.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/AftersalesComplaintExportVO.java @@ -45,39 +45,19 @@ public class AftersalesComplaintExportVO extends BaseEntity { @Excel(name = "设备型号", sort = 9) private String materialModelCode; + /** 是否结案 */ + @Excel(name = "是否结案", sort = 10,dictType = "aftersales_closing_procedures") + private String closingProcedures; + /** 客诉问题 */ - @Excel(name = "客诉问题",sort = 10) + @Excel(name = "客诉问题",sort = 11) private String complaintProblem; - /** 不良报告问题 */ - @Excel(name = "不良图片",sort = 11) - private String adverseReportUrl; /** 紧急程度 */ @Excel(name = "紧急程度",sort = 12,dictType = "aftersales_emergency_degree") private String emergencyDegree; - /** 是否结案 */ - @Excel(name = "是否结案", sort = 13,dictType = "aftersales_closing_procedures") - private String closingProcedures; - - /** 备注 */ - @Excel(name = "备注", sort = 14) - private String remark; - - /** 录入人 */ - @Excel(name = "录入人", sort = 15) - private String createBy; - - /** 录入时间 */ - @Excel(name = "录入时间", sort = 16, dateFormat = "yyyy-MM-dd") - private Date createTime; - /** 更新人 */ - @Excel(name = "更新人", sort = 17) - private String updateBy; - /** 更新时间 */ - @Excel(name = "更新时间", sort = 18, dateFormat = "yyyy-MM-dd") - private Date updateTime; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeDetailMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeDetailMapper.java index 172d4483..842a6a76 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeDetailMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeDetailMapper.java @@ -106,4 +106,10 @@ public interface AftersalesComplaintNoticeDetailMapper * @param complainNoticeCode * */ List selectMaterialListByNoticeCode(String complainNoticeCode); + + /** + * + * */ + List selectAftersalesComplaintNoticeDetailListByCodeList(List collectNoticeCodes); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java index 44a10488..26495c20 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/mapper/AftersalesComplaintNoticeMapper.java @@ -94,4 +94,5 @@ public interface AftersalesComplaintNoticeMapper /* * 根据客诉订单号批量查找*/ public List selectComplaintNoticeByCodes(String[] codes); + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeDetailService.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeDetailService.java index 5ed217ab..53b012da 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeDetailService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeDetailService.java @@ -1,6 +1,8 @@ package com.ruoyi.aftersales.service; import java.util.List; + +import com.ruoyi.aftersales.domain.AftersalesComplaintNotice; import com.ruoyi.aftersales.domain.AftersalesComplaintNoticeDetail; import com.ruoyi.aftersales.domain.vo.AftersalesComplaintExportVO; import com.ruoyi.aftersales.domain.vo.AftersalesMaterialVO; @@ -35,7 +37,7 @@ public interface IAftersalesComplaintNoticeDetailService * @param complaintNoticeCodes 售后客诉通知单号 * @return 售后客诉通知单详情集合 */ - public List getAfterComplaintExportList(String[] complaintNoticeCodes) ; + public List getAfterComplaintExportList(List list) ; /** * 新增售后客诉通知单详情 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeService.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeService.java index 8aa7c7ed..b6cb1fd4 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesComplaintNoticeService.java @@ -90,4 +90,8 @@ public interface IAftersalesComplaintNoticeService * */ List selectMaterialInfoByMakeNo(String makeNo); + /** + * 根据客诉单号查找售后客诉通知单 + * */ + List selectAftersalesComplaintNoticeListByCodes(String[] complaintNoticeCodes); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java index 2664a115..d4ae74de 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeDetailServiceImpl.java @@ -2,10 +2,9 @@ package com.ruoyi.aftersales.service.impl; import java.text.DecimalFormat; import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; import com.ruoyi.aftersales.domain.AftersalesComplaintNotice; @@ -78,45 +77,50 @@ public class AftersalesComplaintNoticeDetailServiceImpl implements IAftersalesCo /** * 导出售后客诉通知单详情列表 */ - @Override - public List getAfterComplaintExportList(String[] complaintNoticeCodes) { - List complaintNoticeList = new ArrayList<>(); - if(StringUtils.isNotEmpty(complaintNoticeCodes)){ - complaintNoticeList = complaintNoticeMapper.selectComplaintNoticeByCodes(complaintNoticeCodes); - }else { - AftersalesComplaintNotice tempNotice = new AftersalesComplaintNotice(); - complaintNoticeList = complaintNoticeMapper.selectAftersalesComplaintNoticeList(tempNotice); - } - List exportVOList = new ArrayList<>(); - for (AftersalesComplaintNotice notice: complaintNoticeList) { - String noticeCode = notice.getComplaintNoticeCode(); - List noticeDetails = aftersalesComplaintNoticeDetailMapper.selectMaterialListByNoticeCode(noticeCode); - if(StringUtils.isNotEmpty(noticeDetails)){ - for (AftersalesComplaintNoticeDetail noticeDetail: noticeDetails) { - AftersalesComplaintExportVO exportVO = new AftersalesComplaintExportVO(); - exportVO.setComplaintNoticeCode(noticeCode); - exportVO.setSnCode(notice.getSnCode()); - exportVO.setSalesOrderCode(notice.getSalesOrderCode()); - exportVO.setClosingProcedures(notice.getClosingProcedures()); - exportVO.setCustomerName(notice.getCustomerName()); - exportVO.setMakeNo(notice.getMakeNo()); - exportVO.setRemark(notice.getRemark()); - exportVO.setMaterialNo(notice.getMaterialNo()); - exportVO.setMaterialName(notice.getMaterialName()); - exportVO.setMaterialBrand(notice.getMaterialBrand()); - exportVO.setMaterialModelCode(notice.getMaterialModelCode()); - exportVO.setCreateBy(notice.getCreateBy()); - exportVO.setCreateTime(notice.getCreateTime()); - exportVO.setUpdateBy(notice.getUpdateBy()); - exportVO.setUpdateTime(notice.getUpdateTime()); - exportVO.setComplaintProblem(noticeDetail.getComplaintProblem()); - exportVO.setAdverseReportUrl(noticeDetail.getAdverseReportUrl()); - exportVO.setEmergencyDegree(noticeDetail.getEmergencyDegree()); - exportVOList.add(exportVO); - } + @Override + public List getAfterComplaintExportList(List list) { + // 获取所有的客诉单号 + List collectNoticeCodes = list.stream() + .map(AftersalesComplaintNotice::getComplaintNoticeCode) + .collect(Collectors.toList()); + + // 根据客诉单号查询对应的客诉详情列表 + List noticeDetails = aftersalesComplaintNoticeDetailMapper.selectAftersalesComplaintNoticeDetailListByCodeList(collectNoticeCodes); + + // 创建一个 AftersalesComplaintNotice 的 Map,键为客诉单号 + Map aftersalesComplaintNoticeMap = list.stream() + .collect(Collectors.toMap(AftersalesComplaintNotice::getComplaintNoticeCode, Function.identity())); + + // 初始化导出列表 + List aftersalesComplaintExportVOS = new ArrayList<>(); + + for (AftersalesComplaintNoticeDetail detail : noticeDetails) { + AftersalesComplaintExportVO exportVo = new AftersalesComplaintExportVO(); + + // 从 AftersalesComplaintNoticeDetail 填充数据 + exportVo.setComplaintProblem(detail.getComplaintProblem()); + exportVo.setEmergencyDegree(detail.getEmergencyDegree()); + + // 从 AftersalesComplaintNotice 填充数据,通过客诉单号进行关联 + AftersalesComplaintNotice notice = aftersalesComplaintNoticeMap.get(detail.getComplaintNoticeCode()); + if (notice != null) { + exportVo.setSnCode(notice.getSnCode()); + exportVo.setComplaintNoticeCode(notice.getComplaintNoticeCode()); + exportVo.setSalesOrderCode(notice.getSalesOrderCode()); + exportVo.setCustomerName(notice.getCustomerName()); + exportVo.setMakeNo(notice.getMakeNo()); + exportVo.setMaterialNo(notice.getMaterialNo()); + exportVo.setMaterialName(notice.getMaterialName()); + exportVo.setMaterialBrand(notice.getMaterialBrand()); + exportVo.setMaterialModelCode(notice.getMaterialModelCode()); + exportVo.setClosingProcedures(notice.getClosingProcedures()); } + + // 添加到结果列表 + aftersalesComplaintExportVOS.add(exportVo); } - return exportVOList; + + return aftersalesComplaintExportVOS; } /** diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeServiceImpl.java index 56a77d2e..11740ae5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesComplaintNoticeServiceImpl.java @@ -95,6 +95,14 @@ public class AftersalesComplaintNoticeServiceImpl implements IAftersalesComplain return aftersalesComplaintNoticeMapper.selectAftersalesComplaintNoticeList(aftersalesComplaintNotice); } + /** + * 根据客诉单号查找售后客诉通知单 + * */ + @Override + public List selectAftersalesComplaintNoticeListByCodes(String[] complaintNoticeCodes) { + return aftersalesComplaintNoticeMapper.selectComplaintNoticeByCodes(complaintNoticeCodes); + } + /** * 新增售后客诉通知单 * diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeDetailMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeDetailMapper.xml index 31e4c6c4..6e48c534 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeDetailMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AftersalesComplaintNoticeDetailMapper.xml @@ -52,6 +52,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + insert into aftersales_complaint_notice_detail @@ -126,4 +135,5 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" SELECT max(complaint_notice_code) from aftersales_complaint_notice_detail where complaint_notice_code like concat(#{code},'%') + \ No newline at end of file