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