From 84098781635f1babaa6f4507200afa10283f4a58 Mon Sep 17 00:00:00 2001 From: 陶杰 <1378534974@qq.com> Date: 星期三, 18 十二月 2024 17:37:39 +0800 Subject: [PATCH] 1.花材统计报表 --- src/main/java/com/mzl/flower/dto/request/statisticAnalysis/FlowerMaterialDTO.java | 25 ++++ src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialStaticVO.java | 13 ++ src/main/java/com/mzl/flower/service/impl/statisticsAnalysis/StatisticAnalysisServiceImpl.java | 69 +++++++++++ src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialVO.java | 41 ++++++ src/main/java/com/mzl/flower/mapper/statisticsAnalysis/FlowerMaterialMapper.java | 17 ++ src/main/resources/mapper/statisticsAnalysis/FlowerMaterialMapper.xml | 136 ++++++++++++++++++++++ 6 files changed, 297 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/mzl/flower/dto/request/statisticAnalysis/FlowerMaterialDTO.java b/src/main/java/com/mzl/flower/dto/request/statisticAnalysis/FlowerMaterialDTO.java index e316a5f..d368041 100644 --- a/src/main/java/com/mzl/flower/dto/request/statisticAnalysis/FlowerMaterialDTO.java +++ b/src/main/java/com/mzl/flower/dto/request/statisticAnalysis/FlowerMaterialDTO.java @@ -1,7 +1,32 @@ package com.mzl.flower.dto.request.statisticAnalysis; +import com.mzl.flower.base.annotation.DictTrans; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data public class FlowerMaterialDTO { + + @ApiModelProperty(value = "供应商ID") + private Long supplierId; + @ApiModelProperty(value = "供应商名称") + private String supplierName; + @ApiModelProperty(value = "注册手机号") + private String loginName; + @ApiModelProperty(value = "联系方式") + private String contactTel; + @ApiModelProperty(value = "所属集货站") + private String stationId; + @ApiModelProperty(value = "品类") + private String flowerCategory; + @ApiModelProperty(value = "状态") + private String flowerStatus; + @ApiModelProperty(value = "等级-FLOWER_LEVEL") + private String flowerLevel; + @ApiModelProperty(value = "父品类",hidden = true) + private String parentflowerCategory; + @ApiModelProperty(value = "排序字段") + private String orderField; + @ApiModelProperty(value = "排序类型,ASC 升序,DESC 降序") + private String orderType; } diff --git a/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialStaticVO.java b/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialStaticVO.java index e17404c..daab36a 100644 --- a/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialStaticVO.java +++ b/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialStaticVO.java @@ -1,7 +1,20 @@ package com.mzl.flower.dto.response.statisticAnalysis; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data +@ApiModel("花材列表统计") public class FlowerMaterialStaticVO { + + @ApiModelProperty(value = "供应商总数") + private String supplierAmount; + + @ApiModelProperty(value = "商品总数") + private String flowerAmount; + + @ApiModelProperty(value = "商品总库存") + private String flowerStockAmount; + } diff --git a/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialVO.java b/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialVO.java index 76c84c0..bdf5a4d 100644 --- a/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialVO.java +++ b/src/main/java/com/mzl/flower/dto/response/statisticAnalysis/FlowerMaterialVO.java @@ -1,7 +1,46 @@ package com.mzl.flower.dto.response.statisticAnalysis; +import com.mzl.flower.base.AbstractTransDTO; +import com.mzl.flower.base.annotation.DictTrans; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data -public class FlowerMaterialVO { +@ApiModel("花材列表") +public class FlowerMaterialVO extends AbstractTransDTO { + + @ApiModelProperty(value = "供应商ID") + private String supplierId; + @ApiModelProperty(value = "供应商名称") + private String supplierName; + @ApiModelProperty(value = "注册手机号") + private String loginName; + @ApiModelProperty(value = "联系方式") + private String contactTel; + @ApiModelProperty(value = "所属集货站") + private String stationName; + @ApiModelProperty(value = "品类") + private String categoryName; + @ApiModelProperty(value = "商品名称") + private String flowerName; + @ApiModelProperty(value = "等级-FLOWER_LEVEL") + @DictTrans(target = "flowerLevelStr", codeType = "FLOWER_LEVEL") + private String flowerLevel; + @ApiModelProperty(value = "等级") + private String flowerLevelStr; + @ApiModelProperty(value = "商品规格") + private String flowerUnit; + @ApiModelProperty(value = "价格") + private String flowerPrice; + @ApiModelProperty(value = "库存") + private String flowerStock; + @ApiModelProperty(value = "状态") + @DictTrans(target = "flowerStatusStr", codeType = "FLOWER_STATUS") + private String flowerStatus; + @ApiModelProperty(value = "状态") + private String flowerStatusStr; + @ApiModelProperty(value = "花ID") + private String flowerId; + } diff --git a/src/main/java/com/mzl/flower/mapper/statisticsAnalysis/FlowerMaterialMapper.java b/src/main/java/com/mzl/flower/mapper/statisticsAnalysis/FlowerMaterialMapper.java new file mode 100644 index 0000000..7f64c1d --- /dev/null +++ b/src/main/java/com/mzl/flower/mapper/statisticsAnalysis/FlowerMaterialMapper.java @@ -0,0 +1,17 @@ +package com.mzl.flower.mapper.statisticsAnalysis; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mzl.flower.dto.request.statisticAnalysis.FlowerMaterialDTO; +import com.mzl.flower.dto.response.statisticAnalysis.FlowerMaterialStaticVO; +import com.mzl.flower.dto.response.statisticAnalysis.FlowerMaterialVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface FlowerMaterialMapper { + Page<FlowerMaterialVO> getFlowerMaterialPage(Page page,@Param("dto") FlowerMaterialDTO dto); + + List<FlowerMaterialVO> getFlowerMaterialList(@Param("dto") FlowerMaterialDTO dto); + + List<FlowerMaterialStaticVO> getFlowerMaterialStatis(@Param("dto") FlowerMaterialDTO dto); +} diff --git a/src/main/java/com/mzl/flower/service/impl/statisticsAnalysis/StatisticAnalysisServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/statisticsAnalysis/StatisticAnalysisServiceImpl.java index eb95d76..1f7480a 100644 --- a/src/main/java/com/mzl/flower/service/impl/statisticsAnalysis/StatisticAnalysisServiceImpl.java +++ b/src/main/java/com/mzl/flower/service/impl/statisticsAnalysis/StatisticAnalysisServiceImpl.java @@ -1,30 +1,93 @@ package com.mzl.flower.service.impl.statisticsAnalysis; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.mzl.flower.base.cache.DictCacheClient; import com.mzl.flower.dto.request.statisticAnalysis.FlowerMaterialDTO; +import com.mzl.flower.dto.response.report.OrderReportResultVO; import com.mzl.flower.dto.response.statisticAnalysis.FlowerMaterialStaticVO; import com.mzl.flower.dto.response.statisticAnalysis.FlowerMaterialVO; +import com.mzl.flower.mapper.statisticsAnalysis.FlowerMaterialMapper; +import com.mzl.flower.service.BaseService; import com.mzl.flower.service.statisticsAnalysis.StatisticAnalysisService; +import com.mzl.flower.utils.ExcelExportUtil; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.List; @Slf4j @Service -public class StatisticAnalysisServiceImpl implements StatisticAnalysisService { +public class StatisticAnalysisServiceImpl extends BaseService implements StatisticAnalysisService { + + @Autowired + private DictCacheClient dictCacheClient; + + @Autowired + private FlowerMaterialMapper flowerMaterialMapper; + @Override public Page<FlowerMaterialVO> getFlowerMaterialPage(Page page, FlowerMaterialDTO dto) { - return null; + + Page<FlowerMaterialVO> result=flowerMaterialMapper.getFlowerMaterialPage(page, dto); + + return result; } @Override public FlowerMaterialStaticVO getFlowerMaterialStatis(FlowerMaterialDTO dto) { - return null; + List<FlowerMaterialStaticVO> list= flowerMaterialMapper.getFlowerMaterialStatis(dto); + if(!CollectionUtils.isEmpty(list)){ + return list.get(0); + } + return null; } @Override public void exportFlowerMaterialSales(HttpServletResponse response, FlowerMaterialDTO dto) { + List<FlowerMaterialVO> list=flowerMaterialMapper.getFlowerMaterialList(dto); + String[] rowsName = new String[]{ + "序号" + ,"供应商ID", "供应商名称","注册手机号","联系方式","所属集货站","品类","商品名称","等级","商品规格","价格","库存","状态",}; + List<Object[]> dataList = new ArrayList<>(); + int sn = 1; + for (FlowerMaterialVO o : list) { + Object[] objs = new Object[rowsName.length]; + int a = 0; + objs[a++] = sn; // 序号 + objs[a++] = o.getSupplierId(); // 供应商ID + objs[a++] = o.getSupplierName(); // 供应商名称 + objs[a++] = o.getLoginName(); // 注册手机号 + objs[a++] = o.getContactTel(); // 联系方式" + objs[a++] = o.getStationName(); // 所属集货站 + objs[a++] = o.getCategoryName(); // 品类 + objs[a++] = o.getFlowerName(); //商品名称 +// String dictValue = dictCacheClient.getDict("FLOWER_LEVEL", o.getFlowerLevel()); +// objs[a++] = dictValue; //等级 + objs[a++] = o.getFlowerLevelStr(); //等级 + objs[a++] = o.getFlowerUnit(); //商品规格 + objs[a++] = o.getFlowerPrice();//价格 + objs[a++] = o.getFlowerStock();//库存 +// String dictValueStatus = dictCacheClient.getDict("FLOWER_STATUS", o.getFlowerStatus()); + // objs[a++] =dictValueStatus; + objs[a++] = o.getFlowerStatusStr(); // 状态 + + dataList.add(objs); + sn++; + } + + ExcelExportUtil excelExportUtil = new ExcelExportUtil("花材统计报表", rowsName, dataList, response); + try { + response.addHeader("filename", URLEncoder.encode("花材统计报表.xls", "UTF-8")); + response.addHeader("Access-Control-Expose-Headers", "filename"); + excelExportUtil.export(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } } } diff --git a/src/main/resources/mapper/statisticsAnalysis/FlowerMaterialMapper.xml b/src/main/resources/mapper/statisticsAnalysis/FlowerMaterialMapper.xml new file mode 100644 index 0000000..ea77926 --- /dev/null +++ b/src/main/resources/mapper/statisticsAnalysis/FlowerMaterialMapper.xml @@ -0,0 +1,136 @@ +<?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.mzl.flower.mapper.statisticsAnalysis.FlowerMaterialMapper"> + + + <select id="getFlowerMaterialPage" + resultType="com.mzl.flower.dto.response.statisticAnalysis.FlowerMaterialVO"> + <include refid="flowerMaterialSql"></include> + </select> + <select id="getFlowerMaterialList" + resultType="com.mzl.flower.dto.response.statisticAnalysis.FlowerMaterialVO"> + <include refid="flowerMaterialSqlWidthDict"></include> + </select> + <select id="getFlowerMaterialStatis" + resultType="com.mzl.flower.dto.response.statisticAnalysis.FlowerMaterialStaticVO"> + select + count(distinct si.id) as supplier_amount, + count(f.id) as flower_amount, + sum(f.stock) as flower_stock_amount + from t_flower f + left join t_supplier_info si + on f.supplier_id=si.id + left join t_user u + on si.user_id =u.id + left join t_station s + on si.station_id=s.id + left join t_flower_category fc + on f.category=fc.id + <include refid="flowerMaterialSql_where"></include> + </select> + + <sql id="flowerMaterialSql"> + select + si.id as supplier_id + ,si.name as supplier_name + ,u.login_name + ,si.contact_tel + ,s.name as station_name + ,fc.name as category_name + ,f.name as flower_name + ,f.`level` as flower_level + ,f.unit as flower_unit + ,f.price as flower_price + ,f.stock flower_stock + ,f.status as flower_status + from t_flower f + left join t_supplier_info si + on f.supplier_id=si.id + left join t_user u + on si.user_id =u.id + left join t_station s + on si.station_id=s.id + left join t_flower_category fc + on f.category=fc.id + +-- and u.deleted=0 and s.deleted=0 and fc.deleted=0 + <include refid="flowerMaterialSql_where"></include> + <if test="dto.orderField !=null and dto.orderField !=''"> + order by ${dto.orderField} ${dto.orderType} + </if> + </sql> + + <sql id="flowerMaterialSqlWidthDict"> + select + si.id as supplier_id + ,si.name as supplier_name + ,u.login_name + ,si.contact_tel + ,s.name as station_name + ,fc.name as category_name + ,f.name as flower_name + ,f.`level` as flower_level + ,f.unit as flower_unit + ,f.price as flower_price + ,f.stock flower_stock + ,f.status as flower_status + ,code.label as flower_status_str + , code2.label as flower_level_str + from t_flower f + left join t_supplier_info si + on f.supplier_id=si.id + left join t_user u + on si.user_id =u.id + left join t_station s + on si.station_id=s.id + left join t_flower_category fc + on f.category=fc.id + LEFT JOIN (SELECT ct.label, ct.value from t_code_value ct where type_code = 'FLOWER_STATUS') code ON f.status = code.value + LEFT JOIN (SELECT ct.label, ct.value from t_code_value ct where type_code = 'FLOWER_LEVEL') code2 ON f.`level` = code2.value + <include refid="flowerMaterialSql_where"></include> + <if test="dto.orderField !=null and dto.orderField !=''"> + order by ${dto.orderField} ${dto.orderType} + </if> + </sql> + + <sql id="flowerMaterialSql_where"> + where f.deleted=0 and si.deleted =0 + <if test="dto.supplierId != null"> + and f.supplier_id = #{dto.supplierId} + </if> + <if test="dto.supplierName !=null and dto.supplierName !=''"> + AND si.name LIKE concat('%', #{dto.supplierName},'%') + </if> + <if test="dto.loginName !=null and dto.loginName !=''"> + AND u.login_name LIKE concat('%', #{dto.loginName},'%') + </if> + + <if test="dto.contactTel !=null and dto.contactTel !=''"> + AND si.contact_tel LIKE concat('%', #{dto.contactTel},'%') + </if> + + <if test="dto.stationId !=null and dto.stationId !=''"> + AND si.station_id = #{dto.stationId} + </if> + + <if test="dto.flowerCategory !=null and dto.flowerCategory !=''"> + AND ( f.category = #{dto.flowerCategory} or f.category in ( + select id from t_flower_category where parent_id = #{dto.flowerCategory} + )) + + </if> + <if test="dto.flowerStatus !=null and dto.flowerStatus !=''"> + AND f.status = #{dto.flowerStatus} + </if> + <if test="dto.flowerLevel !=null and dto.flowerLevel !=''"> + AND f.`level` = #{dto.flowerLevel} + </if> + + + + + </sql> + + + +</mapper> \ No newline at end of file -- Gitblit v1.9.3