From d611ae157097e36ab80106c24f4d5966c6ff8109 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期四, 05 三月 2026 15:33:15 +0800
Subject: [PATCH] 售后服务
---
src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java | 14 +++-
src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceNewDto.java | 2
src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java | 30 ++++++++-
src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java | 20 ++++--
src/main/java/com/ruoyi/aftersalesservice/service/AfterSalesServiceService.java | 8 ++
src/main/java/com/ruoyi/common/utils/OrderUtils.java | 34 +++++++++++
src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml | 21 ++++++
src/main/java/com/ruoyi/aftersalesservice/mapper/AfterSalesServiceMapper.java | 9 ++
8 files changed, 117 insertions(+), 21 deletions(-)
diff --git a/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java b/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
index 15dcfac..95e9999 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/controller/AfterSalesServiceController.java
@@ -49,8 +49,8 @@
@GetMapping("/listPage")
@ApiOperation("鍞悗鏈嶅姟-鍒嗛〉鏌ヨ")
@Log(title = "鍞悗鏈嶅姟-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
- public AjaxResult listPage(Page page, AfterSalesService afterSalesService) {
- IPage<AfterSalesService> listPage = afterSalesServiceService.listPage(page, afterSalesService);
+ public AjaxResult listPage(Page page, AfterSalesServiceNewDto afterSalesService) {
+ IPage<AfterSalesServiceNewDto> listPage = afterSalesServiceService.listPage(page, afterSalesService);
return AjaxResult.success(listPage);
}
@@ -59,8 +59,8 @@
@ApiOperation("鍞悗鏈嶅姟-鍙嶉鐧昏")
public void export(HttpServletResponse response) {
Page page = new Page(-1,-1);
- AfterSalesService afterSalesService = new AfterSalesService();
- IPage<AfterSalesService> listPage = afterSalesServiceService.listPage(page, afterSalesService);
+ AfterSalesServiceNewDto afterSalesService = new AfterSalesServiceNewDto();
+ IPage<AfterSalesServiceNewDto> listPage = afterSalesServiceService.listPage(page, afterSalesService);
List<AfterSalesServiceExeclDto> list = new ArrayList<>();
listPage.getRecords().forEach(item -> {
AfterSalesServiceExeclDto dto = new AfterSalesServiceExeclDto();
@@ -77,12 +77,12 @@
@ApiOperation("鍞悗鏈嶅姟-鍞悗澶勭悊")
public void exportTwo(HttpServletResponse response) {
Page page = new Page(-1,-1);
- AfterSalesService afterSalesService = new AfterSalesService();
- IPage<AfterSalesService> listPage = afterSalesServiceService.listPage(page, afterSalesService);
+ AfterSalesServiceNewDto afterSalesService = new AfterSalesServiceNewDto();
+ IPage<AfterSalesServiceNewDto> listPage = afterSalesServiceService.listPage(page, afterSalesService);
listPage.getRecords().forEach(item -> {
item.setStatusName(item.getStatus().toString());
});
- ExcelUtil<AfterSalesService> util = new ExcelUtil<AfterSalesService>(AfterSalesService.class);
+ ExcelUtil<AfterSalesServiceNewDto> util = new ExcelUtil<AfterSalesServiceNewDto>(AfterSalesServiceNewDto.class);
util.exportExcel(response, listPage.getRecords() , "鍞悗澶勭悊");
}
@@ -148,4 +148,10 @@
return AjaxResult.success(afterSalesServiceService.getAfterSalesServiceNewDtoById(id));
}
+ @ApiOperation("鍞悗鏈嶅姟-缁熻宸ュ崟鎯呭喌")
+ @GetMapping("count")
+ public AjaxResult count() {
+ return AjaxResult.success(afterSalesServiceService.countAfterSalesService());
+ }
+
}
diff --git a/src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceNewDto.java b/src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceNewDto.java
index 19320a2..9e35764 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceNewDto.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/dto/AfterSalesServiceNewDto.java
@@ -16,4 +16,6 @@
private List<Long> productModelIdList;
private SalesLedgerDto salesLedgerDto;
+
+ private String salesContractNo;
}
diff --git a/src/main/java/com/ruoyi/aftersalesservice/mapper/AfterSalesServiceMapper.java b/src/main/java/com/ruoyi/aftersalesservice/mapper/AfterSalesServiceMapper.java
index 1c09a0e..1f439fc 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/mapper/AfterSalesServiceMapper.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/mapper/AfterSalesServiceMapper.java
@@ -3,8 +3,13 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.aftersalesservice.dto.AfterSalesServiceNewDto;
+import com.ruoyi.aftersalesservice.dto.CountDto;
import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
import org.apache.ibatis.annotations.Param;
+
+import java.util.HashMap;
+import java.util.List;
/**
* @author :yys
@@ -18,5 +23,7 @@
* @param afterSalesService
* @return
*/
- IPage<AfterSalesService> listPage(Page page,@Param("req") AfterSalesService afterSalesService);
+ IPage<AfterSalesServiceNewDto> listPage(Page page, @Param("req") AfterSalesServiceNewDto afterSalesService);
+
+ List<CountDto> countAfterSalesService();
}
diff --git a/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java b/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
index 3d4bb51..e11722e 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/pojo/AfterSalesService.java
@@ -33,8 +33,12 @@
@ApiModelProperty("鐘舵�� 1-寰呭鐞� 2-宸插鐞�")
private Integer status;
+ @ApiModelProperty("鍞悗鍗曞彿")
+ private String afterSalesServiceNo;
+
@Excel(name = "鐘舵��", readConverterExp = "1=寰呭鐞�,2=宸插鐞�")
+ @TableField(exist = false)
private String statusName;
/**
@@ -138,20 +142,20 @@
private String deptName;
- @TableField("鍞悗绫诲瀷")
+ @ApiModelProperty("鍞悗绫诲瀷")
private String serviceType;
- @TableField("绱ф�ョ▼搴�")
+ @ApiModelProperty("绱ф�ョ▼搴�")
private String urgency;
- @TableField("閿�鍞彴璐D")
+ @ApiModelProperty("閿�鍞彴璐D")
private Long salesLedgerId;
- @TableField("鍒嗛厤浜篒D")
+ @ApiModelProperty("鍒嗛厤浜篒D")
private Long distributionUserId;
- @TableField("浜у搧鍨嬪彿IDs")
+ @ApiModelProperty("浜у搧鍨嬪彿IDs")
private String productModelIds;
diff --git a/src/main/java/com/ruoyi/aftersalesservice/service/AfterSalesServiceService.java b/src/main/java/com/ruoyi/aftersalesservice/service/AfterSalesServiceService.java
index 21b4e75..f67b757 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/service/AfterSalesServiceService.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/service/AfterSalesServiceService.java
@@ -4,7 +4,10 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.aftersalesservice.dto.AfterSalesServiceNewDto;
+import com.ruoyi.aftersalesservice.dto.CountDto;
import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
+
+import java.util.List;
/**
* @author :yys
@@ -19,9 +22,12 @@
* @param afterSalesService
* @return
*/
- IPage<AfterSalesService> listPage(Page page, AfterSalesService afterSalesService);
+ IPage<AfterSalesServiceNewDto> listPage(Page page, AfterSalesServiceNewDto afterSalesService);
boolean addAfterSalesServiceDto(AfterSalesServiceNewDto afterSalesServiceNewDto);
AfterSalesServiceNewDto getAfterSalesServiceNewDtoById(Long id);
+
+ List<CountDto> countAfterSalesService();
+
}
diff --git a/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
index 5f399ca..68dfa7f 100644
--- a/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
+++ b/src/main/java/com/ruoyi/aftersalesservice/service/impl/AfterSalesServiceServiceImpl.java
@@ -5,9 +5,11 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.aftersalesservice.dto.AfterSalesServiceNewDto;
+import com.ruoyi.aftersalesservice.dto.CountDto;
import com.ruoyi.aftersalesservice.mapper.AfterSalesServiceMapper;
import com.ruoyi.aftersalesservice.pojo.AfterSalesService;
import com.ruoyi.aftersalesservice.service.AfterSalesServiceService;
+import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.project.system.domain.SysDept;
@@ -19,8 +21,6 @@
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import com.ruoyi.sales.service.ISalesLedgerService;
-import com.ruoyi.sales.service.impl.SalesLedgerProductServiceImpl;
-import com.ruoyi.sales.service.impl.SalesLedgerServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -52,10 +52,10 @@
private ISalesLedgerService salesLedgerService;
@Override
- public IPage<AfterSalesService> listPage(Page page, AfterSalesService afterSalesService) {
+ public IPage<AfterSalesServiceNewDto> listPage(Page page, AfterSalesServiceNewDto afterSalesService) {
Long tenantId = SecurityUtils.getLoginUser().getTenantId();
SysDept sysDept = sysDeptMapper.selectDeptById(tenantId);
- IPage<AfterSalesService> afterSalesServiceIPage = afterSalesServiceMapper.listPage(page, afterSalesService);
+ IPage<AfterSalesServiceNewDto> afterSalesServiceIPage = afterSalesServiceMapper.listPage(page, afterSalesService);
afterSalesServiceIPage.getRecords().forEach(item -> {
item.setDeptName(sysDept.getDeptName());
});
@@ -74,6 +74,10 @@
SysUser sysUser = sysUserMapper.selectUserById(afterSalesServiceNewDto.getCheckUserId());
if(sysUser == null) throw new RuntimeException("瀹℃牳浜轰笉瀛樺湪");
afterSalesServiceNewDto.setCheckNickName(sysUser.getNickName());
+ if (StringUtils.isEmpty(afterSalesServiceNewDto.getAfterSalesServiceNo())) {
+ String string = OrderUtils.countAfterServiceTodayByCreateTime(afterSalesServiceMapper, "SH_");
+ afterSalesServiceNewDto.setAfterSalesServiceNo(string);
+ }
return this.save(afterSalesServiceNewDto);
}
@@ -82,7 +86,7 @@
AfterSalesService afterSalesService = afterSalesServiceMapper.selectById(id);
SalesLedger byId = salesLedgerService.getById(afterSalesService.getSalesLedgerId());
List<Long> collect = Arrays.stream(afterSalesService.getProductModelIds().split(",")).map(Long::valueOf).collect(Collectors.toList());
- List<SalesLedgerProduct> list = salesLedgerProductService.list(new QueryWrapper<SalesLedgerProduct>().lambda().in(SalesLedgerProduct::getProductModelId, collect));
+ List<SalesLedgerProduct> list = salesLedgerProductService.list(new QueryWrapper<SalesLedgerProduct>().lambda().in(SalesLedgerProduct::getId, collect));
AfterSalesServiceNewDto afterSalesServiceNewDto = new AfterSalesServiceNewDto();
BeanUtils.copyProperties(afterSalesService, afterSalesServiceNewDto);
SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
@@ -91,4 +95,20 @@
afterSalesServiceNewDto.setSalesLedgerDto(salesLedgerDto);
return afterSalesServiceNewDto;
}
+
+ @Override
+ public List<CountDto> countAfterSalesService() {
+ List<CountDto> stringIntegerHashMap = afterSalesServiceMapper.countAfterSalesService();
+ Integer total = 0;
+ for (CountDto countDto : stringIntegerHashMap) {
+ total += countDto.getCount();
+ }
+ CountDto countDto = new CountDto();
+ countDto.setStatus(3);
+ countDto.setCount(total);
+ stringIntegerHashMap.add(countDto);
+
+ return stringIntegerHashMap;
+
+ }
}
diff --git a/src/main/java/com/ruoyi/common/utils/OrderUtils.java b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
index 52df76b..2364bf9 100644
--- a/src/main/java/com/ruoyi/common/utils/OrderUtils.java
+++ b/src/main/java/com/ruoyi/common/utils/OrderUtils.java
@@ -54,4 +54,38 @@
// 鎷兼帴璁㈠崟缂栧彿 preFix + 鏃堕棿锛坹yyyMMdd锛� + 璁㈠崟鏁伴噺(001)
return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1)) + "-" + new Date().getTime();
}
+
+
+ /**
+ * 鏌ヨ褰撳ぉ锛堝熀浜巆reateTime瀛楁锛夌殑璁板綍鏁伴噺
+ * @param mapper 瀹炰綋绫诲搴旂殑BaseMapper
+ * @param <T> 瀹炰綋绫绘硾鍨�
+ * @return 褰撳ぉ璁板綍鏁伴噺
+ */
+ public static <T> String countAfterServiceTodayByCreateTime(BaseMapper<T> mapper,String preFix) {
+ // 鑾峰彇褰撳ぉ寮�濮嬫椂闂达紙00:00:00锛�
+ LocalDateTime todayStart = LocalDateTime.of(
+ LocalDateTime.now().toLocalDate(),
+ LocalTime.MIN
+ );
+ // 鑾峰彇褰撳ぉ缁撴潫鏃堕棿锛�23:59:59.999锛�
+ LocalDateTime todayEnd = LocalDateTime.of(
+ LocalDateTime.now().toLocalDate(),
+ LocalTime.MAX
+ );
+
+ // 杞崲涓篋ate绫诲瀷锛堝鏋滃疄浣撶被涓璫reateTime鏄疞ocalDateTime鍙洿鎺ヤ娇鐢級
+ Date startDate = Date.from(todayStart.atZone(ZoneId.systemDefault()).toInstant());
+ Date endDate = Date.from(todayEnd.atZone(ZoneId.systemDefault()).toInstant());
+
+ // 鏋勫缓鏌ヨ鏉′欢
+ QueryWrapper<T> queryWrapper = new QueryWrapper<>();
+ queryWrapper.ge("create_time", startDate) // 澶т簬绛変簬褰撳ぉ寮�濮�
+ .lt("create_time", endDate); // 灏忎簬褰撳ぉ缁撴潫锛堥伩鍏嶆绉掔簿搴﹂棶棰橈級
+
+ // 鎵ц鏌ヨ
+ Long aLong = mapper.selectCount(queryWrapper);
+ // 鎷兼帴璁㈠崟缂栧彿 preFix + 鏃堕棿锛坹yyyMMdd锛� + 璁㈠崟鏁伴噺(001)
+ return preFix + LocalDate.now().format(DateTimeFormatter.ISO_LOCAL_DATE).replaceAll("-", "") + String.format("%03d", (aLong + 1));
+ }
}
diff --git a/src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml b/src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml
index 41cd6ca..68e5909 100644
--- a/src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml
+++ b/src/main/resources/mapper/aftersalesservice/AfterSalesServiceMapper.xml
@@ -2,8 +2,11 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.aftersalesservice.mapper.AfterSalesServiceMapper">
- <select id="listPage" resultType="com.ruoyi.aftersalesservice.pojo.AfterSalesService">
- select * from after_sales_service
+ <select id="listPage" resultType="com.ruoyi.aftersalesservice.dto.AfterSalesServiceNewDto">
+ select ass.*,
+ sl.sales_contract_no
+ from after_sales_service ass
+ left join sales_ledger sl on ass.sales_ledger_id = sl.id
where 1 = 1
<if test="req.feedbackDate != null">
AND feedback_date BETWEEN #{req.feedbackDate} AND #{req.feedbackDate}
@@ -17,6 +20,20 @@
<if test="req.status != null and req.status != ''">
and status = #{req.status}
</if>
+ <if test="req.urgency != null">
+ and urgency = #{req.urgency}
+ </if>
+ <if test="req.serviceType != null">
+ and service_type = #{req.serviceType}
+ </if>
order by update_time desc
</select>
+ <select id="countAfterSalesService" resultType="com.ruoyi.aftersalesservice.dto.CountDto">
+ select
+ status,
+ count(1) as count
+ from after_sales_service
+ group by status
+ </select>
+
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3