Browse Source

维多利亚产品库导出

yzc 11 months ago
parent
commit
7e3fbb5bf7

+ 12 - 3
hx-item/src/main/java/com/fjhx/item/controller/product/ProductInfoController.java

@@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -45,7 +46,7 @@ public class ProductInfoController {
      * 产品库统计(根据产品库类型进行分类统计)
      */
     @PostMapping("/productInfoStatistics")
-    public  Map<String,Object> productInfoStatistics(@RequestBody ProductInfoSelectDto dto) {
+    public Map<String, Object> productInfoStatistics(@RequestBody ProductInfoSelectDto dto) {
         return productInfoService.productInfoStatistics(dto);
     }
 
@@ -219,7 +220,7 @@ public class ProductInfoController {
      * 产品类型统计
      */
     @GetMapping("/statisticsProduct")
-    public Map<String,Object> statisticsProduct() {
+    public Map<String, Object> statisticsProduct() {
         return productInfoService.statisticsProduct();
     }
 
@@ -227,8 +228,16 @@ public class ProductInfoController {
      * 批量修改产品销售状态
      */
     @PostMapping("/editByCodes")
-    public void editByCodes(@RequestBody ProductInfoDto dto){
+    public void editByCodes(@RequestBody ProductInfoDto dto) {
         productInfoService.editByCodes(dto);
     }
 
+    /**
+     * 产品导出
+     */
+    @PostMapping("/exportExcel")
+    public void exportExcel(HttpServletResponse httpServletResponse, @RequestBody ProductInfoSelectDto dto) {
+        productInfoService.exportExcel(httpServletResponse, dto);
+    }
+
 }

+ 65 - 0
hx-item/src/main/java/com/fjhx/item/entity/product/ProductExportExcelBo.java

@@ -0,0 +1,65 @@
+package com.fjhx.item.entity.product;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class ProductExportExcelBo {
+    @ColumnWidth(15)
+    @ExcelProperty("产品分类")
+    private String classifyName;
+    @ColumnWidth(15)
+    @ExcelProperty("产品类型")
+    private String type;
+    @ColumnWidth(15)
+    @ExcelProperty("产品编号")
+    private String customCode;
+    @ColumnWidth(25)
+    @ExcelProperty("产品名称")
+    private String name;
+    @ColumnWidth(15)
+    @ExcelProperty("是否组合")
+    private String combination;
+    @ColumnWidth(15)
+    @ExcelProperty("销售状态")
+    private String salesStatus;
+    @ColumnWidth(10)
+    @ExcelProperty("单位")
+    private String unit;
+    @ColumnWidth(15)
+    @ExcelProperty("规格")
+    private String spec;
+    @ColumnWidth(15)
+    @ExcelProperty("材质")
+    private String materialQuality;
+    @ColumnWidth(15)
+    @ExcelProperty("重量")
+    private String weight;
+    @ColumnWidth(15)
+    @ExcelProperty("适用温度")
+    private String applicableTemp;
+    @ColumnWidth(15)
+    @ExcelProperty("管理部门")
+    private String deptName;
+    @ColumnWidth(15)
+    @ExcelProperty("生命周期")
+    private String lifeCycle;
+    @ColumnWidth(20)
+    @ExcelProperty("库存清空期限")
+    private String clearancePeriod;
+    @ColumnWidth(15)
+    @ExcelProperty("京东供价")
+    private String jdPurchasePrice;
+    @ColumnWidth(15)
+    @ExcelProperty("标准售价")
+    private String unitPrice;
+    @ColumnWidth(15)
+    @ExcelProperty("新品期")
+    private Integer newProductsDay;
+    @ColumnWidth(15)
+    @ExcelProperty("成长期")
+    private Integer growUpDay;
+}

+ 5 - 1
hx-item/src/main/java/com/fjhx/item/entity/product/po/ProductInfoWdlyJson.java

@@ -1,11 +1,15 @@
 package com.fjhx.item.entity.product.po;
 
+import lombok.Getter;
+import lombok.Setter;
+
 import java.util.List;
 
 /**
  * 维多利亚产品信息扩展JSON实体
  */
-
+@Getter
+@Setter
 public class ProductInfoWdlyJson {
     /**
      * 京东供价

+ 1 - 0
hx-item/src/main/java/com/fjhx/item/mapper/product/ProductInfoMapper.java

@@ -26,6 +26,7 @@ public interface ProductInfoMapper extends BaseMapper<ProductInfo> {
      * 产品库分页
      */
     Page<ProductInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<ProductInfo> wrapper);
+    List<ProductInfoVo> getPage( @Param("ew") IWrapper<ProductInfo> wrapper);
 
     /**
      * 根据产品IDS获取产品

+ 17 - 6
hx-item/src/main/java/com/fjhx/item/service/product/ProductInfoService.java

@@ -9,6 +9,7 @@ import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.ruoyi.common.core.service.BaseService;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 
@@ -108,7 +109,7 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
      *
      * @return
      */
-    List<ProductInfoVo> getListByProductType(Integer productType, Integer definition,String productName,String productCode);
+    List<ProductInfoVo> getListByProductType(Integer productType, Integer definition, String productName, String productCode);
 
     /**
      * excel导入
@@ -122,38 +123,43 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
 
     /**
      * 产品统计(数据看板-产品分析页面)
+     *
      * @param productInfoDto
      */
-    Map<String,Object> productStatistics(ProductInfoDto productInfoDto);
+    Map<String, Object> productStatistics(ProductInfoDto productInfoDto);
 
     /**
      * 产品分布(数据看板-产品分析页面)
+     *
      * @param productInfoDto
      */
-    List<Map<String,Object>> productDistribution(ProductInfoDto productInfoDto);
+    List<Map<String, Object>> productDistribution(ProductInfoDto productInfoDto);
 
     /**
      * 产品类型排行(数据看板-产品分析页面)
+     *
      * @param productInfoDto
      */
-    List<Map<String,Object>> productTypeRanking(ProductInfoSelectDto productInfoDto);
+    List<Map<String, Object>> productTypeRanking(ProductInfoSelectDto productInfoDto);
 
     /**
      * 产品排行(数据看板-产品分析页面)
+     *
      * @param productInfoDto
      */
     Page<ProductInfoVo> productRanking(ProductInfoSelectDto productInfoDto);
 
     /**
      * 产品统计
+     *
      * @return
      */
-    Map<String,Object> statisticsProduct();
+    Map<String, Object> statisticsProduct();
 
     /**
      * 产品库统计(根据产品库类型进行分类统计)
      */
-    Map<String,Object> productInfoStatistics(ProductInfoSelectDto dto);
+    Map<String, Object> productInfoStatistics(ProductInfoSelectDto dto);
 
     /**
      * 批量修改产品销售状态
@@ -164,4 +170,9 @@ public interface ProductInfoService extends BaseService<ProductInfo> {
      * 根据产品编码获取产品信息
      */
     List<IssueImportExcelBo> issueImportExcel(MultipartFile file);
+
+    /**
+     * Excel导出
+     */
+    void exportExcel(HttpServletResponse httpServletResponse, ProductInfoSelectDto dto);
 }

+ 74 - 10
hx-item/src/main/java/com/fjhx/item/service/product/impl/ProductInfoServiceImpl.java

@@ -22,12 +22,10 @@ import com.fjhx.customer.entity.customer.po.Customer;
 import com.fjhx.customer.service.customer.CustomerService;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.item.entity.product.IssueImportExcelBo;
+import com.fjhx.item.entity.product.ProductExportExcelBo;
 import com.fjhx.item.entity.product.dto.ProductInfoDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
-import com.fjhx.item.entity.product.po.ProductClassify;
-import com.fjhx.item.entity.product.po.ProductInfo;
-import com.fjhx.item.entity.product.po.ProductInfoEhsdExcel;
-import com.fjhx.item.entity.product.po.ProductInfoEhsdJson;
+import com.fjhx.item.entity.product.po.*;
 import com.fjhx.item.entity.product.vo.ProductInfoVo;
 import com.fjhx.item.mapper.product.ProductInfoMapper;
 import com.fjhx.item.service.product.ProductClassifyService;
@@ -39,6 +37,7 @@ import com.fjhx.tenant.entity.dict.dto.DictTenantDataSelectDto;
 import com.fjhx.tenant.entity.dict.po.DictTenantData;
 import com.fjhx.tenant.entity.dict.vo.DictTenantDataVo;
 import com.fjhx.tenant.service.dict.DictTenantDataService;
+import com.fjhx.tenant.utils.DeptUtils;
 import com.fjhx.tenant.utils.DictUtils;
 import com.ruoyi.common.core.domain.BaseIdPo;
 import com.ruoyi.common.core.domain.entity.SysDept;
@@ -54,6 +53,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -86,9 +86,7 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
     @Autowired
     private DictTenantDataService dictTenantDataService;
 
-    @Override
-    public Page<ProductInfoVo> getPage(ProductInfoSelectDto dto) {
-        IWrapper<ProductInfo> wrapper = getWrapper();
+    private void setPageWrapper(ProductInfoSelectDto dto, IWrapper<ProductInfo> wrapper) {
         wrapper.orderByDesc("pi", ProductInfo::getId);
         wrapper.eq("pi", ProductInfo::getType, dto.getType());
         wrapper.eq("pi", ProductInfo::getDefinition, dto.getDefinition());
@@ -117,13 +115,28 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         wrapper.eq("json_unquote( victoriatourist_json -> '$.combination' )", dto.getCombination());
         //销售状态过滤
         wrapper.eq("json_unquote( victoriatourist_json -> '$.salesStatus' )", dto.getSalesStatus());
+    }
+
+    @Override
+    public Page<ProductInfoVo> getPage(ProductInfoSelectDto dto) {
+        IWrapper<ProductInfo> wrapper = getWrapper();
+
+        //设置条件
+        setPageWrapper(dto, wrapper);
 
         Page<ProductInfoVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
 
         List<ProductInfoVo> records = page.getRecords();
 
+        //赋值详情
+        setPageInfo(records);
+
+        return page;
+    }
+
+    private void setPageInfo(List<ProductInfoVo> records) {
         if (records.size() == 0) {
-            return page;
+            return;
         }
 
         List<ProductClassify> productClassifyList = productClassifyService.list();
@@ -147,8 +160,6 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
             record.setClassifyNameGroup(classifyNameGroup);
 
         }
-
-        return page;
     }
 
 
@@ -1157,4 +1168,57 @@ public class ProductInfoServiceImpl extends ServiceImpl<ProductInfoMapper, Produ
         return excelBoList;
     }
 
+    @Override
+    public void exportExcel(HttpServletResponse httpServletResponse, ProductInfoSelectDto dto) {
+        IWrapper<ProductInfo> wrapper = getWrapper();
+        setPageWrapper(dto, wrapper);
+        List<ProductInfoVo> list = baseMapper.getPage(wrapper);
+        setPageInfo(list);
+
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        Map<String, String> productTypeMap = DictUtils.getDictMap("product_type");
+        Map<String, String> salesStatusMap = DictUtils.getDictMap("sales_status");
+        Map<String, String> unitMap = DictUtils.getDictMap("unit");
+        Map<Long, String> deptNameMap = DeptUtils.getDeptNameMap();
+        DynamicDataSourceContextHolder.poll();
+
+        ArrayList<ProductExportExcelBo> outList = new ArrayList<>();
+        for (ProductInfoVo vo : list) {
+            ProductExportExcelBo productExportExcelBo = BeanUtil.copyProperties(vo, ProductExportExcelBo.class);
+            ProductInfoWdlyJson wdlyJson = JSONObject.parseObject(ObjectUtil.isEmpty(vo.getVictoriatouristJson()) ? "{}" : vo.getVictoriatouristJson(), ProductInfoWdlyJson.class);
+
+            //产品类型处理
+            productExportExcelBo.setType(productTypeMap.get(vo.getType()));
+            //是否组合
+            productExportExcelBo.setCombination(ObjectUtil.equals(wdlyJson.getCombination(), "1") ? "是" : "否");
+            //销售状态
+            productExportExcelBo.setSalesStatus(salesStatusMap.get(wdlyJson.getSalesStatus()));
+            //单位
+            productExportExcelBo.setUnit(unitMap.get(vo.getUnit()));
+            //材质
+            productExportExcelBo.setMaterialQuality(wdlyJson.getMaterialQuality());
+            //重量
+            productExportExcelBo.setWeight(wdlyJson.getWeight());
+            //适用温度
+            productExportExcelBo.setApplicableTemp(wdlyJson.getApplicableTemp());
+            //管理部门
+            productExportExcelBo.setDeptName(deptNameMap.get(vo.getDeptId()));
+            //生命周期
+            productExportExcelBo.setLifeCycle(vo.getLifeCycle() == 1 ? "新品" : vo.getLifeCycle() == 2 ? "成长" : vo.getLifeCycle() == 3 ? "成熟" : String.valueOf(vo.getLifeCycle()));
+            //库存清空期限
+            productExportExcelBo.setClearancePeriod(wdlyJson.getClearancePeriod());
+            //京东供价
+            productExportExcelBo.setJdPurchasePrice(wdlyJson.getJdPurchasePrice());
+            //新品期
+            productExportExcelBo.setNewProductsDay(wdlyJson.getNewProductsDay());
+            //成长期
+            productExportExcelBo.setGrowUpDay(wdlyJson.getGrowUpDay());
+
+            outList.add(productExportExcelBo);
+        }
+
+        ExcelUtil.export(httpServletResponse, outList, ProductExportExcelBo.class);
+
+    }
+
 }

+ 2 - 1
hx-item/src/main/resources/mapper/product/ProductInfoMapper.xml

@@ -21,7 +21,8 @@
             pi.victoriatourist_json,
             pi.bar_code,
             IF(DATEDIFF(now(),pi.create_time)> json_unquote( victoriatourist_json -> '$.growUpDay' ),3,IF( DATEDIFF(now(),pi.create_time)> json_unquote( victoriatourist_json -> '$.newProductsDay' ), 2, 1 )) AS lifeCycle,
-            pi.unit_price
+            pi.unit_price,
+            pi.deptIdWdly as dept_id
         FROM
             product_info pi
             ${ew.customSqlSegment}