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}