Browse Source

增加开单产品的导入功能

pull/37/head
pref_mail@163.com 10 months ago
parent
commit
cd99ab3125
  1. 2
      blade-biz-common/src/main/java/org/springblade/common/constant/ModuleNameConstant.java
  2. 2
      blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java
  3. 87
      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

2
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 ="";
/** /**
* 工厂对接服务名称 * 工厂对接服务名称

2
blade-service/logpm-basicdata/src/main/java/com/logpm/basicdata/controller/BasicdataCategoryController.java

@ -192,7 +192,7 @@ public class BasicdataCategoryController extends BladeController {
@PostMapping("/import") @PostMapping("/import")
@ApiOperationSupport(order = 12) @ApiOperationSupport(order = 12)
@ApiOperation(value = "导入品类", notes = "传入excel") @ApiOperation(value = "导入品类", notes = "传入excel")
public R importWarehousingEntry(MultipartFile file) { public R importCategory(MultipartFile file) {
BasicdataCategoryImporter basicdataGoodsAreaImporter = new BasicdataCategoryImporter(basicdataCategoryService); BasicdataCategoryImporter basicdataGoodsAreaImporter = new BasicdataCategoryImporter(basicdataCategoryService);
ExcelUtil.save(file,basicdataGoodsAreaImporter, BasicdataCategoryExcel.class); ExcelUtil.save(file,basicdataGoodsAreaImporter, BasicdataCategoryExcel.class);
return R.success("操作成功"); return R.success("操作成功");

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

@ -1,8 +1,17 @@
package com.logpm.basicdata.excel; 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 com.logpm.basicdata.service.IBasicdataCategoryService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.cache.utils.CacheUtil;
import org.springblade.core.excel.support.ExcelImporter; 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.ArrayList;
import java.util.List; import java.util.List;
@ -13,16 +22,84 @@ public class BasicdataCategoryImporter implements ExcelImporter<BasicdataCategor
private final IBasicdataCategoryService basicdataCategoryService; private final IBasicdataCategoryService basicdataCategoryService;
@Override @Override
@Transactional(rollbackFor = RuntimeException.class)
public void save(List<BasicdataCategoryExcel> data) { public void save(List<BasicdataCategoryExcel> data) {
// 处理数据
List<String> pList = new ArrayList(); // 验证data 是否存在name相同的数据
for (BasicdataCategoryExcel datum : data) {
pList.add(datum.getParentCategory()); 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 ip: 127.0.0.1
logpath: ../data/applogs/logpm-factory-data-xxljob/jobhandler logpath: ../data/applogs/logpm-factory-data-xxljob/jobhandler
logretentiondays: -1 logretentiondays: -1
port: 17018 port: 17019

Loading…
Cancel
Save