From 4c6bda460a432b7902fb06a573bd5ac640d5cf43 Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Thu, 18 Apr 2024 19:05:31 +0800 Subject: [PATCH 1/2] zt --- .../common/constant/ModuleNameConstant.java | 2 +- .../BasicdataCategoryController.java | 29 +++++ .../excel/BasicdataCategoryExcel.java | 109 ++---------------- .../excel/BasicdataCategoryImporter.java | 28 +++++ 4 files changed, 67 insertions(+), 101 deletions(-) create mode 100644 blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java index 1ff9387b0..6cabb8b3f 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java @@ -8,7 +8,7 @@ public interface ModuleNameConstant { /** * 如果不需要 "" */ - public static final String DEVAUTH =""; + public static final String DEVAUTH ="-pref"; /** * 工厂对接服务名称 diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java index 9d824d1d5..0daadf364 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java @@ -20,7 +20,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.logpm.basicdata.entity.BasicdataCategoryEntity; +import com.logpm.basicdata.entity.BasicdataWarehouseEntity; import com.logpm.basicdata.excel.BasicdataCategoryExcel; +import com.logpm.basicdata.excel.BasicdataCategoryImporter; +import com.logpm.basicdata.excel.BasicdataGoodsAreaExcel; +import com.logpm.basicdata.excel.BasicdataGoodsAreaImporter; import com.logpm.basicdata.service.IBasicdataCategoryService; import com.logpm.basicdata.vo.BasicdataCategoryVO; import io.swagger.annotations.Api; @@ -38,12 +42,15 @@ import org.springblade.core.tool.constant.BladeConstant; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.Func; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import springfox.documentation.annotations.ApiIgnore; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; /** * 品类 控制器 @@ -169,5 +176,27 @@ public class BasicdataCategoryController extends BladeController { List list = basicdataCategoryService.exportBasicdataCategory(queryWrapper); ExcelUtil.export(response, "品类数据" + DateUtil.time(), "品类数据表", list, BasicdataCategoryExcel.class); } + /** + * 导出数据 + */ + @GetMapping("/downTemplate") + @ApiOperationSupport(order = 9) + @ApiOperation(value = "下载导出模板", notes = "下载导出模板") + public void downTemplate(HttpServletResponse response) { + + List list = new ArrayList<>(); + ExcelUtil.export(response, "品类数据" + DateUtil.time(), "品类数据表", list, BasicdataCategoryExcel.class); + } + + + @PostMapping("/import") + @ApiOperationSupport(order = 12) + @ApiOperation(value = "导入品类", notes = "传入excel") + public R importWarehousingEntry(MultipartFile file) { + BasicdataCategoryImporter basicdataGoodsAreaImporter = new BasicdataCategoryImporter(basicdataCategoryService); + ExcelUtil.save(file,basicdataGoodsAreaImporter, BasicdataCategoryExcel.class); + return R.success("操作成功"); + } + } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryExcel.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryExcel.java index 5d2fe0911..bc04240ca 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryExcel.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryExcel.java @@ -40,113 +40,22 @@ public class BasicdataCategoryExcel implements Serializable { private static final long serialVersionUID = 1L; - /** - * 租户号 - */ - @ColumnWidth(20) - @ExcelProperty("租户号") - private String tenantId; - /** - * 是否已删除 - */ - @ColumnWidth(20) - @ExcelProperty("是否已删除") - private Integer isDeleted; - /** - * 预留1 - */ - @ColumnWidth(20) - @ExcelProperty("预留1") - private String reserve1; - /** - * 预留2 - */ - @ColumnWidth(20) - @ExcelProperty("预留2") - private String reserve2; - /** - * 预留3 - */ - @ColumnWidth(20) - @ExcelProperty("预留3") - private String reserve3; - /** - * 预留4 - */ - @ColumnWidth(20) - @ExcelProperty("预留4") - private String reserve4; - /** - * 预留5 - */ - @ColumnWidth(20) - @ExcelProperty("预留5") - private String reserve5; - /** - * 父ID - */ - @ColumnWidth(20) - @ExcelProperty("父ID") - private Long pid; - /** - * 一级编码 - */ - @ColumnWidth(20) - @ExcelProperty("一级编码") - private Long stairCode; - /** - * 二级编码 - */ - @ColumnWidth(20) - @ExcelProperty("二级编码") - private Long secondCode; - /** - * 一级名称 - */ - @ColumnWidth(20) - @ExcelProperty("一级名称") - private String stairName; - /** - * 二级名称 - */ - @ColumnWidth(20) - @ExcelProperty("二级名称") - private String secondName; - /** - * 三级编码 - */ - @ColumnWidth(20) - @ExcelProperty("三级编码") - private Long threeCode; - /** - * 三级名称 - */ - @ColumnWidth(20) - @ExcelProperty("三级名称") - private String threeName; - /** - * 四级编码 - */ - @ColumnWidth(20) - @ExcelProperty("四级编码") - private Long fourCode; - /** - * 四级名称 - */ + @ColumnWidth(20) - @ExcelProperty("四级名称") - private String fourName; + @ExcelProperty("产品名称") + private String name; /** - * 名称 + * 类型 */ @ColumnWidth(20) - @ExcelProperty("名称") - private String name; + @ExcelProperty("类型") + private String type; + /** * 类型 */ @ColumnWidth(20) - @ExcelProperty("类型") - private Integer type; + @ExcelProperty("父级产品名称") + private String parentCategory; } diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java new file mode 100644 index 000000000..e9a8ac042 --- /dev/null +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java @@ -0,0 +1,28 @@ +package com.logpm.basicdata.excel; + +import com.logpm.basicdata.service.IBasicdataCategoryService; +import lombok.AllArgsConstructor; +import org.springblade.core.excel.support.ExcelImporter; + +import java.util.ArrayList; +import java.util.List; + +@AllArgsConstructor +public class BasicdataCategoryImporter implements ExcelImporter { + + private final IBasicdataCategoryService basicdataCategoryService; + + @Override + public void save(List data) { + // 处理数据 + List pList = new ArrayList(); + for (BasicdataCategoryExcel datum : data) { + pList.add(datum.getParentCategory()); + } + // 验证导入的 + + + + + } +} From cd99ab3125b8ad909da580f8fd56f968422ad673 Mon Sep 17 00:00:00 2001 From: "pref_mail@163.com" Date: Thu, 18 Apr 2024 20:41:16 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=80=E5=8D=95?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E7=9A=84=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/ModuleNameConstant.java | 2 +- .../BasicdataCategoryController.java | 2 +- .../excel/BasicdataCategoryImporter.java | 87 +++++++++++++++++-- .../src/main/resources/application-dev.yml | 2 +- 4 files changed, 85 insertions(+), 8 deletions(-) diff --git a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java index 6cabb8b3f..1ff9387b0 100644 --- a/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java +++ b/blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java @@ -8,7 +8,7 @@ public interface ModuleNameConstant { /** * 如果不需要 "" */ - public static final String DEVAUTH ="-pref"; + public static final String DEVAUTH =""; /** * 工厂对接服务名称 diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java index 0daadf364..d8a5fe187 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java @@ -192,7 +192,7 @@ public class BasicdataCategoryController extends BladeController { @PostMapping("/import") @ApiOperationSupport(order = 12) @ApiOperation(value = "导入品类", notes = "传入excel") - public R importWarehousingEntry(MultipartFile file) { + public R importCategory(MultipartFile file) { BasicdataCategoryImporter basicdataGoodsAreaImporter = new BasicdataCategoryImporter(basicdataCategoryService); ExcelUtil.save(file,basicdataGoodsAreaImporter, BasicdataCategoryExcel.class); return R.success("操作成功"); diff --git a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java index e9a8ac042..04356ed71 100644 --- a/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java +++ b/blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java @@ -1,8 +1,17 @@ package com.logpm.basicdata.excel; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.logpm.basicdata.entity.BasicdataCategoryEntity; import com.logpm.basicdata.service.IBasicdataCategoryService; import lombok.AllArgsConstructor; +import org.springblade.core.cache.utils.CacheUtil; import org.springblade.core.excel.support.ExcelImporter; +import org.springblade.core.log.exception.ServiceException; +import org.springblade.core.tenant.exception.TenantDataSourceException; +import org.springblade.core.tool.utils.ObjectUtil; +import org.springblade.system.cache.DictBizCache; +import org.springblade.system.entity.DictBiz; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; @@ -13,16 +22,84 @@ public class BasicdataCategoryImporter implements ExcelImporter data) { - // 处理数据 - List pList = new ArrayList(); - for (BasicdataCategoryExcel datum : data) { - pList.add(datum.getParentCategory()); + + // 验证data 是否存在name相同的数据 + + boolean hasDuplicates = data.stream() + .map(BasicdataCategoryExcel::getName) + .distinct() + .count() != data.size(); + if(hasDuplicates){ + throw new ServiceException("存在相同的数据"); } - // 验证导入的 + + // 得到目前系统存在品类 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(BasicdataCategoryEntity::getIsDeleted,0); + List ls = basicdataCategoryService.list(queryWrapper); + + // 验证导入的数据和查询的数据是否存在相同的名称 + ls.forEach(item->{ + data.forEach(datum -> { + if(item.getName().equals(datum.getName())){ + throw new ServiceException(datum.getName()+"存在相同的数据"); + } + }); + }); + List category = DictBizCache.getList("category"); + // 优先保存 没有父级的数据 + List pList = new ArrayList<>(); + List cList = new ArrayList<>(); + data.forEach(item->{ + if(ObjectUtil.isNotEmpty(item.getName())){ + BasicdataCategoryEntity basicdataCategoryEntity = new BasicdataCategoryEntity(); + basicdataCategoryEntity.setName(item.getName()); + String dictValue = findDictValue(category, item.getType()); + basicdataCategoryEntity.setType(dictValue==null?1:Integer.parseInt(dictValue)); + if(item.getParentCategory()==null){ + pList.add(basicdataCategoryEntity); + }else{ + basicdataCategoryEntity.setReserve1(item.getParentCategory()); + cList.add(basicdataCategoryEntity); + } + } + }); + // 保存 + basicdataCategoryService.saveBatch(pList); + queryWrapper.eq(BasicdataCategoryEntity::getType,1); + ls = basicdataCategoryService.list(queryWrapper); + for (BasicdataCategoryEntity basicdataCategoryEntity : cList) { + for (BasicdataCategoryEntity l : ls) { + if (basicdataCategoryEntity.getReserve1().equals(l.getName())) { + basicdataCategoryEntity.setPid(l.getId()); + //移除临时使用值 + basicdataCategoryEntity.setReserve1(null); + break; + } + } + } + basicdataCategoryService.saveBatch(cList); + + } + + /** + * 寻找字典的value + * @param category + * @param type + * @return + */ + private String findDictValue(List category, String type) { + for (DictBiz dictBiz : category) { + if (dictBiz.getDictValue().equals(type)) { + return dictBiz.getDictKey(); + } + } + return null; } } diff --git a/blade-service/logpm-basicdata/src/main/resources/application-dev.yml b/blade-service/logpm-basicdata/src/main/resources/application-dev.yml index 8286d310f..bea4f60a6 100644 --- a/blade-service/logpm-basicdata/src/main/resources/application-dev.yml +++ b/blade-service/logpm-basicdata/src/main/resources/application-dev.yml @@ -53,4 +53,4 @@ xxl: ip: 127.0.0.1 logpath: ../data/applogs/logpm-factory-data-xxljob/jobhandler logretentiondays: -1 - port: 17018 + port: 17019