浏览代码

修改销售取数

zhuoning 2 年之前
父节点
当前提交
47cb046a65

+ 11 - 14
huimv-farm-produce/pom.xml

@@ -47,18 +47,16 @@
             <artifactId>jjwt</artifactId>
             <version>0.9.1</version>
         </dependency>
-
-<!--        <dependency>-->
-<!--            <groupId>org.springframework.boot</groupId>-->
-<!--            <artifactId>spring-boot-starter-test</artifactId>-->
-<!--            <scope>test</scope>-->
-<!--        </dependency>-->
-<!--        <dependency>-->
-<!--            <groupId>junit</groupId>-->
-<!--            <artifactId>junit</artifactId>-->
-<!--            <scope>test</scope>-->
-<!--        </dependency>-->
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
 <!--        &lt;!&ndash;CloseableHttpClient&ndash;&gt;-->
 <!--        <dependency>-->
 <!--            <groupId>org.apache.httpcomponents</groupId>-->
@@ -135,8 +133,7 @@
         <dependency>
             <groupId>com.huimv</groupId>
             <artifactId>huimv-common</artifactId>
-            <version>0.0.5-SNAPSHOT</version>
-            <!--            <version>0.0.2-SNAPSHOT</version>-->
+            <version>0.0.6-SNAPSHOT</version>
         </dependency>
 
     </dependencies>

+ 5 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/produce/mapper/ProdSalesMapper.java

@@ -9,6 +9,9 @@ import com.huimv.produce.produce.entity.dto.ProdSalesDto;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  *  Mapper 接口
@@ -23,4 +26,6 @@ public interface ProdSalesMapper extends BaseMapper<ProdSales> {
     ProdSalesDto countMonth(@Param(Constants.WRAPPER) QueryWrapper<ProdSales> wrapper);
 
     ClientHomeDto listClientHome(@Param("farmId") Integer farmId);
+
+    List<ProdSales> selectLastDay(Integer farmId, String startDate, String endDate);
 }

+ 184 - 2
huimv-farm-produce/src/main/java/com/huimv/produce/produce/service/impl/ProdSalesServiceImpl.java

@@ -13,6 +13,7 @@ import com.huimv.produce.produce.service.IProdSalesService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -29,8 +30,8 @@ public class ProdSalesServiceImpl extends ServiceImpl<ProdSalesMapper, ProdSales
     @Autowired
     private ProdSalesMapper salesMapper;
 
