|
@@ -39,9 +39,11 @@ import org.springblade.core.tool.utils.DateUtil;
|
|
import org.springblade.core.tool.utils.Func;
|
|
import org.springblade.core.tool.utils.Func;
|
|
import org.springblade.core.tool.utils.StringPool;
|
|
import org.springblade.core.tool.utils.StringPool;
|
|
import org.springblade.manager.dto.FormElementDTO;
|
|
import org.springblade.manager.dto.FormElementDTO;
|
|
|
|
+import org.springblade.manager.dto.WbsTreeBatchImportDTO;
|
|
import org.springblade.manager.dto.WbsTreeContractDTO;
|
|
import org.springblade.manager.dto.WbsTreeContractDTO;
|
|
import org.springblade.manager.dto.WbsTreeDTO2;
|
|
import org.springblade.manager.dto.WbsTreeDTO2;
|
|
import org.springblade.manager.entity.*;
|
|
import org.springblade.manager.entity.*;
|
|
|
|
+import org.springblade.manager.excel.WbsExcelBatchUtil;
|
|
import org.springblade.manager.excel.WbsExcelUtil;
|
|
import org.springblade.manager.excel.WbsExcelUtil;
|
|
import org.springblade.manager.mapper.*;
|
|
import org.springblade.manager.mapper.*;
|
|
import org.springblade.manager.service.IWbsFormElementService;
|
|
import org.springblade.manager.service.IWbsFormElementService;
|
|
@@ -53,6 +55,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
+import javax.annotation.Resource;
|
|
import java.io.File;
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.util.*;
|
|
import java.util.*;
|
|
@@ -67,7 +70,6 @@ import java.util.*;
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree> implements IWbsTreeService {
|
|
public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree> implements IWbsTreeService {
|
|
|
|
|
|
- private final BladeLogger logger;
|
|
|
|
private final WbsTreeMapper wbsTreeMapper;
|
|
private final WbsTreeMapper wbsTreeMapper;
|
|
private final IWbsFormElementService wbsFormElementService;
|
|
private final IWbsFormElementService wbsFormElementService;
|
|
private final WbsInfoMapper wbsInfoMapper;
|
|
private final WbsInfoMapper wbsInfoMapper;
|
|
@@ -119,7 +121,7 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return saveOrUpdate(dept);
|
|
return saveOrUpdate(dept);
|
|
}
|
|
}
|
|
|
|
|
|
- private boolean submit2(FormElementDTO dept) {
|
|
|
|
|
|
+ public boolean submit2(FormElementDTO dept) {
|
|
if (Func.isEmpty(dept.getParentId())) {
|
|
if (Func.isEmpty(dept.getParentId())) {
|
|
dept.setTenantId(AuthUtil.getTenantId());
|
|
dept.setTenantId(AuthUtil.getTenantId());
|
|
dept.setParentId(BladeConstant.TOP_PARENT_ID);
|
|
dept.setParentId(BladeConstant.TOP_PARENT_ID);
|
|
@@ -140,8 +142,213 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
dept.setType(2);
|
|
dept.setType(2);
|
|
dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
return saveOrUpdate(dept);
|
|
return saveOrUpdate(dept);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public boolean submit3(WbsTree dept) {
|
|
|
|
+ if (Func.isEmpty(dept.getParentId())) {
|
|
|
|
+ dept.setTenantId(AuthUtil.getTenantId());
|
|
|
|
+ dept.setParentId(BladeConstant.TOP_PARENT_ID);
|
|
|
|
+ dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
|
|
|
|
+ }
|
|
|
|
+ if (dept.getParentId() > 0) {
|
|
|
|
+ WbsTree parent = getById(dept.getParentId());
|
|
|
|
+ if (Func.toLong(dept.getParentId()) == Func.toLong(dept.getId())) {
|
|
|
|
+ throw new ServiceException("父节点不可选择自身!");
|
|
|
|
+ }
|
|
|
|
+ dept.setTenantId(parent.getTenantId());
|
|
|
|
+ String ancestors = parent.getAncestors() + StringPool.COMMA + dept.getParentId();
|
|
|
|
+ dept.setAncestors(ancestors);
|
|
|
|
+ //设置表示该父节点下存在表单
|
|
|
|
+ baseMapper.updateIsExistFormById(parent.getId());
|
|
|
|
+ }
|
|
|
|
+ //设置类型默认值为 '2' 表单
|
|
|
|
+ dept.setType(2);
|
|
|
|
+ dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
|
|
|
|
+ return saveOrUpdate(dept);
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * wbs元素表、元素批量导入
|
|
|
|
+ * @param excelFile
|
|
|
|
+ * @param wbsTree
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
+ public boolean importWbsTreeTableAndForm(MultipartFile excelFile, WbsTree wbsTree) {
|
|
|
|
+ String canonicalPath = null;
|
|
|
|
+ try {
|
|
|
|
+ //解析excel
|
|
|
|
+ File file = WbsExcelBatchUtil.convert(excelFile);
|
|
|
|
+ canonicalPath = file.getCanonicalPath();
|
|
|
|
+ WbsExcelBatchUtil excelUtil = new WbsExcelBatchUtil();
|
|
|
|
+ ArrayList<Map<String, String>> result = excelUtil.readExcelToObj(canonicalPath);
|
|
|
|
+ List<Map<String, String>> maps = WbsExcelBatchUtil.removeRepeatMapByKey(result, "表名");
|
|
|
|
+ assert maps != null;
|
|
|
|
+ //创建表单,获取Id、deptName、initTableName集合
|
|
|
|
+ List<WbsTreeBatchImportDTO> list = new ArrayList<>();
|
|
|
|
+ for (Map<String, String> map : maps) {
|
|
|
|
+ String deptName = map.get("表名");
|
|
|
|
+ if (deptName.length() > 100 || deptName.length() < 1) {
|
|
|
|
+ throw new ServiceException("表名长度错误,输入范围1-100个字符长度");
|
|
|
|
+ }
|
|
|
|
+ wbsTree.setWbsId(wbsTree.getWbsId());
|
|
|
|
+ wbsTree.setDeptName(deptName);
|
|
|
|
+ wbsTree.setTableType(getTableType(map.get("表类型")));
|
|
|
|
+ //初始化实体表名
|
|
|
|
+ Long id = SnowFlakeUtil.getId();
|
|
|
|
+ wbsTree.setId(id);
|
|
|
|
+ String initTableName = "m_wbs_form_" + DateUtil.time() + "_" + id.toString();
|
|
|
|
+ wbsTree.setInitTableName(initTableName);
|
|
|
|
+ //创建表单
|
|
|
|
+ submit3(wbsTree);
|
|
|
|
+ //创建对应实体表
|
|
|
|
+ initTable(initTableName);
|
|
|
|
+ //返回信息
|
|
|
|
+ WbsTreeBatchImportDTO wbsTreeBatchImportDTO = new WbsTreeBatchImportDTO();
|
|
|
|
+ wbsTreeBatchImportDTO.setId(id);
|
|
|
|
+ wbsTreeBatchImportDTO.setTableName(deptName);
|
|
|
|
+ wbsTreeBatchImportDTO.setInitTableName(initTableName);
|
|
|
|
+ list.add(wbsTreeBatchImportDTO);
|
|
|
|
+ }
|
|
|
|
+ //创建元素、修改新增对应实体表字段
|
|
|
|
+ list.forEach(i -> {
|
|
|
|
+ for (Map<String, String> map : result) {
|
|
|
|
+ Long elementTableId = i.getId();
|
|
|
|
+ String tableName = i.getTableName();
|
|
|
|
+ String initTableName = i.getInitTableName();
|
|
|
|
+ int keyNumb = 0;
|
|
|
|
+ if (tableName.equals(map.get("表名"))) {
|
|
|
|
+ keyNumb++;
|
|
|
|
+ WbsFormElement wbsFormElement = new WbsFormElement();
|
|
|
|
+ wbsFormElement.setEName(map.get("字段名"));
|
|
|
|
+ String key = "key_" + keyNumb;
|
|
|
|
+ wbsFormElement.setEKey(key);
|
|
|
|
+ wbsFormElement.setFId(String.valueOf(elementTableId));
|
|
|
|
+ wbsFormElement.setELength(getElementLength(map.get("数据类型")));
|
|
|
|
+ wbsFormElement.setEType(getElementType(map.get("数据类型")));
|
|
|
|
+ wbsFormElement.setEInspectionMethod(map.get("计算公式、方法或数值"));
|
|
|
|
+ wbsFormElement.setEAllowDeviation(map.get("允许偏差范围"));
|
|
|
|
+ wbsFormElement.setRemark(map.get("备注"));
|
|
|
|
+ wbsFormElementService.save(wbsFormElement);
|
|
|
|
+ //初始化实体表字段
|
|
|
|
+ baseMapper.alterTableFiled(initTableName,
|
|
|
|
+ wbsFormElement.getEKey(),
|
|
|
|
+ getInitTableFiledType(wbsFormElement.getEType()),
|
|
|
|
+ wbsFormElement.getELength());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ return true;
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } finally {
|
|
|
|
+ File file2 = new File(canonicalPath);
|
|
|
|
+ if (file2.isFile() && file2.exists()) {
|
|
|
|
+ file2.delete();
|
|
|
|
+ System.gc();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Boolean initTable(String tableName) {
|
|
|
|
+ //建表
|
|
|
|
+ Integer row = baseMapper.createTable(tableName);
|
|
|
|
+ if (row >= 0) {
|
|
|
|
+ return true;
|
|
|
|
+ }
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private String getInitTableFiledType(Integer type) {
|
|
|
|
+ switch (type) {
|
|
|
|
+ case 2:
|
|
|
|
+ return "bigint"; //整数
|
|
|
|
+ case 3:
|
|
|
|
+ return "decimal"; //小数
|
|
|
|
+ case 4:
|
|
|
|
+ return "datetime"; //日期
|
|
|
|
+ case 5:
|
|
|
|
+ return "bigint"; //数值
|
|
|
|
+ case 6:
|
|
|
|
+ return "varchar"; //签名
|
|
|
|
+ case 7:
|
|
|
|
+ return "varchar"; //文件
|
|
|
|
+ case 1:
|
|
|
|
+ default:
|
|
|
|
+ return "varchar"; //字符串
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Integer getElementType(String type) {
|
|
|
|
+ switch (type) {
|
|
|
|
+ case "字符串":
|
|
|
|
+ return 1;
|
|
|
|
+ case "整数":
|
|
|
|
+ return 2;
|
|
|
|
+ case "小数":
|
|
|
|
+ return 3;
|
|
|
|
+ case "日期":
|
|
|
|
+ return 4;
|
|
|
|
+ case "数值":
|
|
|
|
+ return 5;
|
|
|
|
+ case "签名":
|
|
|
|
+ return 6;
|
|
|
|
+ case "文件":
|
|
|
|
+ return 7;
|
|
|
|
+ default:
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Integer getElementLength(String type) {
|
|
|
|
+ switch (type) {
|
|
|
|
+ case "字符串":
|
|
|
|
+ case "签名":
|
|
|
|
+ case "文件":
|
|
|
|
+ return 1000;
|
|
|
|
+ case "整数":
|
|
|
|
+ case "数值":
|
|
|
|
+ return 255;
|
|
|
|
+ case "小数":
|
|
|
|
+ return 65;
|
|
|
|
+ case "日期":
|
|
|
|
+ default:
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Integer getTableType(String tableType) {
|
|
|
|
+ switch (tableType) {
|
|
|
|
+ case "检验表":
|
|
|
|
+ return 1;
|
|
|
|
+ case "记录表":
|
|
|
|
+ return 2;
|
|
|
|
+ case "通用表":
|
|
|
|
+ return 3;
|
|
|
|
+ case "监表":
|
|
|
|
+ return 4;
|
|
|
|
+ case "评定表":
|
|
|
|
+ return 5;
|
|
|
|
+ case "测量表":
|
|
|
|
+ return 6;
|
|
|
|
+ case "竣工表":
|
|
|
|
+ return 7;
|
|
|
|
+ case "汇总表":
|
|
|
|
+ return 8;
|
|
|
|
+ case "试验记录表":
|
|
|
|
+ return 9;
|
|
|
|
+ case "试验报告表":
|
|
|
|
+ return 10;
|
|
|
|
+ default:
|
|
|
|
+ return 0;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public List<WbsNodeTableVO> selectByNodeTable(String id) {
|
|
public List<WbsNodeTableVO> selectByNodeTable(String id) {
|
|
//查询节点下的所有表单
|
|
//查询节点下的所有表单
|
|
@@ -164,7 +371,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return wbsFormElements;
|
|
return wbsFormElements;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
private String selectTableIdByTableName(String id) {
|
|
private String selectTableIdByTableName(String id) {
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
queryWrapper.in("id", id);
|
|
queryWrapper.in("id", id);
|
|
@@ -177,7 +383,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return String.valueOf(wbsTree.getId());
|
|
return String.valueOf(wbsTree.getId());
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
@Override
|
|
@Override
|
|
public String importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
|
|
public String importWbsTree(MultipartFile excelFile, WbsTree wbsTreeFu, WbsTree wbsTree1) throws IOException {
|
|
//赋值
|
|
//赋值
|
|
@@ -236,7 +441,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
private WbsTree importTree(WbsTree wbsTreeZi) {
|
|
private WbsTree importTree(WbsTree wbsTreeZi) {
|
|
//查重
|
|
//查重
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
QueryWrapper<WbsTree> queryWrapper = new QueryWrapper<>();
|
|
@@ -318,7 +522,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
private boolean updateData(String ancestors, Long id) {
|
|
private boolean updateData(String ancestors, Long id) {
|
|
Integer row = baseMapper.updateById2(ancestors, id);
|
|
Integer row = baseMapper.updateById2(ancestors, id);
|
|
if (row > 0) {
|
|
if (row > 0) {
|
|
@@ -565,7 +768,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* 获取汉字串拼音首字母,英文字符不变
|
|
* 获取汉字串拼音首字母,英文字符不变
|
|
*
|
|
*
|
|
@@ -637,7 +839,6 @@ public class WbsTreeServiceImpl extends BaseServiceImpl<WbsTreeMapper, WbsTree>
|
|
return rs;
|
|
return rs;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
public int updateByCondition(Long id, String wbsName, Integer status) {
|
|
public int updateByCondition(Long id, String wbsName, Integer status) {
|
|
int row = baseMapper.updateByCondition(id, wbsName, status);
|
|
int row = baseMapper.updateByCondition(id, wbsName, status);
|
|
return row;
|
|
return row;
|