Quellcode durchsuchen

售后订单统计

ct vor 3 Wochen
Ursprung
Commit
f16cf34fb4

+ 36 - 2
fs-admin/src/main/java/com/fs/company/controller/CompanyStatisticsController.java

@@ -32,6 +32,7 @@ import org.springframework.web.bind.annotation.RestController;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -182,10 +183,17 @@ public class CompanyStatisticsController extends BaseController
                 timeList.add(beginTime);
                 beginTime = TimeUtils.formatTime(beginTime);
             }
-            List<JSONObject> jsonObjectList = storeOrderService.selectFsPackageOrderCounts(timeEntity.toMap());
+            Map<String, Object> map = timeEntity.toMap();
+            if (StringUtils.isNotBlank(param.getStartTime())){
+                map.put("startTime",param.getStartTime());
+            }
+            if (StringUtils.isNotBlank(param.getEndTime())){
+                map.put("endTime",param.getEndTime());
+            }
+            List<JSONObject> jsonObjectList = storeAfterSalesService.selectFsStoreAfterSales(map);
             List<String> dates = jsonObjectList.stream().map(jsonObject -> jsonObject.getString("type")).collect(Collectors.toList());
             List<Integer> orderCount = jsonObjectList.stream().map(jsonObject -> jsonObject.getInteger("orderCount")).collect(Collectors.toList());
-            List<Integer> payPrice = jsonObjectList.stream().map(jsonObject -> jsonObject.getInteger("payPrice")).collect(Collectors.toList());
+            List<BigDecimal> payPrice = jsonObjectList.stream().map(jsonObject -> jsonObject.getBigDecimal("payPrice")).collect(Collectors.toList());
             return R.ok().put("list",list).put("dates",dates).put("orderCount",orderCount).put("payPrice",payPrice);
         }
         else {
@@ -291,6 +299,32 @@ public class CompanyStatisticsController extends BaseController
         return util.exportExcel(list, "orderLogs");
     }
 
+    @GetMapping("/exportAfterSalesOrder")
+    public AjaxResult exportAfterSalesOrder(FsStoreStatisticsParam param)
+    {
+        if(StringUtils.isNotEmpty(param.getUserIds())){
+            String[] userIds=param.getUserIds().split(",");
+            Long[] ids=new Long[userIds.length];
+            for(int i=0;i<ids.length; i++){
+                ids[i]=Long.parseLong(userIds[i]);
+            }
+            param.setUsers(ids);
+        }
+        else{
+            //获取所有员工
+            CompanyUser usermap=new CompanyUser();
+            usermap.setDeptId(param.getDeptId());
+            List<CompanyUser> users = userService.getUserListByDeptId(usermap);
+            List<Long> userIds = users.stream().map(element -> element.getUserId()).collect(Collectors.toList());
+            param.setUsers(userIds.toArray(new Long[userIds.size()]));
+        }
+
+        List<FsStoreOrderStatisticsVO> list= storeAfterSalesService.selectFsStoreAfterSalesServiceStatisticsList(param);
+
+        ExcelUtil<FsStoreOrderStatisticsVO> util = new ExcelUtil<FsStoreOrderStatisticsVO>(FsStoreOrderStatisticsVO.class);
+        return util.exportExcel(list, "orderLogs");
+    }
+
 
     @GetMapping("/exportInquiryOrder")
     public AjaxResult exportInquiryOrder(FsStoreStatisticsParam param)

+ 2 - 1
fs-service/src/main/java/com/fs/company/vo/FsStoreOrderStatisticsVO.java

@@ -4,6 +4,7 @@ import com.fs.common.annotation.Excel;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 @Data
 public class FsStoreOrderStatisticsVO implements Serializable
@@ -13,7 +14,7 @@ public class FsStoreOrderStatisticsVO implements Serializable
     @Excel(name = "订单数")
     Integer orderCount;
     @Excel(name = "订单金额")
-    Integer payPrice;
+    BigDecimal payPrice;
 
 
 

+ 11 - 4
fs-service/src/main/java/com/fs/his/mapper/FsStoreAfterSalesMapper.java

@@ -1,7 +1,9 @@
 package com.fs.his.mapper;
 
 import java.util.List;
+import java.util.Map;
 
+import com.alibaba.fastjson.JSONObject;
 import com.fs.company.param.FsStoreStatisticsParam;
 import com.fs.company.vo.FsStoreOrderStatisticsVO;
 import com.fs.his.domain.FsStoreAfterSales;
