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