Helius
2021-01-15 52d41ba1f8365731cd1d3baffa9d65b4d909d643
modify
4 files modified
254 ■■■■■ changed files
zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java 59 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/vo/BusinessesDataShowVo.java 154 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/SysBusinessDataDao.java 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml 39 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiStatisticsAction.java
@@ -3,6 +3,7 @@
import com.matrix.core.constance.MatrixConstance;
import com.matrix.core.pojo.AjaxResult;
import com.matrix.core.pojo.PaginationVO;
import com.matrix.core.tools.DateUtil;
import com.matrix.core.tools.WebUtil;
import com.matrix.system.app.dto.BusinessesDto;
import com.matrix.system.app.dto.VipStatisticsParamDto;
@@ -21,6 +22,7 @@
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import org.jsoup.helper.DataUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -53,20 +55,54 @@
    @PostMapping(value = "/findShopBusinessesData")
    public AjaxResult findShopBusinessesData(@RequestBody BusinessesDto businessesDto) {
        String unit = "";
        int calenderUnit;
        if (BusinessesDto.DAY.equals(businessesDto.getType())) {
            unit = "日";
            calenderUnit = Calendar.DATE;
        } else {
            unit = "月";
            calenderUnit = Calendar.MONTH;
        }
        //        PaginationVO pageVo = new PaginationVO();
//        pageVo.setOffset((businessesDto.getPageNum() - 1) * businessesDto.getPageSize());
//        pageVo.setLimit(businessesDto.getPageSize());
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        int start = (businessesDto.getPageNum() - 1) * businessesDto.getPageSize();
        int size = businessesDto.getPageSize();
        Calendar calendar = Calendar.getInstance();
        Date now = calendar.getTime();
        List<Date> xAxis = StatisticsTimeUtil.getTimeSpace("2021-01-13", "2021-01-13", unit);
        calendar.add(calenderUnit, -start);
        String endTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
        calendar.add(calenderUnit, -size);
        String startTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
        List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(startTime, endTime, unit);
        List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
        return AjaxResult.buildSuccessInstance("123");
        List<StatisticsTimeDaoParam> statisticsTimeDaoParams = timeSpaceParam.subList(0, timeSpaceParam.size() - 2);
        List<BusinessesDataShowVo> list = sysBusinessDataDao.selectApiBusinessData(statisticsTimeDaoParams, businessesDto.getShopId(), user.getCompanyId());
        List<BusinessesDataShowVo> result = new ArrayList<>();
        for (int i = list.size() - 1; i >= 0; i--) {
            BusinessesDataShowVo item = list.get(i);
            String dataTime = item.getDataTime();
            if (BusinessesDto.DAY.equals(businessesDto.getType())) {
                item.setDataTime(DateUtil.dateToString(DateUtil.stringToDate(dataTime, DateUtil.DATE_FORMAT_DD), DateUtil.DATE_FORMAT_DD));
            } else {
                item.setDataTime(DateUtil.dateToString(DateUtil.stringToDate(dataTime, DateUtil.MONTH), DateUtil.MONTH));
            }
            result.add(item);
        }
        return AjaxResult.buildSuccessInstance(result);
    }
    public static void main(String[] args) {
        int start = 1;
        int end  = 10;
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.DATE, start);
        Date time = calendar.getTime();
        System.out.println(time);
        calendar.add(Calendar.DATE, end);
        System.out.println(calendar.getTime());
    }
    @ApiOperation(value = "专项", notes = "专项")
