Browse Source

Merge branch 'dev' into pre-production

master
pref_mail@163.com 11 months ago
parent
commit
e8ee67b893
  1. 29
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java
  2. 109
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryExcel.java
  3. 105
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java
  4. 2
      blade-service/logpm-basicdata/src/main/resources/application-dev.yml

29
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<BasicdataCategoryExcel> 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<BasicdataCategoryExcel> list = new ArrayList<>();
ExcelUtil.export(response, "品类数据" + DateUtil.time(), "品类数据表", list, BasicdataCategoryExcel.class);
}
@PostMapping("/import")
@ApiOperationSupport(order = 12)
@ApiOperation(value = "导入品类", notes = "传入excel")
public R importCategory(MultipartFile file) {
BasicdataCategoryImporter basicdataGoodsAreaImporter = new BasicdataCategoryImporter(basicdataCategoryService);
ExcelUtil.save(file,basicdataGoodsAreaImporter, BasicdataCategoryExcel.class);
return R.success("操作成功");
}
}

109
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;
}

105
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/excel/BasicdataCategoryImporter.java

@ -0,0 +1,105 @@
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;
@AllArgsConstructor
public class BasicdataCategoryImporter implements ExcelImporter<BasicdataCategoryExcel> {
private final IBasicdataCategoryService basicdataCategoryService;
@Override
@Transactional(rollbackFor = RuntimeException.class)
public void save(List<BasicdataCategoryExcel> data) {
// 验证data 是否存在name相同的数据
boolean hasDuplicates = data.stream()
.map(BasicdataCategoryExcel::getName)
.distinct()
.count() != data.size();
if(hasDuplicates){
throw new ServiceException("存在相同的数据");
}
// 得到目前系统存在品类
LambdaQueryWrapper<BasicdataCategoryEntity> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BasicdataCategoryEntity::getIsDeleted,0);
List<BasicdataCategoryEntity> ls = basicdataCategoryService.list(queryWrapper);
// 验证导入的数据和查询的数据是否存在相同的名称
ls.forEach(item->{
data.forEach(datum -> {
if(item.getName().equals(datum.getName())){
throw new ServiceException(datum.getName()+"存在相同的数据");
}
});
});
List<DictBiz> category = DictBizCache.getList("category");
// 优先保存 没有父级的数据
List<BasicdataCategoryEntity> pList = new ArrayList<>();
List<BasicdataCategoryEntity> 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<DictBiz> category, String type) {
for (DictBiz dictBiz : category) {
if (dictBiz.getDictValue().equals(type)) {
return dictBiz.getDictKey();
}
}
return null;
}
}

2
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

Loading…
Cancel
Save