diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/ProductInfoController.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/ProductInfoController.java index 23ef128..3f9c2ce 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/ProductInfoController.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/ProductInfoController.java @@ -109,14 +109,14 @@ public class ProductInfoController { @GetMapping("/export-excel") @Operation(summary = "导出产品资料 Excel") - @PreAuthorize("@ss.hasPermission('oms:product-info:export')") +// @PreAuthorize("@ss.hasPermission('oms:product-info:export')") @ApiAccessLog(operateType = EXPORT) public void exportProductInfoExcel(@Valid ProductInfoPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = productInfoService.getProductInfoPage(pageReqVO).getList(); + List list = productInfoService.exportExcel(pageReqVO).getList(); // 导出 Excel - ExcelUtils.write(response, "产品资料.xlsx", "数据", ProductInfoRespVO.class,list); + ExcelUtils.write(response, "产品资料.xlsx", "数据", ProductInfoExcelVO.class,list); } } \ No newline at end of file diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoExcelVO.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoExcelVO.java index 5c424d6..13bdb59 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoExcelVO.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/controller/admin/productinfo/vo/ProductInfoExcelVO.java @@ -34,6 +34,16 @@ public class ProductInfoExcelVO { @HeadFontStyle(color = Font.COLOR_RED) private String name; + @Schema(description = "*品类") + @ExcelColumnSelect(functionName = "ExcelSelectProductTypeFunction") + @ExcelProperty("*品类(尺码唛,价钱卡,纸盒,主唛,挂卡,洗水唛)") + @HeadFontStyle(color = Font.COLOR_RED) + private String productType; + + @Schema(description = "*品牌名称") + @ExcelProperty("*品牌名称") + @HeadFontStyle(color = Font.COLOR_RED) + private String brandName; @Schema(description = "产品简介") @ExcelProperty("产品简介") @@ -57,16 +67,6 @@ public class ProductInfoExcelVO { @ExcelProperty("材质(颜色)") private String material; - @Schema(description = "品类") - @ExcelColumnSelect(functionName = "ExcelSelectProductTypeFunction") - @ExcelProperty("品类(尺码唛,价钱卡,纸盒,主唛,挂卡,洗水唛)") - private String productType; - - @Schema(description = "品牌名称") - @ExcelProperty("品牌名称") - private String brandName; - - @Schema(description = "备注") @ExcelProperty("备注") private String remarks; diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoService.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoService.java index f02a928..ee6e897 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoService.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoService.java @@ -63,6 +63,7 @@ public interface ProductInfoService { * @return 产品资料 分页 */ PageResult getProductInfoPage(ProductInfoPageReqVO pageReqVO); + PageResult exportExcel(ProductInfoPageReqVO pageReqVO); PageResult queryPage(QueryFilterInfo queryFilterInfo); diff --git a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java index 2257ab2..ad3ef46 100644 --- a/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java +++ b/hangtag-module-oms/hangtag-module-oms-biz/src/main/java/cn/hangtag/module/oms/service/productinfo/ProductInfoServiceImpl.java @@ -217,6 +217,52 @@ public class ProductInfoServiceImpl implements ProductInfoService { }); return new PageResult<>(resList, productInfoDOPageResult.getTotal()); } + @Override + public PageResult exportExcel(ProductInfoPageReqVO pageReqVO) { + PageResult productInfoDOPageResult = productInfoMapper.selectPage(pageReqVO); + List list = productInfoDOPageResult.getList(); + List resList = new ArrayList<>(); + Set groupIds = new HashSet<>(); + Set productTypeIds = new HashSet<>(); + Set brandIds = new HashSet<>(); + for (ProductInfoDO infoDO : list) { + String customerGroupId = infoDO.getCustomerGroupId(); + if(FuncUtil.isNotEmpty(customerGroupId)){ + groupIds.add(customerGroupId); + } + Long productTypeId = infoDO.getProductTypeId(); + if(FuncUtil.isNotEmpty(productTypeId)){ + productTypeIds.add(productTypeId); + } + Long brandId = infoDO.getBrandId(); + if(FuncUtil.isNotEmpty(brandId)){ + brandIds.add(brandId); + } + } + initBrandNameCache(brandIds); + initCustomerGroupNameCache(groupIds); + initProductTypeNameCache(productTypeIds); + list.forEach(productInfoDO -> { + ProductInfoExcelVO vo = new ProductInfoExcelVO(); + ProductInfoRespVO respVO = BeanUtils.toBean(productInfoDO, ProductInfoRespVO.class); + wrapperBrandName(respVO); + wrapperProductTypeName(respVO); + wrapperCustomerGroupName(respVO); + + vo.setCode(productInfoDO.getCode()); + vo.setName(productInfoDO.getName()); + vo.setIntroduction(productInfoDO.getProductionInfo()); + vo.setSpecWidth(FuncUtil.toStr(productInfoDO.getSpecSizeWidth(),"")); + vo.setSpecHeight(FuncUtil.toStr(productInfoDO.getSpecSizeHeight(),"")); + vo.setSpecThickness(FuncUtil.toStr(productInfoDO.getSpecSizeThk(),"")); + vo.setMaterial(FuncUtil.toStr(productInfoDO.getSpecMaterial(),"")); + vo.setProductType(respVO.getProductTypeName()); + vo.setBrandName(respVO.getBrandName()); + vo.setRemarks(productInfoDO.getRemark()); + resList.add(vo); + }); + return new PageResult<>(resList, productInfoDOPageResult.getTotal()); + } @Override @@ -311,6 +357,7 @@ public class ProductInfoServiceImpl implements ProductInfoService { String code = excelVO.getCode(); if(FuncUtil.isNotEmpty(code)){ + // 覆盖 try { LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); @@ -360,9 +407,23 @@ public class ProductInfoServiceImpl implements ProductInfoService { code = productInfo.getCode(); } if(FuncUtil.isEmpty(code)){ - return "第"+(i+1)+"行编码为空:"+code; + return "第"+(i+1)+"行编码 不能为空:"+code; } String brandName = excelVO.getBrandName(); + if(FuncUtil.isEmpty(brandName)){ + return "第"+(i+1)+"行品牌名称 不能为空:"+brandName; + } + String productType = excelVO.getProductType(); + if(FuncUtil.isEmpty(productType)){ + return "第"+(i+1)+"行品类(尺码唛,价钱卡,纸盒,主唛,挂卡,洗水唛) 不能为空:"+brandName; + } + Long productTypeId = toProductTypeId(excelVO.getProductType()); + + if(FuncUtil.isEmpty(productTypeId)){ + return "第"+(i+1)+"行品类(尺码唛,价钱卡,纸盒,主唛,挂卡,洗水唛) 请维护该分类的的资料:"+brandName; + } + productInfo.setProductTypeId(productTypeId); + productInfo.setCode(code); productInfo.setTemplateType("2"); @@ -372,8 +433,6 @@ public class ProductInfoServiceImpl implements ProductInfoService { productInfo.setSpecMaterial(excelVO.getMaterial()); productInfo.setRemark(excelVO.getRemarks()); - Long productTypeId = toProductTypeId(excelVO.getProductType()); - productInfo.setProductTypeId(productTypeId); if(FuncUtil.isNotEmpty(brandName)){ Long brandId = brandIdCache.get(brandName); @@ -381,10 +440,11 @@ public class ProductInfoServiceImpl implements ProductInfoService { productInfo.setBrandId(brandId); }else { BrandDO brandDO = brandService.getBrandByName(brandName); - if(FuncUtil.isNotEmpty(brandDO)){ - productInfo.setBrandId(brandDO.getId()); - brandIdCache.put(brandName,brandDO.getId()); + if(FuncUtil.isEmpty(brandDO)){ + return "第"+(i+1)+"行品牌不存在,请维护该品牌的资料:"+brandName; } + productInfo.setBrandId(brandDO.getId()); + brandIdCache.put(brandName,brandDO.getId()); } } newList.add(productInfo); @@ -546,7 +606,7 @@ public class ProductInfoServiceImpl implements ProductInfoService { if(FuncUtil.isNotEmpty(ids)){ List dos = productTypeMapper.selectBatchIds(ids); for (ProductTypeDO db : dos) { - brandNameCache.put(db.getId(), db.getLabel()); + ProductTypeNameCache.put(db.getId(), db.getLabel()); } } }