-    @Override
-    public Result listSales(Map map) {
+//    @Override
+    public Result listSales_yuxuexuan(Map map) {
         Integer farmId = (Integer)map.get("farmId");
         Integer type = (Integer)map.get("type");
         String startDate = (String)map.get("startDate");
@@ -126,6 +127,187 @@ public class ProdSalesServiceImpl extends ServiceImpl<ProdSalesMapper, ProdSales
     }
 
     @Override
+    public Result listSales(Map map) {
+        // 查询上月最后一天数据
+        Map lastOneMonthSalesMap = getLastXMonth(map,1);
+        System.out.println("1="+lastOneMonthSalesMap.toString());
+        String lastOneMonthSalesMoney = "0";
+        String lastOneMonthSum = "0";
+        if(lastOneMonthSalesMap.size() >0){
+            lastOneMonthSalesMoney = lastOneMonthSalesMap.get("monthMoney")+"";
+            lastOneMonthSum = lastOneMonthSalesMap.get("monthQuantity")+"";
+        }
+        System.out.println("lastOneMonthSalesMoney="+lastOneMonthSalesMoney);
+        System.out.println("lastOneMonthSum="+lastOneMonthSum);
+
+//        BigDecimal lastOneMonthMoney = new BigDecimal(lastOneMonthSalesMap.get("")+"");
+        // 查询上上月最后一天数据
+        Map lastTwoMonthSalesMap = getLastXMonth(map,2);
+        String lastTwoMonthSalesMoney = "0";
+        String lastTwoMonthSum = "0";
+        System.out.println("2="+lastTwoMonthSalesMap.toString());
+        if(lastTwoMonthSalesMap.size()>0){
+            lastTwoMonthSalesMoney = lastTwoMonthSalesMap.get("monthMoney")+"";
+            lastTwoMonthSum = lastTwoMonthSalesMap.get("monthQuantity")+"";
+        }
+        System.out.println("lastTwoMonthSalesMoney="+lastTwoMonthSalesMoney);
+        System.out.println("lastTwoMonthSum="+lastTwoMonthSum);
+
+        PercentUtil.getGrowth(Double.parseDouble(lastOneMonthSalesMoney),Double.parseDouble(lastTwoMonthSalesMoney));
+
+        Integer farmId = (Integer)map.get("farmId");
+        Integer type = (Integer)map.get("type");
+        String startDate = (String)map.get("startDate");
+        String endDate = (String)map.get("endDate");
+        QueryWrapper<ProdSales> wrapper = new QueryWrapper<>();
+        wrapper.eq("farm_id",farmId);
+            Map endMap = new HashMap();
+            endMap.put("quantity",lastOneMonthSum);
+            endMap.put("quantityPercent", PercentUtil.getGrowth(Double.parseDouble(lastOneMonthSum),Double.parseDouble(lastTwoMonthSum)));
+            endMap.put("money", NumberUtils.format(lastOneMonthSalesMoney+""));
+            endMap.put("moneyPercent", PercentUtil.getGrowth(Double.parseDouble(lastOneMonthSalesMoney),Double.parseDouble(lastTwoMonthSalesMoney)));
+        List<ProdSales> list = new ArrayList<>();
+        //本周
+        if (1==type){
+            wrapper.ge("add_date", DateUtil.beginOfWeek(new Date()));
+            wrapper.isNotNull("today_quantity");
+            list = this.list(wrapper);
+        }//自定义
+        else if (3==type) {
+            endDate = endDate+" 23:59:59";
+            startDate = startDate+" 00:00:00";
+            wrapper.between("add_date",startDate,endDate);
+            wrapper.isNotNull("today_quantity");
+            list = this.list(wrapper);
+        }
+        //本月
+        else {
+            wrapper.ge("add_date", DataUill.getTimesMonthmorning());
+            wrapper.isNotNull("today_quantity");
+            list = this.list(wrapper);
+        }
+        wrapper.clear();
+        wrapper.eq("farm_id",farmId);
+        wrapper.last("AND PERIOD_DIFF( DATE_FORMAT( NOW( ) , '%Y%m' ) , DATE_FORMAT( add_date, '%Y%m' ) ) =1  ");
+        ProdSalesDto lastProdSales = salesMapper.countMonth(wrapper);
+        wrapper.clear();
+        wrapper.eq("farm_id",farmId);
+        wrapper.last("AND PERIOD_DIFF( DATE_FORMAT( NOW( ) , '%Y%m' ) , DATE_FORMAT( add_date, '%Y%m' ) ) =2  ");
+        ProdSalesDto lastTwoProdSales = salesMapper.countMonth(wrapper);
+        List timeList = new ArrayList();
+        List moneyList = new ArrayList();
+        List quantityList = new ArrayList();
+        List moneyList1 = new ArrayList();
+        for (ProdSales prodSales : list) {
+            timeList.add(DateUtil.format(prodSales.getAddDate(),"MM-dd"));
+            moneyList.add(  prodSales.getTodayMoney());
+            quantityList.add(  prodSales.getTodayQuantity());
+            moneyList1.add( NumberUtils.format( prodSales.getTodayMoney()));
+        }
+        wrapper.clear();
+        wrapper.eq("farm_id",farmId);
+        wrapper.ge("add_date",DateUtil.beginOfMonth(new Date()));
+        ProdSalesDto prodSalesDto = salesMapper.countMonth(wrapper);
+        wrapper.clear();
+        wrapper.ge("add_date",DateUtil.beginOfMonth(new Date()));
+        wrapper.orderByDesc("add_date");
+        wrapper.eq("farm_id",farmId);
+        wrapper.last("limit 1");
+        ProdSales one = this.getOne(wrapper);
+        if (ObjectUtil.isNotEmpty(one)){
+            //本月
+            endMap.put("nowMoney", one.getMonthMoney());
+            endMap.put("nowQuantity", one.getMonthQuantity());
+
+            endMap.put("timeList",timeList);
+            endMap.put("moneyList",moneyList);
+            endMap.put("quantityList",quantityList);
+            endMap.put("moneyList1",moneyList1);
+        }else {
+            endMap.put("nowMoney", null);
+            endMap.put("nowQuantity", null);
+
+            endMap.put("timeList",null);
+            endMap.put("moneyList",null);
+            endMap.put("quantityList",null);
+            endMap.put("moneyList1",null);
+        }
+//        //上月
+//        wrapper.clear();
+//        wrapper.lt("add_date",DateUtil.beginOfMonth(new Date()));
+//        wrapper.orderByDesc("add_date");
+//        wrapper.eq("farm_id",farmId);
+//        wrapper.last("limit 1");
+//        ProdSales lastone = this.getOne(wrapper);
+//        if (ObjectUtil.isNotEmpty(lastone)){
+//            endMap.put("quantity",lastone.getMonthQuantity());
+//            endMap.put("quantityPercent", PercentUtil.getGrowth(lastProdSales.getQuantity(),lastTwoProdSales.getQuantity()));
+//            endMap.put("money", NumberUtils.format(lastone.getMonthMoney()+""));
+//            endMap.put("moneyPercent", PercentUtil.getGrowth(lastProdSales.getMoney(),lastTwoProdSales.getMoney()));
+//        }else {
+//            endMap.put("quantity",null);
+//            endMap.put("quantityPercent", null);
+//            endMap.put("money", null);
+//            endMap.put("moneyPercent", null);
+//        }
+        return new Result(ResultCode.SUCCESS,endMap);
+    }
+
+    private Map getLastXMonth(Map map, int n) {
+        com.huimv.produce.produce.utils.DateUtil du = new com.huimv.produce.produce.utils.DateUtil();
+        String startDate = du.getLastXMonthFirstDay(n);
+        String endDate = du.getLastXMonthLastDay(n);
+        System.out.println("startDate="+startDate);
+        System.out.println("lastOneMonthLastDay="+endDate);
+        Integer farmId = (Integer)map.get("farmId");
+//        Integer type = (Integer)map.get("type");
+        List<ProdSales> prodSalesList = salesMapper.selectLastDay(farmId,startDate,endDate);
+        System.out.println("prodSalesList.size="+prodSalesList.size());
+        for(ProdSales prodSales:prodSalesList){
+            System.out.println(""+prodSales.toString());
+        }
+        Map salesMap = new HashMap();
+        if(prodSalesList.size()>0){
+            ProdSales prodSales = prodSalesList.get(0);
+            salesMap.put("monthMoney",prodSales.getMonthMoney());
+            salesMap.put("monthQuantity",prodSales.getMonthQuantity());
+        }
+
+        // ================================================================
+
+//        Map endMap = new HashMap();
+//        List<ProdSales> list = new ArrayList<>();
+//        //本周
+//        if (1==type){
+//            wrapper.ge("add_date", DateUtil.beginOfWeek(new Date()));
+//            wrapper.isNotNull("today_quantity");
+//            list = this.list(wrapper);
+//        }//自定义
+//        else if (3==type) {
+//            endDate = endDate+" 23:59:59";
+//            startDate = startDate+" 00:00:00";
+//            wrapper.between("add_date",startDate,endDate);
+//            wrapper.isNotNull("today_quantity");
+//            list = this.list(wrapper);
+//        }
+//        //本月
+//        else {
+//            wrapper.ge("add_date", DataUill.getTimesMonthmorning());
+//            wrapper.isNotNull("today_quantity");
+//            list = this.list(wrapper);
+//        }
+//        wrapper.clear();
+//        wrapper.eq("farm_id",farmId);
+//        wrapper.last("AND PERIOD_DIFF( DATE_FORMAT( NOW( ) , '%Y%m' ) , DATE_FORMAT( add_date, '%Y%m' ) ) =1  ");
+//        ProdSalesDto lastProdSales = salesMapper.countMonth(wrapper);
+//        wrapper.clear();
+//        wrapper.eq("farm_id",farmId);
+//        wrapper.last("AND PERIOD_DIFF( DATE_FORMAT( NOW( ) , '%Y%m' ) , DATE_FORMAT( add_date, '%Y%m' ) ) =2  ");
+//        ProdSalesDto lastTwoProdSales = salesMapper.countMonth(wrapper);
+        return salesMap;
+    }
+
+    @Override
     public Result listClientHome(Integer farmId) {
         ClientHomeDto clientHomeDto = salesMapper.listClientHome(farmId);
         return new Result(ResultCode.SUCCESS,clientHomeDto);

+ 41 - 0
huimv-farm-produce/src/main/java/com/huimv/produce/produce/utils/DateUtil.java

@@ -29,6 +29,47 @@ public class DateUtil {
     public String getToday(){
         return new SimpleDateFormat("yyyy-MM-dd").format(new Date());
     }
+
+    public String getLastXMonthLastDay() {
+        SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar=Calendar.getInstance();
+        int month=calendar.get(Calendar.MONTH);
+        calendar.set(Calendar.MONTH, month-1);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+        System.out.println("上个月最后一天:"+sf.format(calendar.getTime()));
+        return null;
+    }
+
+    public String getLastXMonthFirstDay(){
+        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar=Calendar.getInstance();
+        calendar.add(Calendar.MONTH, -1);
+        calendar.set(Calendar.DAY_OF_MONTH, 1);
+        System.out.println("上个月第一天:"+format.format(calendar.getTime()));
+        return null;
+    }
+
+    public String getLastXMonthLastDay(Integer n) {
+        SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar=Calendar.getInstance();
+        int month=calendar.get(Calendar.MONTH);
+        calendar.set(Calendar.MONTH, month-n);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+//        System.out.println("上个月最后一天:"+sf.format(calendar.getTime()));
+        return sf.format(calendar.getTime());
+    }
+
+    public String getLastXMonthFirstDay(Integer n){
+        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar=Calendar.getInstance();
+//        calendar.add(Calendar.MONTH, -n);
+        int month=calendar.get(Calendar.MONTH);
+        calendar.set(Calendar.MONTH, month-n);
+        calendar.set(Calendar.DAY_OF_MONTH, 1);
+//        System.out.println("上个月第一天:"+format.format(calendar.getTime()));
+        return format.format(calendar.getTime());
+    }
+
     /**
      * 获取昨天
      * @return String

+ 21 - 4
huimv-farm-produce/src/main/resources/com/huimv/produce/produce/mapper/ProdSalesMapper.xml

@@ -1,18 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.huimv.produce.produce.mapper.ProdSalesMapper">
-
+    <resultMap id ="prodSalesMap" type="com.huimv.produce.produce.entity.ProdSales">
+        <id property ="id" column="id"/>
+        <result property ="farmId"  column ="farm_id"/>
+        <result property ="farmName"  column ="farm_name"/>
+        <result property ="todayQuantity"  column ="today_quantity"/>
+        <result property ="todayWeight"  column ="today_weight"/>
+        <result property ="todayMoney"  column ="today_money"/>
+        <result property ="weekQuantity"  column ="week_quantity"/>
+        <result property ="weekWeight"  column ="week_weight"/>
+        <result property ="weekMoney"  column ="week_money"/>
+        <result property ="monthQuantity"  column ="month_quantity"/>
+        <result property ="monthWeight"  column ="month_weight"/>
+        <result property ="monthMoney"  column ="month_money"/>
+        <result property ="addDate"  column ="add_date"/>
+    </resultMap>
 
     <select id="countMonth" resultType="com.huimv.produce.produce.entity.dto.ProdSalesDto">
         SELECT
         IFNULL(SUM(today_quantity),0) quantity,IFNULL(SUM(today_money),0) money
         FROM `prod_sales`
         ${ew.customSqlSegment}
-
     </select>
     <select id="listClientHome" resultType="com.huimv.produce.produce.entity.dto.ClientHomeDto">
-
-
         SELECT
         (SELECT COUNT(*)
         FROM `prod_warning_msg`
@@ -30,4 +41,10 @@
         FROM `prod_sales`
         WHERE farm_id =  #{farmId}  AND DATE_SUB(CURDATE(), INTERVAL 7 DAY) &lt;=DATE(add_date)) ,0) weekQuantity
     </select>
+
+
+    <!-- 返回单个对象的所有属性 -->
+    <select id="selectLastDay" resultMap="prodSalesMap">
+        select * from prod_sales where farm_id = #{farmId} AND add_date between #{startDate} AND #{endDate} order by add_date DESC LIMIT 1;
+    </select>
 </mapper>

+ 0 - 16
huimv-farm-produce/src/test/java/com.huimv.produce/service/Test.java

@@ -1,16 +0,0 @@
-package com.huimv.produce.service;
-
-import org.springframework.boot.test.context.SpringBootTest;
-
-/**
- * @Project : huimv.shiwan
- * @Package : com.huimv.biosafety.uface.controller
- * @Description : TODO
- * @Version : 1.0
- * @Author : ZhuoNing
- * @Create : 2020-12-25
- **/
-@SpringBootTest
-
-public class Test {
-}

+ 97 - 0
huimv-farm-produce/src/test/java/com.huimv.produce/service/Test1.java

@@ -0,0 +1,97 @@
+package com.huimv.produce.service;
+
+import com.huimv.common.utils.PercentUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+
+/**
+ * @Project : huimv.shiwan
+ * @Package : com.huimv.biosafety.uface.controller
+ * @Description : TODO
+ * @Version : 1.0
+ * @Author : ZhuoNing
+ * @Create : 2020-12-25
+ **/
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class Test1 {
+
+    @Test
+    public void test1() {
+        // 上月第一天
+        String firstDay = getLastXMonthFirstDay(3);
+        System.out.println("firstDay=" + firstDay);
+        // 上月最后一天
+        String lastDay = getLastXMonthLastDay(3);
+        System.out.println("lastDay=" + lastDay);
+    }
+
+    private String getLastXMonthLastDay() {
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = Calendar.getInstance();
+        int month = calendar.get(Calendar.MONTH);
+        calendar.set(Calendar.MONTH, month - 1);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+        System.out.println("上个月最后一天:" + sf.format(calendar.getTime()));
+        return null;
+    }
+
+    public String getLastXMonthFirstDay() {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = Calendar.getInstance();
+        calendar.add(Calendar.MONTH, -1);
+        calendar.set(Calendar.DAY_OF_MONTH, 1);
+        System.out.println("上个月第一天:" + format.format(calendar.getTime()));
+        return null;
+    }
+
+    private String getLastXMonthLastDay(Integer n) {
+        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = Calendar.getInstance();
+        int month = calendar.get(Calendar.MONTH);
+        calendar.set(Calendar.MONTH, month - n);
+        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
+//        System.out.println("上个月最后一天:"+sf.format(calendar.getTime()));
+        return sf.format(calendar.getTime());
+    }
+
+    public String getLastXMonthFirstDay(Integer n) {
+        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+        Calendar calendar = Calendar.getInstance();
+//        calendar.add(Calendar.MONTH, -n);
+        int month = calendar.get(Calendar.MONTH);
+        calendar.set(Calendar.MONTH, month - n);
+        calendar.set(Calendar.DAY_OF_MONTH, 1);
+//        System.out.println("上个月第一天:"+format.format(calendar.getTime()));
+        return format.format(calendar.getTime());
+    }
+
+    @Test
+    public void test2() {
+        String v1 = "8000";
+        String v2 = "9000";
+        BigDecimal v1Bd = new BigDecimal(v1);
+        BigDecimal v2Bd = new BigDecimal(v2);
+        System.out.println("v1Bd="+v1Bd.toString());
+        System.out.println("v2Bd="+v2Bd.toString());
+
+        BigDecimal bd1 = v1Bd.subtract(v2Bd).abs();
+        System.out.println("bd1="+bd1.toString());
+//        System.out.println("bd2="+bd1.abs().toString());
+        System.out.println("v2Bd="+v2Bd.toString());
+
+        BigDecimal bd2 = bd1.divide(v2Bd,4,BigDecimal.ROUND_HALF_UP);
+        System.out.println("bd2="+bd2.toString());
+
+        String t2 = PercentUtil.getGrowth(Double.parseDouble(v1),Double.parseDouble(v2));
+        System.out.println("t2="+t2);
+    }
+}