From f88e38dda262f8fb937ea4030e2bc8232d4126f2 Mon Sep 17 00:00:00 2001
From: wjli <591616088@qq.com>
Date: 星期一, 15 五月 2023 14:27:10 +0800
Subject: [PATCH] 1.司机和配送员统计信息合一 2.修改签收率统计信息接口 3.修改签收数据导出接口

---
 xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/SignCountController.java     |    4 
 xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java  |   48 +++++++++++
 xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/UserStatisticController.java |   59 ++++++++++++++
 xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/mapper/SignCountMapper.java             |    2 
 xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml                              |  100 +++++++++++++++++++++++++
 xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/service/ISignCountService.java          |    1 
 6 files changed, 211 insertions(+), 3 deletions(-)

diff --git a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/SignCountController.java b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/SignCountController.java
index a3de4c6..bce41af 100644
--- a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/SignCountController.java
+++ b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/SignCountController.java
@@ -83,8 +83,8 @@
 
     @GetMapping("/outExcels")
     @ApiOperation(value = "瀵煎嚭绛炬敹缁熻淇℃伅琛�", notes = "瀵煎嚭绛炬敹缁熻淇℃伅琛�")
-    public void export1(OrderStatusCount orderStatusCount, HttpServletResponse response,QueryRequest queryRequest) throws IOException {
-        List<OrderStatusCount> orderStatus = this.iSignCountService.signCounts(orderStatusCount,queryRequest).getRecords();
+    public void export1(OrderStatusCount orderStatusCount, HttpServletResponse response) throws IOException {
+        List<OrderStatusCount> orderStatus = this.iSignCountService.signCounts2New(orderStatusCount);
         response.setContentType("application/vnd.ms-excel");
         response.setCharacterEncoding("utf-8");
         String fileName = URLEncoder.encode("绛炬敹鏁伴噺缁熻鎶ヨ〃", "UTF-8");
diff --git a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/UserStatisticController.java b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/UserStatisticController.java
index c5a00b1..5330150 100644
--- a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/UserStatisticController.java
+++ b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/controller/UserStatisticController.java
@@ -4,11 +4,15 @@
 import cn.exrick.xboot.core.common.utils.ResultUtil;
 import cn.exrick.xboot.core.common.vo.PageVo;
 import cn.exrick.xboot.core.common.vo.Result;
+import cn.exrick.xboot.core.entity.User;
+import cn.exrick.xboot.your.entity.Car;
 import cn.exrick.xboot.your.entity.UserStatistic;
+import cn.exrick.xboot.your.service.ICarService;
 import cn.exrick.xboot.your.service.IUserStatisticService;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -31,6 +35,9 @@
     @Autowired
     private IUserStatisticService iUserStatisticService;
 
+    @Autowired
+    private ICarService iCarService;
+
     @RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
     @ApiOperation(value = "閫氳繃id鑾峰彇")
     public Result<UserStatistic> get(@PathVariable String id) {
@@ -51,6 +58,58 @@
         return new ResultUtil<UserStatistic>().setData(userStatistic);
     }
 
+    @RequestMapping(value = "/getAllByUserId", method = RequestMethod.GET)
+    @ApiOperation(value = "閫氳繃鐢ㄦ埛id鑾峰彇缁熻淇℃伅")
+    public Result<UserStatistic> getStatisticByUserId(String userId,int type) {
+        UserStatistic userStatistic0 = getById(userId);
+        String otherId = getOtherIdFromCar(userId,type);
+        UserStatistic userStatistic1 = getById(otherId);
+        if(type==0){//椹鹃┒鍛�
+            userStatistic0.setSends(userStatistic1.getSends());
+            userStatistic0.setService(userStatistic1.getService());
+            userStatistic0.setSends2(userStatistic1.getSends2());
+            userStatistic0.setAbnormalOpen(userStatistic1.getAbnormalOpen());
+            userStatistic0.setLikesRate(userStatistic1.getLikesRate());
+        }else{//閰嶉�佸憳
+            userStatistic0.setSafeDriving(userStatistic1.getSafeDriving());
+            userStatistic0.setOutCar(userStatistic1.getOutCar());
+            userStatistic0.setDriving(userStatistic1.getDriving());
+            userStatistic0.setFatigueDriving(userStatistic1.getFatigueDriving());
+            userStatistic0.setSmoking(userStatistic1.getSmoking());
+            userStatistic0.setNoBelt(userStatistic1.getNoBelt());
+            userStatistic0.setLikes(userStatistic1.getLikes());
+        }
+        return new ResultUtil<UserStatistic>().setData(userStatistic0);
+    }
+
+    public UserStatistic getById(String userId){
+        QueryWrapper<UserStatistic> wrapper = new QueryWrapper<>();
+        wrapper.eq("user_id",userId);
+        UserStatistic userStatistic = iUserStatisticService.getOne(wrapper);
+        if(userStatistic==null){
+            userStatistic = new UserStatistic();
+        }
+        return userStatistic;
+    }
+
+    public String getOtherIdFromCar(String userId,int type){
+        QueryWrapper<Car> wrapper = new QueryWrapper<>();
+        if(type==0){
+            wrapper.eq("user_id",userId);
+            Car myCar = iCarService.getOne(wrapper);
+            if(myCar!=null){
+                return myCar.getFollowUserId();
+            }
+        }else if(type==1){
+            wrapper.eq("follow_user_id",userId);
+            Car myCar = iCarService.getOne(wrapper);
+            if(myCar!=null){
+                return myCar.getUserId();
+            }
+        }
+        return null;
+    }
+
     @RequestMapping(value = "/getAll", method = RequestMethod.GET)
     @ApiOperation(value = "鑾峰彇鍏ㄩ儴鏁版嵁")
     public Result<List<UserStatistic>> getAll() {
diff --git a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/mapper/SignCountMapper.java b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/mapper/SignCountMapper.java
index 55faebe..dd4b2fc 100644
--- a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/mapper/SignCountMapper.java
+++ b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/mapper/SignCountMapper.java
@@ -22,6 +22,8 @@
 
     IPage<OrderStatusCount> signCount( @Param("bo")OrderStatusCount orderStatusCount,Page<OrderStatusCount> page);
 
+    List<OrderStatusCount> signCount2New( @Param("bo")OrderStatusCount orderStatusCount);
+
     IPage<OrderStatusCount> signCountNew( @Param("bo")OrderStatusCount orderStatusCount,Page<OrderStatusCount> page);
 
     List<OrderStatusCount> signCountNewTotal( @Param("bo")OrderStatusCount orderStatusCount);
diff --git a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/service/ISignCountService.java b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/service/ISignCountService.java
index 20aacab..f3461e4 100644
--- a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/service/ISignCountService.java
+++ b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/service/ISignCountService.java
@@ -15,5 +15,6 @@
 public interface ISignCountService extends IService<SignCount> {
 
     IPage<OrderStatusCount> signCounts(OrderStatusCount orderStatusCount, QueryRequest queryRequest);
+    List<OrderStatusCount> signCounts2New(OrderStatusCount orderStatusCount);
     IPage<OrderStatusCount> signCountsNew(OrderStatusCount orderStatusCount, QueryRequest queryRequest);
 }
\ No newline at end of file
diff --git a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java
index 53a02f4..74f3c25 100644
--- a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java
+++ b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java
@@ -99,6 +99,37 @@
     }
 
     @Override
+    public List<OrderStatusCount> signCounts2New(OrderStatusCount orderStatusCount) {
+        List<OrderStatusCount> records = this.signCountMapper.signCount2New(orderStatusCount);
+        List<OrderStatusCount> recordsAll = this.signCountMapper.signCountNewTotal(orderStatusCount);
+        for (int i=0;i<records.size();i++) {
+            for (OrderStatusCount statusCountx: recordsAll) {
+                if(records.get(i).getCarName().equals(statusCountx.getCarName())){
+                    records.get(i).setSendMonth(statusCountx.getProportion());
+                    break;
+                }
+            }
+            //"oneBatch":"01娈�","twoBatch":"0","threeBatch":"0","fourBatch":"0","fiveBatch":"0"
+            if("0".equals(records.get(i).getOneBatch())){
+                records.get(i).setOneBatch(null);
+            }
+            if("0".equals(records.get(i).getTwoBatch())){
+                records.get(i).setTwoBatch(null);
+            }
+            if("0".equals(records.get(i).getThreeBatch())){
+                records.get(i).setThreeBatch(null);
+            }
+            if("0".equals(records.get(i).getFourBatch())){
+                records.get(i).setFourBatch(null);
+            }
+            if("0".equals(records.get(i).getFiveBatch())){
+                records.get(i).setFiveBatch(null);
+            }
+        }
+        return records;
+    }
+
+    @Override
     public IPage<OrderStatusCount> signCountsNew(OrderStatusCount orderStatusCount, QueryRequest queryRequest) {
         Page<OrderStatusCount> page = new Page<>();
         if (org.apache.commons.lang3.StringUtils.isNotBlank(queryRequest.getPageSize() + "") && (queryRequest.getPageSize() != 0)) {
@@ -108,7 +139,6 @@
             page.setCurrent(0);
             page.setSize(-1);
         }
-
         IPage<OrderStatusCount> orderStatusCountIPage = this.signCountMapper.signCountNew(orderStatusCount, page);
         List<OrderStatusCount> recordsAll = this.signCountMapper.signCountNewTotal(orderStatusCount);
         List<OrderStatusCount> records = orderStatusCountIPage.getRecords();
@@ -120,6 +150,22 @@
                     break;
                 }
             }
+            //"oneBatch":"01娈�","twoBatch":"0","threeBatch":"0","fourBatch":"0","fiveBatch":"0"
+            if("0".equals(records.get(i).getOneBatch())){
+                records.get(i).setOneBatch(null);
+            }
+            if("0".equals(records.get(i).getTwoBatch())){
+                records.get(i).setTwoBatch(null);
+            }
+            if("0".equals(records.get(i).getThreeBatch())){
+                records.get(i).setThreeBatch(null);
+            }
+            if("0".equals(records.get(i).getFourBatch())){
+                records.get(i).setFourBatch(null);
+            }
+            if("0".equals(records.get(i).getFiveBatch())){
+                records.get(i).setFiveBatch(null);
+            }
         }
        // List<OrderStatusCount> recordsLast = new ArrayList<>();
         orderStatusCountIPage.setRecords(records);
