dev^2
itcast 1 year ago
parent cae704d973
commit 220c517379
  1. 5
      ant-design-vue-jeecg/src/views/modulex/ModulexList.vue
  2. 178
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/fieldx/controller/FieldxController.java
  3. 4
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/fieldx/dto/ExcelInfo.java
  4. 10
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/fieldx/entity/Fieldx222.java
  5. 8
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/fieldx/service/IFieldxService.java
  6. 23
      jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/fieldx/service/impl/FieldxServiceImpl.java

@ -548,7 +548,7 @@ export default {
'中文名称(非空): 请填写字段名称', '中文名称(非空): 请填写字段名称',
'英文名称(非空): 请填写字段名称的英语名称', '英文名称(非空): 请填写字段名称的英语名称',
'数据类型(非空): 请填写数据类型,{char,varchar,int}这些等等,具体可以查看数据字典', '数据类型(非空): 请填写数据类型,{char,varchar,int}这些等等,具体可以查看数据字典',
'数据长度(非空): 请填写该字段对应的长度', '数据长度: 请填写该字段对应的长度',
'浮点精度: 请填写浮点精度', '浮点精度: 请填写浮点精度',
'显示形式: 请填写该字段显示的形式', '显示形式: 请填写该字段显示的形式',
'是否主键(非空): 请填写该字段是否为主键,填:是或否', '是否主键(非空): 请填写该字段是否为主键,填:是或否',
@ -563,7 +563,8 @@ export default {
], ],
title: '导入字段', title: '导入字段',
uploadUrl: this.importExcelUrlf, uploadUrl: this.importExcelUrlf,
downUrl: this. exportExcelUrlf downUrl: "temp/fieldx.xls",
downName: "字段.xls"
} }
}, },
ruleData: function () { ruleData: function () {

@ -324,14 +324,24 @@ public class FieldxController extends JeecgController<Fieldx, IFieldxService> {
message.put("isVisible", "true"); message.put("isVisible", "true");
message.put("uploaded", "0"); message.put("uploaded", "0");
message.put("status", "判断文件结构"); message.put("status", "判断文件结构");
message.put("isError", "false");
message.put("closeable","false");
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
if (file == null) { if (file == null) {
message.put("isError", "true");
message.put("status","文件上传失败");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("文件上传失败"); return Result.error("文件上传失败");
} }
//判断格式 //判断格式
String path = file.getOriginalFilename(); String path = file.getOriginalFilename();
if (!(path.endsWith(".xls") || path.endsWith(".xlsx"))) { if (!(path.endsWith(".xls") || path.endsWith(".xlsx"))) {
message.put("isError", "true");
message.put("status","文件格式上传有误");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("文件格式上传有误"); return Result.error("文件格式上传有误");
} }
//根据格式读取 //根据格式读取
@ -347,7 +357,14 @@ public class FieldxController extends JeecgController<Fieldx, IFieldxService> {
//判断表结构 //判断表结构
Row row=first.getRow(2); Row row=first.getRow(2);
if(row==null) if(row==null)
{
message.put("isError", "true");
message.put("status","表结构不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("表结构不能为空"); return Result.error("表结构不能为空");
}
if(!"序号".equals(row.getCell(0).getStringCellValue())||!"表名".equals(row.getCell(1).getStringCellValue()) if(!"序号".equals(row.getCell(0).getStringCellValue())||!"表名".equals(row.getCell(1).getStringCellValue())
||!"中文名称".equals(row.getCell(2).getStringCellValue())||!"英文名称".equals(row.getCell(3).getStringCellValue()) ||!"中文名称".equals(row.getCell(2).getStringCellValue())||!"英文名称".equals(row.getCell(3).getStringCellValue())
@ -357,8 +374,14 @@ public class FieldxController extends JeecgController<Fieldx, IFieldxService> {
||!"关联实体".equals(row.getCell(10).getStringCellValue())||!"关联字段".equals(row.getCell(11).getStringCellValue()) ||!"关联实体".equals(row.getCell(10).getStringCellValue())||!"关联字段".equals(row.getCell(11).getStringCellValue())
||!"是否为空".equals(row.getCell(12).getStringCellValue())||!"是否重复".equals(row.getCell(13).getStringCellValue()) ||!"是否为空".equals(row.getCell(12).getStringCellValue())||!"是否重复".equals(row.getCell(13).getStringCellValue())
||!"字段规则".equals(row.getCell(14).getStringCellValue())||!"字段状态".equals(row.getCell(15).getStringCellValue()) ||!"字段规则".equals(row.getCell(14).getStringCellValue())||!"字段状态".equals(row.getCell(15).getStringCellValue())
||!"版本状态".equals(row.getCell(16).getStringCellValue())) ||!"版本状态".equals(row.getCell(16).getStringCellValue())){
message.put("isError", "true");
message.put("status","表结构不正确");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("表结构不正确"); return Result.error("表结构不正确");
}
//读取表 //读取表
@ -374,56 +397,94 @@ public class FieldxController extends JeecgController<Fieldx, IFieldxService> {
for(int r=3;r<=Sheet.getLastRowNum();r++) { for(int r=3;r<=Sheet.getLastRowNum();r++) {
Row cells = Sheet.getRow(r); Row cells = Sheet.getRow(r);
String cell = cells.getCell(0).getStringCellValue(); String cell = cells.getCell(0).getStringCellValue();
if (StringUtils.isEmpty(cell)) {
if (StringUtils.isEmpty(String.valueOf(cell))) {
break; break;
} }
ExcelInfo excelInfo = new ExcelInfo(); ExcelInfo excelInfo = new ExcelInfo();
excelInfo.setcells(cells); excelInfo.setcells(cells);
Fieldx222 fieldx222 = new Fieldx222(); Fieldx222 fieldx222 = new Fieldx222();
if (StringUtil.isBlank(excelInfo.getTableId())) { if (StringUtil.isBlank(excelInfo.getTableId())) {
message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”表名”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的表名不能为空"); return Result.error("序号为" + (r - 2) + "的表名不能为空");
} }
fieldx222.setTableId(excelInfo.getTableId()); fieldx222.setTableId(excelInfo.getTableId());
if (StringUtil.isBlank(excelInfo.getFieldName())) { if (StringUtil.isBlank(excelInfo.getFieldName())) {
message.put("isError", "true");
message.put("status","序号为 + (r - 2) + 的”中文名称”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的中文名称不能为空"); return Result.error("序号为" + (r - 2) + "的中文名称不能为空");
} }
fieldx222.setFieldName(excelInfo.getFieldName()); fieldx222.setFieldName(excelInfo.getFieldName());
if (StringUtil.isBlank(excelInfo.getFieldEnName())) { if (StringUtil.isBlank(excelInfo.getFieldEnName())) {
message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”英文名称”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的英文名称不能为空"); return Result.error("序号为" + (r - 2) + "的英文名称不能为空");
} }
fieldx222.setFieldEnName(excelInfo.getFieldEnName()); fieldx222.setFieldEnName(excelInfo.getFieldEnName());
if (StringUtil.isBlank(excelInfo.getType())) { if (StringUtil.isBlank(excelInfo.getType())) {
message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”数据类型”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的数据类型不能为空"); return Result.error("序号为" + (r - 2) + "的数据类型不能为空");
} }
fieldx222.setType(excelInfo.getType()); fieldx222.setType(excelInfo.getType());
if (StringUtil.isBlank(excelInfo.getLength())) {
return Result.error("序号为" + (r - 2) + "的数据长度不能为空");
}
fieldx222.setLength(excelInfo.getLength());
if (StringUtil.isBlank(excelInfo.getIsPk())) { if (StringUtil.isBlank(excelInfo.getIsPk())) {
message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”是否主键”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的是否主键不能为空"); return Result.error("序号为" + (r - 2) + "的是否主键不能为空");
} }
fieldx222.setIsPk(excelInfo.getIsPk()); fieldx222.setIsPk(excelInfo.getIsFk());
if (StringUtil.isBlank(excelInfo.getIsFk())) { if (StringUtil.isBlank(excelInfo.getIsFk())) {
return Result.error("序号为" + (r - 2) + "的是否外键不能为空"); message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”是否外键”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "”的是否外键”不能为空");
} }
fieldx222.setIsFk(excelInfo.getIsFk()); fieldx222.setIsFk(excelInfo.getIsNull());
if (StringUtil.isBlank(excelInfo.getIsNull())) { if (StringUtil.isBlank(excelInfo.getIsNull())) {
message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”是否为空”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的是否为空不能为空"); return Result.error("序号为" + (r - 2) + "的是否为空不能为空");
} }
fieldx222.setIsNull(excelInfo.getIsNull()); fieldx222.setIsNull(excelInfo.getIsUniqueness());
if (StringUtil.isBlank(excelInfo.getIsUniqueness())) { if (StringUtil.isBlank(excelInfo.getIsUniqueness())) {
message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”是否重复”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的是否重复不能为空"); return Result.error("序号为" + (r - 2) + "的是否重复不能为空");
} }
fieldx222.setIsUniqueness(excelInfo.getIsUniqueness()); fieldx222.setStatus(excelInfo.getStatus());
if (StringUtil.isBlank(excelInfo.getVerisonStatus())) { if (StringUtil.isBlank(excelInfo.getStatus())) {
return Result.error("序号为" + (r - 2) + "的字段状态不能为空"); message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”字段状态”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的”字段状态”不能为空");
} }
fieldx222.setVerisonStatus(excelInfo.getVerisonStatus()); fieldx222.setVerisonStatus(excelInfo.getVerisonStatus());
if (StringUtil.isBlank(excelInfo.getVerison())) { if (StringUtil.isBlank(excelInfo.getVerisonStatus())) {
return Result.error("序号为" + (r - 2) + "的版本状态不能为空"); message.put("isError", "true");
message.put("status","序号为" + (r - 2) + "的”版本状态”不能为空");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("序号为" + (r - 2) + "的”版本状态”不能为空");
} }
fieldx222.setVerison(excelInfo.getVerison()); fieldx222.setVerisonStatus(excelInfo.getVerisonStatus());
if (!StringUtils.isEmpty(excelInfo.getAccuracy())) if (!StringUtils.isEmpty(excelInfo.getAccuracy()))
fieldx222.setAccuracy(excelInfo.getAccuracy()); fieldx222.setAccuracy(excelInfo.getAccuracy());
@ -435,11 +496,14 @@ public class FieldxController extends JeecgController<Fieldx, IFieldxService> {
fieldx222.setAssociateField(excelInfo.getAssociateField()); fieldx222.setAssociateField(excelInfo.getAssociateField());
if (!StringUtils.isEmpty(excelInfo.getRule())) if (!StringUtils.isEmpty(excelInfo.getRule()))
fieldx222.setRull(excelInfo.getRule()); fieldx222.setRull(excelInfo.getRule());
if (!StringUtils.isEmpty(excelInfo.getLength()))
fieldx222.setLength(excelInfo.getLength());
list.add(fieldx222); list.add(fieldx222);
} }
} }
message.put("status", "数据预读入成功"); message.put("status", "数据预读入成功");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
message.put("status", "正在上传"); message.put("status", "正在上传");
@ -449,40 +513,56 @@ public class FieldxController extends JeecgController<Fieldx, IFieldxService> {
message.put("records", String.valueOf(list222.size())); message.put("records", String.valueOf(list222.size()));
webSocketUtils.sendMessage(loginUser.getId(), message); webSocketUtils.sendMessage(loginUser.getId(), message);
fieldx222Service.remove(null); fieldx222Service.remove(null);
if(list222==null) if(list222==null){
message.put("isError", "true");
message.put("status","文件格式不正确");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
return Result.error("文件上传失败"); return Result.error("文件上传失败");
}
List<Fieldx> list1= list222.stream().map((item)->{ //将中间表导入数据库
Fieldx fieldx=new Fieldx();
String id=item.getId(); try {
fieldx.setTableId(item.getTableId()); List<Fieldx> list1= list222.stream().map((item)->{
fieldx.setFieldName(item.getFieldName()); Fieldx fieldx=new Fieldx();
fieldx.setFieldEnName(item.getFieldName()); String id=item.getId();
fieldx.setType(Integer.valueOf(item.getType())); fieldx.setTableId(item.getTableId());
fieldx.setLength(Integer.valueOf(item.getLength())); fieldx.setFieldName(item.getFieldName());
fieldx.setIsPk(Integer.valueOf(item.getIsPk())); fieldx.setFieldEnName(item.getFieldName());
fieldx.setIsFk(Integer.valueOf(item.getIsFk())); fieldx.setType(Integer.valueOf(item.getType()));
fieldx.setIsNull(Integer.valueOf(item.getIsNull())); fieldx.setIsPk(Integer.valueOf(item.getIsPk()));
fieldx.setIsUniqueness(Integer.valueOf(item.getIsUniqueness())); fieldx.setIsFk(Integer.valueOf(item.getIsFk()));
fieldx.setVerisonStatus(Integer.valueOf(item.getVerisonStatus())); fieldx.setIsNull(Integer.valueOf(item.getIsNull()));
fieldx.setVerison(Integer.valueOf(item.getVerison())); fieldx.setIsUniqueness(Integer.valueOf(item.getIsUniqueness()));
if(!StringUtils.isEmpty(item.getAccuracy())) fieldx.setStatus(Integer.valueOf(item.getStatus()));
fieldx.setAccuracy(Integer.valueOf(item.getAccuracy())); fieldx.setVerisonStatus(Integer.valueOf(item.getVerisonStatus()));
if(!StringUtils.isEmpty(item.getFormat())) if(!StringUtils.isEmpty(item.getAccuracy()))
fieldx.setFormat(item.getFormat()); fieldx.setAccuracy(Integer.valueOf(item.getAccuracy()));
if(!StringUtils.isEmpty(item.getAssociateTable())) if(!StringUtils.isEmpty(item.getFormat()))
fieldx.setAssociateTable(item.getAssociateTable()); fieldx.setFormat(item.getFormat());
if(!StringUtils.isEmpty(item.getAssociateField())) if(!StringUtils.isEmpty(item.getAssociateTable()))
fieldx.setAssociateField(item.getAssociateField()); fieldx.setAssociateTable(item.getAssociateTable());
if(!StringUtils.isEmpty(item.getRull())) if(!StringUtils.isEmpty(item.getAssociateField()))
fieldx.setRule(item.getRull()); fieldx.setAssociateField(item.getAssociateField());
return fieldx; if(!StringUtils.isEmpty(item.getRull()))
}).collect(Collectors.toList()); fieldx.setRule(item.getRull());
if(!StringUtils.isEmpty(item.getLength()))
//将中间表数据导入数据库 fieldx.setLength(Integer.valueOf(item.getLength()));
fieldxService.saveBatch(list1); return fieldx;
message.put("status", "上传成功"); }).collect(Collectors.toList());
webSocketUtils.sendMessage(loginUser.getId(), message);
//将表数据导入数据库
fieldxService.saveSingleBatch(list1,loginUser, message);
message.put("status", "上传成功");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
} catch (Exception e) {
message.put("isError", "true");
message.put("status","单元格样式错误,请根据注意事项保证单元格样式正确");
message.put("closeable","true");
webSocketUtils.sendMessage(loginUser.getId(), message);
}
return Result.OK("文件上传成功"); return Result.OK("文件上传成功");
} }

@ -102,12 +102,12 @@ public class ExcelInfo {
return getvalue(value); return getvalue(value);
} }
public String getVerisonStatus(){ public String getStatus(){
String value=cells.getCell(15).getStringCellValue(); String value=cells.getCell(15).getStringCellValue();
return getvalue(value); return getvalue(value);
} }
public String getVerison(){ public String getVerisonStatus(){
String value=cells.getCell(16).getStringCellValue(); String value=cells.getCell(16).getStringCellValue();
return getvalue(value); return getvalue(value);
} }

@ -80,12 +80,14 @@ public class Fieldx222 implements Serializable {
@Excel(name = "字段规则", width = 15) @Excel(name = "字段规则", width = 15)
@ApiModelProperty(value = "字段规则") @ApiModelProperty(value = "字段规则")
private java.lang.String rull; private java.lang.String rull;
/**字段状态*/
@Excel(name = "字段状态", width = 15,dicCode = "a_status")
@Dict(dicCode = "a_status")
@ApiModelProperty(value = "字段状态")
private java.lang.String status;
/**版本状态*/ /**版本状态*/
@Excel(name = "版本状态", width = 15 ,dicCode = "verison_status") @Excel(name = "版本状态", width = 15 ,dicCode = "verison_status")
@Dict(dicCode = "verison_status")
@ApiModelProperty(value = "版本状态") @ApiModelProperty(value = "版本状态")
private java.lang.String verisonStatus; private java.lang.String verisonStatus;
/**版本号*/
@Excel(name = "版本号", width = 15)
@ApiModelProperty(value = "版本号")
private java.lang.String verison;
} }

@ -1,7 +1,13 @@
package org.jeecg.modules.fieldx.service; package org.jeecg.modules.fieldx.service;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.fieldx.entity.Fieldx; import org.jeecg.modules.fieldx.entity.Fieldx;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.fieldx.entity.Fieldx222;
import org.jeecg.modules.tablex.entity.Tablex;
import java.util.List;
import java.util.Map;
/** /**
* @Description: 字段管理 * @Description: 字段管理
@ -10,5 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
* @Version: V1.0 * @Version: V1.0
*/ */
public interface IFieldxService extends IService<Fieldx> { public interface IFieldxService extends IService<Fieldx> {
void saveSingleBatch(List<Fieldx> fieldxList, LoginUser loginUser, Map<String, String> message);
} }

@ -1,12 +1,19 @@
package org.jeecg.modules.fieldx.service.impl; package org.jeecg.modules.fieldx.service.impl;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.fieldx.entity.Fieldx; import org.jeecg.modules.fieldx.entity.Fieldx;
import org.jeecg.modules.fieldx.entity.Fieldx222;
import org.jeecg.modules.fieldx.mapper.FieldxMapper; import org.jeecg.modules.fieldx.mapper.FieldxMapper;
import org.jeecg.modules.fieldx.service.IFieldxService; import org.jeecg.modules.fieldx.service.IFieldxService;
import org.jeecg.modules.tablex.ws.WebSocketUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.List;
import java.util.Map;
/** /**
* @Description: 字段管理 * @Description: 字段管理
* @Author: jeecg-boot * @Author: jeecg-boot
@ -15,5 +22,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
*/ */
@Service @Service
public class FieldxServiceImpl extends ServiceImpl<FieldxMapper, Fieldx> implements IFieldxService { public class FieldxServiceImpl extends ServiceImpl<FieldxMapper, Fieldx> implements IFieldxService {
@Autowired
private WebSocketUtils webSocketUtils;
@Override
public void saveSingleBatch(List<Fieldx> fieldxList, LoginUser loginUser, Map<String, String> message) {
for (int i = 0; i < fieldxList.size(); i++){
try {
Thread.sleep(1000L);
message.put("uploaded", String.valueOf(i + 1));
this.save(fieldxList.get(i));
webSocketUtils.sendMessage(loginUser.getId(), message);
} catch (InterruptedException e) {
log.error(e.getMessage(), e);
}
}
}
} }

Loading…
Cancel
Save