@@ -209,16 +245,5 @@
        });
        return setDataList(ajaxResult);
    }
    @ApiOperation(value = "测试", notes = "测试")
    @GetMapping(value = "/findTestData")
    public AjaxResult findTestData() {
        List<Date> xAxis = StatisticsTimeUtil.getTimeSpace("2021-01-13", "2021-01-13", "日");
        List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
//        List<BusinessesDataShowVo> businessesDataShowVo = sysBusinessDataDao.selectDemo2();
        List<BusinessesDataShowVo> map = sysBusinessDataDao.selectDemo(timeSpaceParam, 34L, 17L);
        return AjaxResult.buildSuccessInstance(map);
    }
}
zq-erp/src/main/java/com/matrix/system/app/vo/BusinessesDataShowVo.java
@@ -17,64 +17,64 @@
    private String dataTime;
    @ApiModelProperty(value = "营业收入")
    private String totalPay;
    private BigDecimal totalPay;
    @ApiModelProperty(value = "现金收款")
    private String cashPay;
    private BigDecimal cashPay;
    @ApiModelProperty(value = "储值卡收款")
    private String cardPay;
    private BigDecimal cardPay;
    @ApiModelProperty(value = "欠款")
    private String arrearsPay;
    private BigDecimal arrearsPay;
    @ApiModelProperty(value = "现金退款")
    private String refundCashPay;
    private BigDecimal refundCashPay;
    @ApiModelProperty(value = "卡项退款")
    private String refundCardPay;
    private BigDecimal refundCardPay;
    @ApiModelProperty(value = "产品业绩")
    private String productAchieve;
    private BigDecimal productAchieve;
    @ApiModelProperty(value = "卡项业绩")
    private String cardAchieve;
    private BigDecimal cardAchieve;
    @ApiModelProperty(value = "退款")
    private String refund;
    private BigDecimal refund;
    @ApiModelProperty(value = "客单数")
    private String perCustomCnt;
    private BigDecimal perCustomCnt;
    @ApiModelProperty(value = "客品数")
    private String customGoodsCnt;
    private BigDecimal customGoodsCnt;
    @ApiModelProperty(value = "客单价")
    private String perCustomPrice;
    private BigDecimal perCustomPrice;
    @ApiModelProperty(value = "成本")
    private String cost;
    private BigDecimal cost;
    @ApiModelProperty(value = "毛利")
    private String grossProfit;
    private BigDecimal grossProfit;
    @ApiModelProperty(value = "毛利率")
    private String grossProfitRate;
    private BigDecimal grossProfitRate;
    @ApiModelProperty(value = "本金消耗")
    private String consumePay;
    private BigDecimal consumePay;
    @ApiModelProperty(value = "赠送消耗")
    private String freeConsumePay;
    private BigDecimal freeConsumePay;
    @ApiModelProperty(value = "人头数")
    private String peopleCnt;
    private BigDecimal peopleCnt;
    @ApiModelProperty(value = "项目消耗数")
    private String projConsumeCnt;
    private BigDecimal projConsumeCnt;
    @ApiModelProperty(value = "服务时长")
    private String timeLength;
    private BigDecimal timeLength;
    /**
     * 当天销售总数量
@@ -86,13 +86,13 @@
     * 家居产品成本
     */
    @ApiModelProperty(hidden = true)
    private String goodsCost;
    private BigDecimal goodsCost;
    /**
     * 除家具产品以外成本
     */
    @ApiModelProperty(hidden = true)
    private String otherCost;
    private BigDecimal otherCost;
    public Integer getTotalSaleCnt() {
        return totalSaleCnt;
@@ -102,19 +102,19 @@
        this.totalSaleCnt = totalSaleCnt;
    }
    public String getGoodsCost() {
    public BigDecimal getGoodsCost() {
        return goodsCost;
    }
    public void setGoodsCost(String goodsCost) {
    public void setGoodsCost(BigDecimal goodsCost) {
        this.goodsCost = goodsCost;
    }
    public String getOtherCost() {
    public BigDecimal getOtherCost() {
        return otherCost;
    }
    public void setOtherCost(String otherCost) {
    public void setOtherCost(BigDecimal otherCost) {
        this.otherCost = otherCost;
    }
@@ -126,163 +126,175 @@
        this.dataTime = dataTime;
    }
    public String getTotalPay() {
    public BigDecimal getTotalPay() {
        return totalPay;
    }
    public void setTotalPay(String totalPay) {
    public void setTotalPay(BigDecimal totalPay) {
        this.totalPay = totalPay;
    }
    public String getCashPay() {
    public BigDecimal getCashPay() {
        return cashPay;
    }
    public void setCashPay(String cashPay) {
    public void setCashPay(BigDecimal cashPay) {
        this.cashPay = cashPay;
    }
    public String getCardPay() {
    public BigDecimal getCardPay() {
        return cardPay;
    }
    public void setCardPay(String cardPay) {
    public void setCardPay(BigDecimal cardPay) {
        this.cardPay = cardPay;
    }
    public String getArrearsPay() {
    public BigDecimal getArrearsPay() {
        return arrearsPay;
    }
    public void setArrearsPay(String arrearsPay) {
    public void setArrearsPay(BigDecimal arrearsPay) {
        this.arrearsPay = arrearsPay;
    }
    public String getFreeConsumePay() {
    public BigDecimal getFreeConsumePay() {
        return freeConsumePay;
    }
    public void setFreeConsumePay(String freeConsumePay) {
    public void setFreeConsumePay(BigDecimal freeConsumePay) {
        this.freeConsumePay = freeConsumePay;
    }
    public String getConsumePay() {
    public BigDecimal getConsumePay() {
        return consumePay;
    }
    public void setConsumePay(String consumePay) {
    public void setConsumePay(BigDecimal consumePay) {
        this.consumePay = consumePay;
    }
    public String getRefundCashPay() {
    public BigDecimal getRefundCashPay() {
        return refundCashPay;
    }
    public void setRefundCashPay(String refundCashPay) {
    public void setRefundCashPay(BigDecimal refundCashPay) {
        this.refundCashPay = refundCashPay;
    }
    public String getRefundCardPay() {
    public BigDecimal getRefundCardPay() {
        return refundCardPay;
    }
    public void setRefundCardPay(String refundCardPay) {
    public void setRefundCardPay(BigDecimal refundCardPay) {
        this.refundCardPay = refundCardPay;
    }
    public String getProductAchieve() {
    public BigDecimal getProductAchieve() {
        return productAchieve;
    }
    public void setProductAchieve(String productAchieve) {
    public void setProductAchieve(BigDecimal productAchieve) {
        this.productAchieve = productAchieve;
    }
    public String getCardAchieve() {
    public BigDecimal getCardAchieve() {
        return cardAchieve;
    }
    public void setCardAchieve(String cardAchieve) {
    public void setCardAchieve(BigDecimal cardAchieve) {
        this.cardAchieve = cardAchieve;
    }
    public String getRefund() {
    public BigDecimal getRefund() {
        return refund;
    }
    public void setRefund(String refund) {
    public void setRefund(BigDecimal refund) {
        this.refund = refund;
    }
    public String getPerCustomCnt() {
    public BigDecimal getPerCustomCnt() {
        return perCustomCnt;
    }
    public void setPerCustomCnt(String perCustomCnt) {
    public void setPerCustomCnt(BigDecimal perCustomCnt) {
        this.perCustomCnt = perCustomCnt;
    }
    public String getCustomGoodsCnt() {
        return new BigDecimal(totalSaleCnt).divide(new BigDecimal(perCustomCnt), 2, BigDecimal.ROUND_DOWN).toPlainString();
    public BigDecimal getCustomGoodsCnt() {
        if (BigDecimal.ZERO.compareTo(perCustomCnt) != 0) {
            return new BigDecimal(totalSaleCnt).divide(perCustomCnt, 2, BigDecimal.ROUND_DOWN);
        } else {
            return BigDecimal.ZERO;
        }
    }
    public void setCustomGoodsCnt(String customGoodsCnt) {
    public void setCustomGoodsCnt(BigDecimal customGoodsCnt) {
        this.customGoodsCnt = customGoodsCnt;
    }
    public String getPerCustomPrice() {
        return new BigDecimal(totalPay).divide(new BigDecimal(perCustomCnt), 2, BigDecimal.ROUND_DOWN).toPlainString();
    public BigDecimal getPerCustomPrice() {
        if (perCustomCnt.compareTo(BigDecimal.ZERO) != 0) {
            return totalPay.divide(perCustomCnt, 2, BigDecimal.ROUND_DOWN);
        } else {
            return BigDecimal.ZERO;
        }
    }
    public void setPerCustomPrice(String perCustomPrice) {
    public void setPerCustomPrice(BigDecimal perCustomPrice) {
        this.perCustomPrice = perCustomPrice;
    }
    public String getCost() {
        return new BigDecimal(goodsCost).add(new BigDecimal(otherCost)).toPlainString();
    public BigDecimal getCost() {
        return goodsCost.add(otherCost);
    }
    public void setCost(String cost) {
    public void setCost(BigDecimal cost) {
        this.cost = cost;
    }
    public String getGrossProfit() {
        return new BigDecimal(totalPay).subtract(new BigDecimal(getCost())).toPlainString();
    public BigDecimal getGrossProfit() {
        return totalPay.subtract(getCost());
    }
    public void setGrossProfit(String grossProfit) {
    public void setGrossProfit(BigDecimal grossProfit) {
        this.grossProfit = grossProfit;
    }
    public String getGrossProfitRate() {
        return new BigDecimal(getGrossProfit()).divide(new BigDecimal(totalPay), 2, BigDecimal.ROUND_DOWN).toPlainString();
    public BigDecimal getGrossProfitRate() {
        if (totalPay.compareTo(BigDecimal.ZERO) != 0) {
            return getGrossProfit().divide(totalPay, 2, BigDecimal.ROUND_DOWN);
        } else {
            return BigDecimal.ZERO;
        }
    }
    public void setGrossProfitRate(String grossProfitRate) {
    public void setGrossProfitRate(BigDecimal grossProfitRate) {
        this.grossProfitRate = grossProfitRate;
    }
    public String getPeopleCnt() {
    public BigDecimal getPeopleCnt() {
        return peopleCnt;
    }
    public void setPeopleCnt(String peopleCnt) {
    public void setPeopleCnt(BigDecimal peopleCnt) {
        this.peopleCnt = peopleCnt;
    }
    public String getProjConsumeCnt() {
    public BigDecimal getProjConsumeCnt() {
        return projConsumeCnt;
    }
    public void setProjConsumeCnt(String projConsumeCnt) {
    public void setProjConsumeCnt(BigDecimal projConsumeCnt) {
        this.projConsumeCnt = projConsumeCnt;
    }
    public String getTimeLength() {
    public BigDecimal getTimeLength() {
        return timeLength;
    }
    public void setTimeLength(String timeLength) {
    public void setTimeLength(BigDecimal timeLength) {
        this.timeLength = timeLength;
    }
}
zq-erp/src/main/java/com/matrix/system/hive/dao/SysBusinessDataDao.java
@@ -51,5 +51,5 @@
    int selectApiBusinessDataTotal(@Param("record") SysBusinessData data);
    List<BusinessesDataShowVo> selectDemo(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("shopId") Long shopId, @Param("companyId") Long companyId);
    List<BusinessesDataShowVo> selectApiBusinessData(@Param("list") List<StatisticsTimeDaoParam> timeSpaceParam, @Param("shopId") Long shopId, @Param("companyId") Long companyId);
}
zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml
@@ -619,10 +619,11 @@
        ) a
    </select>
    <select id="selectDemo" resultType="com.matrix.system.app.vo.BusinessesDataShowVo">
    <select id="selectApiBusinessData" resultType="com.matrix.system.app.vo.BusinessesDataShowVo">
        <foreach collection="list" index="index" item="item"   separator="union all"  >
            select
                (select sum(amount) from sys_order_flow
                #{item.beginTime} dataTime,
                (select IFNULL(sum(amount),0) from sys_order_flow
                    where <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -631,7 +632,7 @@
                        and company_id=#{companyId}
                    </if>
                    )totalPay,
                (select sum(amount) from sys_order_flow
                (select IFNULL(sum(amount),0) from sys_order_flow
                    where pay_method not in ('储值卡', '欠款') and flow_type != '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -640,7 +641,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) cashPay,
                (select sum(amount) from sys_order_flow
                (select IFNULL(sum(amount),0) from sys_order_flow
                    where pay_method = '储值卡' and flow_type != '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -649,7 +650,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) cardPay,
                (select sum(amount) from sys_order_flow
                (select IFNULL(sum(amount),0) from sys_order_flow
                    where pay_method = '欠款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -658,7 +659,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) arrearsPay,
                (select sum(amount) from sys_order_flow
                (select IFNULL(sum(amount),0) from sys_order_flow
                    where pay_method not in ('储值卡', '欠款') and flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -667,7 +668,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) refundCashPay,
                (select sum(amount) from sys_order_flow
                (select IFNULL(sum(amount),0) from sys_order_flow
                    where pay_method in ('储值卡') and flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -676,7 +677,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) refundCardPay,
                (select sum(a.amount) from sys_order_flow a
                (select IFNULL(sum(amount),0) from sys_order_flow a
                    inner join sys_order_item b on a.order_id=b.ORDER_ID
                    inner join shopping_goods c on b.goods_id=c.id
                    where c.good_type='家居产品' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
@@ -687,7 +688,7 @@
                        and a.company_id=#{companyId}
                    </if>
                    ) productAchieve,
                (select sum(a.amount) from sys_order_flow a
                (select IFNULL(sum(amount),0) from sys_order_flow a
                    inner join sys_order_item b on a.order_id=b.ORDER_ID
                    inner join shopping_goods c on b.goods_id=c.id
                    where c.good_type!='家居产品' and <![CDATA[ a.create_time > #{item.beginTime} and a.create_time < #{item.endTime}]]>
@@ -698,7 +699,7 @@
                        and a.company_id=#{companyId}
                    </if>
                    ) cardAchieve,
                (select sum(amount) from sys_order_flow where flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                (select IFNULL(sum(amount),0) from sys_order_flow where flow_type = '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
                    </if>
@@ -706,7 +707,7 @@
                        and company_id=#{companyId}
                    </if>
                ) refund,
                (select count(1) from sys_order
                (select IFNULL(count(1),0) from sys_order
                    where STATU in ('已付款', '欠款') and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -715,7 +716,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) perCustomCnt,
                (select sum(b.COUNT) from sys_order a inner join sys_order_item b on a.ID=b.ORDER_ID
                (select IFNULL(sum(b.COUNT),0) from sys_order a inner join sys_order_item b on a.ID=b.ORDER_ID
                    where a.STATU in ('已付款', '欠款') and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -724,7 +725,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) totalSaleCnt,
                (select sum(e.count * d.GOODS_PRICE) from sys_order a
                (select IFNULL(sum(e.count * d.GOODS_PRICE),0) from sys_order a
                    inner join sys_out_store b on a.id=b.ORDER_ID
                    inner join sys_out_store_item c on b.id=c.OUT_STORE_ID
                    inner join sys_store_info d on c.store_id = d.ID
@@ -738,7 +739,7 @@
                        and a.company_id=#{companyId}
                    </if>
                ) goodsCost,
                (select sum(b.COUNT * IFNULL(c.price, 0)) from sys_order a
                (select IFNULL(sum(b.COUNT * IFNULL(c.price, 0)),0) from sys_order a
                    inner join sys_order_item b on a.ID=b.ORDER_ID
                    inner join shopping_goods c on c.good_type != '家居产品' and b.goods_id=c.id
                    where a.STATU in ('已付款', '欠款') and <![CDATA[ ORDER_TIME > #{item.beginTime} and ORDER_TIME < #{item.endTime} ]]>
@@ -749,7 +750,7 @@
                        and a.company_id=#{companyId}
                    </if>
                ) otherCost,
                (select sum(IFNULL(his_consume, 0)) from achieve_new
                (select IFNULL(sum(IFNULL(his_consume, 0)),0) from achieve_new
                    where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -758,7 +759,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) consumePay,
                (select sum(IFNULL(free_consume, 0)) from achieve_new
                (select IFNULL(sum(IFNULL(free_consume, 0)),0) from achieve_new
                    where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -767,7 +768,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) freeConsumePay,
                (select sum(IFNULL(number_of_people, 0)) from achieve_new
                (select IFNULL(sum(IFNULL(number_of_people, 0)),0) from achieve_new
                    where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -776,7 +777,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) peopleCnt,
                (select sum(IFNULL(proj_num, 0)) from achieve_new
                (select IFNULL(sum(IFNULL(proj_num, 0)),0) from achieve_new
                    where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}
@@ -785,7 +786,7 @@
                        and company_id=#{companyId}
                    </if>
                    ) projConsumeCnt,
                (select sum(IFNULL(proj_time, 0)) from achieve_new
                (select IFNULL(sum(IFNULL(proj_time, 0)),0) from achieve_new
                    where <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime}]]>
                    <if test="shopId != null">
                        and shop_id=#{shopId}