diff --git a/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml b/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml
index e5cb986..7d4e14f 100644
--- a/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml
+++ b/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml
@@ -132,6 +132,63 @@
         line ASC,
         send_date asc
     </select>
+
+    <select id="signCount" resultType="cn.exrick.xboot.your.entity.OrderStatusCount">
+
+        SELECT
+        CONCAT_WS('',YEAR(send_date),'骞�',MONTH(send_date),'鏈�')sendMonth,
+        DATE(DATE_FORMAT(send_date,'%Y-%m-%d') ) sendDate,
+        car_name,
+        batch,
+        SUM( amount ) amount,
+        SUM( abnormal_sign ) as abnormalSign,
+        SUM( not_sign_count ) as  notSignCount,
+        SUM( sign_count ) as signCount ,
+        CONCAT_WS( '',( FORMAT((SUM( sign_count ) / SUM( amount )),4 ) *100), '%') as proportion,
+        (CASE `batch` WHEN '01娈�' THEN batch ELSE 0 END) as 'oneBatch',
+        (CASE `batch` WHEN '02娈�' THEN batch ELSE 0 END) as 'twoBatch',
+        (CASE `batch` WHEN '03娈�' THEN batch ELSE 0 END) as 'threeBatch',
+        (CASE `batch` WHEN '04娈�' THEN batch ELSE 0 END) as 'fourBatch',
+        (CASE `batch` WHEN '05娈�' THEN batch ELSE 0 END) as 'fiveBatch',
+        user_name as userName,
+        line
+        FROM
+        t_sign
+        <where>
+            1=1
+            <if test="bo.line != null and bo.line != ''" >
+                AND  line = #{bo.line}
+            </if>
+            <if test="bo.carName != null and bo.carName != ''" >
+                AND car_name like  CONCAT ('%',#{bo.carName},'%')
+            </if>
+            <if test="bo.batch != null and bo.batch != ''" >
+                AND  batch = #{bo.batch}
+            </if>
+            <if test="bo.userName != null and bo.userName != ''" >
+                AND  user_name = #{bo.userName}
+            </if>
+            <if test="bo.sendDate != null and bo.sendDate != ''">
+                AND  DATE_FORMAT(send_date,'%Y-%m-%d') = #{bo.sendDate}
+            </if>
+            <if test="bo.sendDateStart != null and bo.sendDateStart != ''">
+                AND send_date >= #{bo.sendDateStart}
+            </if>
+            <if test="bo.sendDateEnd != null and bo.sendDateEnd != ''">
+                AND send_date &lt;= #{bo.sendDateEnd}
+            </if>
+        </where>
+        GROUP BY
+        car_name,
+        send_date,
+        batch,
+        user_name,
+        line
+        ORDER BY
+        line ASC,
+        send_date asc
+    </select>
+
     <select id="signCountNew" resultType="cn.exrick.xboot.your.entity.OrderStatusCount">
         SELECT
         line,
@@ -175,6 +232,49 @@
         car_name,
         batch
     </select>
+    <select id="signCount2New" resultType="cn.exrick.xboot.your.entity.OrderStatusCount">
+        SELECT
+        line,
+        user_name as userName,
+        car_name,SUM(sign_count) as signCount,
+        SUM(amount) as amount,
+        CONCAT_WS( '',( FORMAT((SUM( sign_count ) / SUM( amount )),4 ) *100), '%') as proportion,
+        (CASE `batch` WHEN '01娈�' THEN batch ELSE 0 END) as 'oneBatch',
+        (CASE `batch` WHEN '02娈�' THEN batch ELSE 0 END) as 'twoBatch',
+        (CASE `batch` WHEN '03娈�' THEN batch ELSE 0 END) as 'threeBatch',
+        (CASE `batch` WHEN '04娈�' THEN batch ELSE 0 END) as 'fourBatch',
+        (CASE `batch` WHEN '05娈�' THEN batch ELSE 0 END) as 'fiveBatch'
+        FROM
+        t_sign
+        <where>
+            1=1
+            <if test="bo.line != null and bo.line != ''" >
+                AND  line = #{bo.line}
+            </if>
+            <if test="bo.carName != null and bo.carName != ''" >
+                AND car_name like  CONCAT ('%',#{bo.carName},'%')
+            </if>
+            <if test="bo.batch != null and bo.batch != ''" >
+                AND  batch = #{bo.batch}
+            </if>
+            <if test="bo.userName != null and bo.userName != ''" >
+                AND  user_name = #{bo.userName}
+            </if>
+            <if test="bo.sendDate != null and bo.sendDate != ''">
+                AND  DATE_FORMAT(send_date,'%Y-%m-%d') = #{bo.sendDate}
+            </if>
+            <if test="bo.sendDateStart != null and bo.sendDateStart != ''">
+                AND send_date >= #{bo.sendDateStart}
+            </if>
+            <if test="bo.sendDateEnd != null and bo.sendDateEnd != ''">
+                AND send_date &lt;= #{bo.sendDateEnd}
+            </if>
+        </where>
+        GROUP BY line,
+        user_name,
+        car_name,
+        batch
+    </select>
     <select id="signCountNewTotal" resultType="cn.exrick.xboot.your.entity.OrderStatusCount">
     SELECT
     car_name,

--
Gitblit v1.9.1