@@ -243,9 +245,12 @@ public interface FsStoreAfterSalesMapper
     Long selectFsStoreAfterSalesExcelListVOCount(@Param("maps") FsStoreAfterSalesParam fsStoreAfterSales);
 
     @Select({"<script> " +
-            "select u.nick_name, count(o.order_id) as order_count,sum(IFNULL(o.pay_price,0)) as pay_price  " +
-            "from  fs_store_after_sales o left join company_user u on o.company_user_id=u.user_id  " +
+            "select u.nick_name, count(o.order_id) as order_count,sum(IFNULL(o.refund_amount,0)) as pay_price  " +
+            "from  fs_store_after_sales o " +
+            "left join company_user u on o.company_user_id=u.user_id  " +
+            "left join fs_store_order so on so.order_id=o.order_id  " +
             "where o.status &gt; 1 " +
+            "and o.status = 4 and o.sales_status = 3" + //退款完成的订单
             "<if test = 'maps.type != null and maps.type ==1 '> " +
             "and TO_DAYS(o.create_time) = TO_DAYS(NOW()) " +
             "</if>" +
@@ -277,14 +282,16 @@ public interface FsStoreAfterSalesMapper
             "and  YEAR(o.create_time) = YEAR(DATE_SUB(NOW(),INTERVAL 1 YEAR))" +
             "</if>" +
             "<if test = 'maps.startTime != null and maps.startTime != \"\" '> " +
-            "AND date_format(o.create_time,'%y%m%d') &gt;= date_format(#{maps.startTime},'%y%m%d')"+
+            "AND date_format(so.create_time,'%y%m%d') &gt;= date_format(#{maps.startTime},'%y%m%d')"+
             "</if>" +
             "<if test = 'maps.endTime != null and maps.endTime != \"\" '> " +
-            "AND date_format(o.create_time,'%y%m%d') &lt;= date_format(#{maps.endTime},'%y%m%d')"+
+            "AND date_format(so.create_time,'%y%m%d') &lt;= date_format(#{maps.endTime},'%y%m%d')"+
             "</if>" +
             "and  o.`company_user_id` IN " +
             "<foreach  item='item' index='index' collection='maps.users' open='(' separator=',' close=')'> #{item}    </foreach>"+
             " group by o.company_user_id "+
             "</script>"})
     List<FsStoreOrderStatisticsVO> selectFsPackageOrderStatisticsList(@Param("maps")FsStoreStatisticsParam param);
+
+    List<JSONObject> selectFsStoreAfterSales(Map<String, Object> map);
 }

+ 4 - 0
fs-service/src/main/java/com/fs/his/service/IFsStoreAfterSalesService.java

@@ -1,7 +1,9 @@
 package com.fs.his.service;
 
 import java.util.List;
+import java.util.Map;
 
+import com.alibaba.fastjson.JSONObject;
 import com.fs.common.core.domain.R;
 import com.fs.company.param.FsStoreStatisticsParam;
 import com.fs.company.vo.FsStoreOrderStatisticsVO;
@@ -104,4 +106,6 @@ public interface IFsStoreAfterSalesService
     void exportData(FsStoreAfterSalesParam fsStoreAfterSales);
 
     List<FsStoreOrderStatisticsVO> selectFsStoreAfterSalesServiceStatisticsList(FsStoreStatisticsParam param);
+
+    List<JSONObject> selectFsStoreAfterSales(Map<String, Object> map);
 }

+ 6 - 0
fs-service/src/main/java/com/fs/his/service/impl/FsStoreAfterSalesServiceImpl.java

@@ -12,6 +12,7 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSONObject;
 import com.fs.common.core.domain.AjaxResult;
 import com.fs.common.core.domain.R;
 import com.fs.common.exception.CustomException;
@@ -958,4 +959,9 @@ public class FsStoreAfterSalesServiceImpl implements IFsStoreAfterSalesService {
     public List<FsStoreOrderStatisticsVO> selectFsStoreAfterSalesServiceStatisticsList(FsStoreStatisticsParam param) {
         return fsStoreAfterSalesMapper.selectFsPackageOrderStatisticsList(param);
     }
+
+    @Override
+    public List<JSONObject> selectFsStoreAfterSales(Map<String, Object> map) {
+        return fsStoreAfterSalesMapper.selectFsStoreAfterSales(map);
+    }
 }

+ 30 - 0
fs-service/src/main/resources/mapper/his/FsStoreAfterSalesMapper.xml

@@ -68,6 +68,36 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <include refid="selectFsStoreAfterSalesVo"/>
         where id = #{id}
     </select>
+    <select id="selectFsStoreAfterSales" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT  count(t.order_id ) AS orderCount,  t.type, sum(IFNULL(t.refund_amount,0)) as payPrice
+        FROM
+        (
+        SELECT DATE_FORMAT( o.create_time, #{sqlDateFormat} ) AS type,  o.order_id,o.refund_amount
+        FROM
+        fs_store_after_sales  AS o
+        left join fs_store_order so on o.order_id =so.order_id
+        WHERE
+         o.status = 4 and o.sales_status = 3 and
+        DATE_FORMAT(o.create_time,#{sqlDateFormat}) between #{beginTime} and #{finalTime}
+        <if test = 'startTime != null and startTime != "" '>
+        AND date_format(so.create_time,'%y%m%d') &gt;= date_format(#{startTime},'%y%m%d')
+        </if>
+        <if test = 'endTime != null and endTime != "" '>
+        AND date_format(so.create_time,'%y%m%d') &lt;= date_format(#{endTime},'%y%m%d')
+        </if>
+        <if test="userIds != null and userIds.length>0">
+            AND o.company_user_id IN
+            <foreach item="item" collection="userIds" open="(" separator="," close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test="companyId != null  ">
+            AND o.company_id = #{companyId}
+        </if>
+
+        ) t
+        GROUP BY t.type
+    </select>
 
     <insert id="insertFsStoreAfterSales" parameterType="FsStoreAfterSales" useGeneratedKeys="true" keyProperty="id">
         insert into fs_store_after_sales