初始代码
This commit is contained in:
825
TemplateCodeVue3/PublicMacro/ControllerMarco.vm
Normal file
825
TemplateCodeVue3/PublicMacro/ControllerMarco.vm
Normal file
@@ -0,0 +1,825 @@
|
||||
#set($mapObject ="Map<String, Object>")
|
||||
## 导入实例信息添加
|
||||
#macro(TemlateDownloadDemo $MapName $Field)
|
||||
#set($key = $Field.config.yunzhupaasKey)
|
||||
#set($mul = $Field.multiple)
|
||||
#set($level = $Field.level)
|
||||
#set($vModelThis = $Field.vModel)
|
||||
#if($Field.beforeVmodel)
|
||||
#set($vModelThis = $Field.beforeVmodel)
|
||||
#end
|
||||
#if($key == "createUser" || $key == "modifyUser" || $key == "createTime" || $key == "modifyTime" || $key == "currOrganize" || $key == "currPosition" || $key == "currDept" || $key == "billRule")
|
||||
${MapName}.put("${vModelThis}", "系统自动生成");
|
||||
#elseif($key == 'organizeSelect')
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:yunzhupaas信息/产品部,yunzhupaas信息/技术部");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:yunzhupaas信息/技术部");
|
||||
#end
|
||||
#elseif($key == "depSelect")
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:产品部/部门编码,技术部/部门编码");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:技术部/部门编码");
|
||||
#end
|
||||
#elseif($key == "posSelect")
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:技术经理/岗位编码,技术员/岗位编码");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:技术员/岗位编码");
|
||||
#end
|
||||
#elseif($key == "userSelect")
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:张三/账号,李四/账号");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:张三/账号");
|
||||
#end
|
||||
#elseif($key == "usersSelect")
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:方方/账号,技术部/部门编码");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:方方/账号");
|
||||
#end
|
||||
#elseif($key == "roleSelect")
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:研发人员/角色编码,测试人员/角色编码");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:研发人员/角色编码");
|
||||
#end
|
||||
#elseif($key == "groupSelect")
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:A分组/分组编码,B分组/分组编码");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:A分组/分组编码");
|
||||
#end
|
||||
#elseif($key == 'datePicker')
|
||||
${MapName}.put("${vModelThis}", "例: ${Field.format}");
|
||||
#elseif($key == 'timePicker')
|
||||
${MapName}.put("${vModelThis}", "例: ${Field.format}");
|
||||
#elseif($key == 'areaSelect')
|
||||
#if($level==0)
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:福建省,广东省");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:福建省");
|
||||
#end
|
||||
#elseif($level==1)
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:福建省/莆田市,广东省/广州市");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:福建省/莆田市");
|
||||
#end
|
||||
#elseif($level==2)
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:福建省/莆田市/城厢区,广东省/广州市/荔湾区");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:福建省/莆田市/城厢区");
|
||||
#end
|
||||
#elseif($level==3)
|
||||
#if($mul)
|
||||
${MapName}.put("${vModelThis}", "例:福建省/莆田市/城厢区/霞林街道,广东省/广州市/荔湾区/沙面街道");
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "例:福建省/莆田市/城厢区/霞林街道");
|
||||
#end
|
||||
#end
|
||||
#else
|
||||
${MapName}.put("${vModelThis}", "");
|
||||
#end
|
||||
#end
|
||||
## 主子副,entity转成map isGetInfo是否不转换数据详情 isDetail 是否转换数据的详情
|
||||
#macro(EntityToMap)
|
||||
${mapObject} ${name}Map=JsonUtil.entityToMap(entity);
|
||||
${name}Map.put("id", ${name}Map.get("${pKeyNameOriginal}"));
|
||||
//副表数据
|
||||
#foreach($child in ${columnTableHandle})
|
||||
${child.modelUpName}Entity ${child.modelLowName}Entity = entity.get${child.modelUpName}();
|
||||
if(ObjectUtil.isNotEmpty(${child.modelLowName}Entity)){
|
||||
${mapObject} ${child.modelLowName}Map=JsonUtil.entityToMap(${child.modelLowName}Entity);
|
||||
for(String key:${child.modelLowName}Map.keySet()){
|
||||
${name}Map.put("yunzhupaas_${child.tableName}_yunzhupaas_"+key,${child.modelLowName}Map.get(key));
|
||||
}
|
||||
}
|
||||
#end
|
||||
//子表数据
|
||||
#foreach($grid in ${childTableHandle})
|
||||
List<${grid.aliasUpName}Entity> ${grid.aliasLowName}List = entity.get${grid.aliasUpName}();
|
||||
${name}Map.put("${grid.tableModel}",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(${grid.aliasLowName}List)));
|
||||
${name}Map.put("${grid.aliasLowName}List",JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(${grid.aliasLowName}List)));
|
||||
#end
|
||||
#end
|
||||
###########################以上为通用宏,以下是controller方法#################################
|
||||
## 获取列表信息
|
||||
#macro(GetList)
|
||||
/**
|
||||
* 列表
|
||||
*
|
||||
* @param ${name}Pagination
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "获取列表")
|
||||
@PostMapping("/getList")
|
||||
public ActionResult list(@RequestBody ${Name}Pagination ${name}Pagination)throws Exception{
|
||||
List<${table.entityName}> list= ${serviceName}.getList(${name}Pagination);
|
||||
List<${mapObject}> realList=new ArrayList<>();
|
||||
for (${Name}Entity entity : list) {
|
||||
#EntityToMap()
|
||||
realList.add(${name}Map);
|
||||
}
|
||||
//数据转换
|
||||
boolean isPc = "pc".equals(ServletUtil.getHeader("yunzhupaas-origin" ));
|
||||
realList = generaterSwapUtil.swapDataList(realList, ${Name}Constant.getFormData(), ${Name}Constant.getColumnData(), ${name}Pagination.getModuleId(),isPc?${lineEdit}:false);
|
||||
|
||||
#if($isFlow)
|
||||
//流程状态添加
|
||||
generaterSwapUtil.getFlowStatus(realList);
|
||||
#end
|
||||
#if($treeTable || $groupTable)
|
||||
if(isPc){
|
||||
//分组和树形的树形数据转换
|
||||
realList = generaterSwapUtil.swapDataList(realList, ${Name}Constant.getColumnData(), "${peimaryKeyname}");
|
||||
}
|
||||
#end
|
||||
//返回对象
|
||||
PageListVO vo = new PageListVO();
|
||||
vo.setList(realList);
|
||||
PaginationVO page = JsonUtil.getJsonToBean(${name}Pagination, PaginationVO.class);
|
||||
vo.setPagination(page);
|
||||
return ActionResult.success(vo);
|
||||
}
|
||||
#end
|
||||
## 新增
|
||||
#macro(CreateMethod $leiName)
|
||||
/**
|
||||
* 创建
|
||||
*
|
||||
* @param ${name}Form
|
||||
* @return
|
||||
*/
|
||||
@PostMapping(#if($isFlow)"/{id}"#end)
|
||||
@Operation(summary = "创建")
|
||||
public ActionResult create(#if($isFlow)@PathVariable("id") String id, #end@RequestBody @Valid ${Name}Form ${name}Form) {
|
||||
String b = ${serviceName}.checkForm(${name}Form,0);
|
||||
if (StringUtil.isNotEmpty(b)){
|
||||
return ActionResult.fail(b );
|
||||
}
|
||||
try{
|
||||
${name}Service.saveOrUpdate(${name}Form,#if($isFlow) id #else null #end,true);
|
||||
}catch(Exception e){
|
||||
log.error("【${leiName}创建接口异常】参数:{}", ${name}Form, e);
|
||||
return ActionResult.fail(MsgCode.FA028.get());
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU001.get());
|
||||
}
|
||||
#end
|
||||
## 编辑
|
||||
#macro(UpdateMethod $leiName)
|
||||
/**
|
||||
* 编辑
|
||||
* @param id
|
||||
* @param ${name}Form
|
||||
* @return
|
||||
*/
|
||||
@PutMapping("/{id}")
|
||||
@Operation(summary = "更新")
|
||||
public ActionResult update(@PathVariable("id") String id,@RequestBody @Valid ${Name}Form ${name}Form,
|
||||
@RequestParam(value = "isImport", required = false) boolean isImport){
|
||||
${Name}Entity entity= ${name}Service.getInfo(id);
|
||||
if(entity!=null){
|
||||
${name}Form.set${peimaryKeyName}(String.valueOf(entity.get${peimaryKeyName}()));
|
||||
|
||||
if (!isImport) {
|
||||
String b = ${name}Service.checkForm(${name}Form,1);
|
||||
if (StringUtil.isNotEmpty(b)){
|
||||
return ActionResult.fail(b );
|
||||
}
|
||||
}
|
||||
|
||||
try{
|
||||
${name}Service.saveOrUpdate(${name}Form,id,false);
|
||||
}catch (DataException e1){
|
||||
return ActionResult.fail(e1.getMessage());
|
||||
}catch(Exception e){
|
||||
log.error("【${leiName}编辑接口异常】参数:{}", ${name}Form, e);
|
||||
return ActionResult.fail(MsgCode.FA029.get());
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU004.get());
|
||||
}else{
|
||||
return ActionResult.fail(MsgCode.FA002.get());
|
||||
}
|
||||
}
|
||||
#end
|
||||
## 获取详情(不转数据)
|
||||
#macro(GetInfoMethod)
|
||||
/**
|
||||
* 获取详情(编辑页)
|
||||
* 编辑页面使用-不转换数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "信息")
|
||||
@GetMapping("/{id}")
|
||||
public ActionResult info(@PathVariable("id") String id){
|
||||
${Name}Entity entity= ${name}Service.getInfo(id);
|
||||
if(entity==null){
|
||||
return ActionResult.fail(MsgCode.FA001.get());
|
||||
}
|
||||
##
|
||||
#EntityToMap()
|
||||
${name}Map = generaterSwapUtil.swapDataForm(${name}Map,${Name}Constant.getFormData(),${Name}Constant.TABLEFIELDKEY,${Name}Constant.TABLERENAMES);
|
||||
return ActionResult.success(${name}Map);
|
||||
}
|
||||
#end
|
||||
## 详情(转换数据)
|
||||
#macro(GetDetailMethod)
|
||||
/**
|
||||
* 表单信息(详情页)
|
||||
* 详情页面使用-转换数据
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "表单信息(详情页)")
|
||||
@GetMapping("/detail/{id}")
|
||||
public ActionResult detailInfo(@PathVariable("id") String id){
|
||||
${Name}Entity entity= ${name}Service.getInfo(id);
|
||||
if(entity==null){
|
||||
return ActionResult.fail(MsgCode.FA001.get());
|
||||
}
|
||||
#EntityToMap()
|
||||
boolean isPc = "pc".equals(ServletUtil.getHeader("yunzhupaas-origin" ));
|
||||
${name}Map = generaterSwapUtil.swapDataDetail(${name}Map,${Name}Constant.getFormData(),"${VisualDevId}",isPc?${lineEdit}:false);
|
||||
//子表数据
|
||||
#foreach($grid in ${childTableHandle})
|
||||
${name}Map.put("${grid.aliasLowName}List",${name}Map.get("${grid.tableModel}"));
|
||||
#end
|
||||
return ActionResult.success(${name}Map);
|
||||
}
|
||||
#end
|
||||
## 删除
|
||||
#macro(DeleteMethod)
|
||||
/**
|
||||
* 删除
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "删除")
|
||||
@DeleteMapping("/{id}")
|
||||
#if(${DS})
|
||||
@DSTransactional
|
||||
#else
|
||||
@Transactional
|
||||
#end
|
||||
public ActionResult delete(@PathVariable("id") String id,@RequestParam(name = "forceDel",defaultValue = "false") boolean forceDel) throws Exception{
|
||||
${Name}Entity entity= ${name}Service.getInfo(id);
|
||||
if(entity!=null){
|
||||
#if($isFlow)
|
||||
if(!forceDel){
|
||||
String errMsg = generaterSwapUtil.deleteFlowTask(entity.getFlowTaskId());
|
||||
if (StringUtil.isNotEmpty(errMsg)) {
|
||||
throw new DataException(errMsg);
|
||||
}
|
||||
}
|
||||
#end
|
||||
#if($logicalDelete)
|
||||
//假删除
|
||||
entity.setDeleteMark(1);
|
||||
entity.setDeleteUserId(userProvider.get().getUserId());
|
||||
entity.setDeleteTime(new Date());
|
||||
${name}Service.setIgnoreLogicDelete().updateById(entity);
|
||||
#else
|
||||
//主表数据删除
|
||||
${name}Service.delete(entity);
|
||||
## 副表
|
||||
#if(${columnTableHandle.size()}>0)
|
||||
#foreach($cl in ${columnTableHandle})
|
||||
QueryWrapper<${cl.modelUpName}Entity> queryWrapper${cl.modelUpName}=new QueryWrapper<>();
|
||||
queryWrapper${cl.modelUpName}.lambda().eq(${cl.modelUpName}Entity::get${cl.relationUpField},entity.get${cl.mainUpKey}());
|
||||
//副表数据删除
|
||||
${cl.modelLowName}Service.remove(queryWrapper${cl.modelUpName});
|
||||
#end
|
||||
#end
|
||||
## 子表
|
||||
#foreach($tableModel in ${childTableHandle})
|
||||
#set($mainFeild="${tableModel.relationField}")
|
||||
#set($MainFeild="${tableModel.relationField.substring(0,1).toUpperCase()}${tableModel.relationField.substring(1)}")
|
||||
#set($childFeild="${tableModel.tablefield}")
|
||||
#set($ChildFeild="${tableModel.tablefield.substring(0,1).toUpperCase()}${tableModel.tablefield.substring(1)}")
|
||||
QueryWrapper<${tableModel.aliasUpName}Entity> queryWrapper${tableModel.aliasUpName}=new QueryWrapper<>();
|
||||
queryWrapper${tableModel.aliasUpName}.lambda().eq(${tableModel.aliasUpName}Entity::get${ChildFeild},entity.get${MainFeild}());
|
||||
//子表数据删除
|
||||
${tableModel.aliasLowName}Service.remove(queryWrapper${tableModel.aliasUpName});
|
||||
#end
|
||||
#end
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU003.get());
|
||||
}
|
||||
#end
|
||||
## 批量删除
|
||||
#macro(BatchRemoveMethod)
|
||||
/**
|
||||
* 批量删除
|
||||
* @param obj
|
||||
* @return
|
||||
*/
|
||||
@DeleteMapping("/batchRemove")
|
||||
#if(${DS})
|
||||
@DSTransactional
|
||||
#else
|
||||
@Transactional
|
||||
#end
|
||||
@Operation(summary = "批量删除")
|
||||
public ActionResult batchRemove(@RequestBody Object obj){
|
||||
$mapObject objectMap = JsonUtil.entityToMap(obj);
|
||||
List<String> idList = JsonUtil.getJsonToList(objectMap.get("ids"), String.class);
|
||||
String errInfo = "";
|
||||
List<String> successList = new ArrayList<>();
|
||||
for (String allId : idList){
|
||||
try {
|
||||
this.delete(allId,false);
|
||||
successList.add(allId);
|
||||
} catch (Exception e) {
|
||||
errInfo = e.getMessage();
|
||||
}
|
||||
}
|
||||
if (successList.size() == 0 && StringUtil.isNotEmpty(errInfo)){
|
||||
return ActionResult.fail(errInfo);
|
||||
}
|
||||
return ActionResult.success(MsgCode.SU003.get());
|
||||
}
|
||||
#end
|
||||
## 批量打印
|
||||
#macro(BatchPrintMethod)
|
||||
#end
|
||||
## 导入
|
||||
#macro(UploaderMethod)
|
||||
@Operation(summary = "上传文件")
|
||||
@PostMapping("/Uploader")
|
||||
public ActionResult<Object> Uploader() {
|
||||
List<MultipartFile> list = UpUtil.getFileAll();
|
||||
MultipartFile file = list.get(0);
|
||||
if (file.getOriginalFilename().endsWith(".xlsx") || file.getOriginalFilename().endsWith(".xls")) {
|
||||
String filePath = XSSEscape.escape(configValueUtil.getTemporaryFilePath());
|
||||
String fileName = XSSEscape.escape(RandomUtil.uuId() + "." + UpUtil.getFileType(file));
|
||||
//上传文件
|
||||
#if(${isCloud}=="cloud")
|
||||
FileInfo fileInfo = fileUploadApi.uploadFile(file, filePath, fileName);
|
||||
#else
|
||||
FileInfo fileInfo = FileUploadUtils.uploadFile(file, filePath, fileName);
|
||||
#end
|
||||
DownloadVO vo = DownloadVO.builder().build();
|
||||
vo.setName(fileInfo.getFilename());
|
||||
return ActionResult.success(vo);
|
||||
} else {
|
||||
return ActionResult.fail(MsgCode.FA017.get());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 模板下载
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "模板下载")
|
||||
@GetMapping("/TemplateDownload")
|
||||
public ActionResult<DownloadVO> TemplateDownload(@RequestParam("menuId") String menuId){
|
||||
DownloadVO vo = DownloadVO.builder().build();
|
||||
UserInfo userInfo = userProvider.get();
|
||||
String menuFullName = generaterSwapUtil.getMenuName(menuId);
|
||||
//主表对象
|
||||
List<ExcelExportEntity> entitys = new ArrayList<>();
|
||||
List<String> selectKeys = new ArrayList<>();
|
||||
//以下添加字段
|
||||
## 导入字段添加到entity
|
||||
#foreach($fieldModel in $importFields)
|
||||
#set($config = $fieldModel.config)
|
||||
#set($vModel = ${fieldModel.vModel})
|
||||
#if($vModel.toLowerCase().startsWith("tablefield"))
|
||||
//${vModel}子表对象
|
||||
ExcelExportEntity ${vModel}ExcelEntity = new ExcelExportEntity("${fieldModel.label}(${vModel})","${vModel}");
|
||||
List<ExcelExportEntity> ${vModel}ExcelEntityList = new ArrayList<>();
|
||||
#foreach($child in ${fieldModel.childList})
|
||||
#set($itemFields =$child.fieLdsModel)
|
||||
${vModel}ExcelEntityList.add(new ExcelExportEntity("${itemFields.config.label}($vModel-${itemFields.vModel})" ,"${itemFields.vModel}"));
|
||||
selectKeys.add("$vModel-${itemFields.vModel}");
|
||||
#end
|
||||
${vModel}ExcelEntity.setList(${vModel}ExcelEntityList);
|
||||
if(${vModel}ExcelEntityList.size() > 0){
|
||||
entitys.add(${vModel}ExcelEntity);
|
||||
}
|
||||
#else
|
||||
entitys.add(new ExcelExportEntity("${config.label}($vModel)" ,"$vModel"));
|
||||
selectKeys.add("${vModel}");
|
||||
#end
|
||||
#end
|
||||
ExcelModel excelModel = generaterSwapUtil.getExcelParams(${Name}Constant.getFormData(),selectKeys);
|
||||
List<${mapObject}> list = new ArrayList<>();
|
||||
list.add(excelModel.getDataMap());
|
||||
|
||||
ExportParams exportParams = new ExportParams(null, menuFullName + "模板");
|
||||
exportParams.setStyle(ExcelExportStyler.class);
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
try{
|
||||
@Cleanup Workbook workbook = new HSSFWorkbook();
|
||||
if (entitys.size()>0){
|
||||
if (list.size()==0){
|
||||
list.add(new HashMap<>());
|
||||
}
|
||||
//复杂表头-表头和数据处理
|
||||
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(${Name}Constant.getColumnData(), ColumnDataModel.class);
|
||||
List<HeaderModel> complexHeaderList = columnDataModel.getComplexHeaderList();
|
||||
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
|
||||
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList, false);
|
||||
list = VisualUtils.complexHeaderDataHandel(list, complexHeaderList, false);
|
||||
}
|
||||
## excel处理
|
||||
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);
|
||||
ExcelHelper helper = new ExcelHelper();
|
||||
helper.init(workbook, exportParams, entitys, excelModel);
|
||||
helper.doPreHandle();
|
||||
helper.doPostHandle();
|
||||
}
|
||||
String fileName = menuFullName + "导入模板.xls";
|
||||
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
|
||||
#if(${isCloud}=="cloud")
|
||||
String temporaryFilePath = fileApi.getPath(FileTypeConstant.TEMPORARY);
|
||||
FileInfo fileInfo = fileUploadApi.uploadFile(multipartFile, temporaryFilePath, fileName);
|
||||
#else
|
||||
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
|
||||
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
|
||||
#end
|
||||
vo.setName(fileInfo.getFilename());
|
||||
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
|
||||
} catch (Exception e) {
|
||||
log.error("模板信息导出Excel错误:{}", e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return ActionResult.success(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入预览
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "导入预览" )
|
||||
@GetMapping("/ImportPreview")
|
||||
public ActionResult<${mapObject}> ImportPreview(String fileName) throws Exception {
|
||||
${mapObject} headAndDataMap = new HashMap<>(2);
|
||||
#if(${isCloud}=="cloud")
|
||||
String filePath = fileApi.getLocalBasePath() + configValueUtil.getTemporaryFilePath();
|
||||
UploadFileModel uploadFileModel =new UploadFileModel();
|
||||
uploadFileModel.setFolderName(filePath);
|
||||
uploadFileModel.setObjectName(fileName);
|
||||
fileUploadApi.downToLocal(uploadFileModel);
|
||||
#else
|
||||
String filePath = FileUploadUtils.getLocalBasePath() + configValueUtil.getTemporaryFilePath();
|
||||
FileUploadUtils.downLocal(configValueUtil.getTemporaryFilePath(), filePath, fileName);
|
||||
#end
|
||||
File temporary = new File(XSSEscape.escapePath(filePath + fileName));
|
||||
#if($importHasChildren || ${complexFieldList.size()} > 0)
|
||||
int headerRowIndex = 2;
|
||||
#else
|
||||
int headerRowIndex = 1;
|
||||
#end
|
||||
ImportParams params = new ImportParams();
|
||||
params.setTitleRows(0);
|
||||
params.setHeadRows(headerRowIndex);
|
||||
params.setNeedVerify(true);
|
||||
try {
|
||||
InputStream inputStream = ExcelUtil.solveOrginTitle(temporary, headerRowIndex);
|
||||
List<Map> excelDataList = ExcelUtil.importExcelByInputStream(inputStream, 0, headerRowIndex, Map.class);
|
||||
//数据超过1000条
|
||||
if(excelDataList != null && excelDataList.size() > 1000) {
|
||||
return ActionResult.fail(MsgCode.ETD117.get());
|
||||
}
|
||||
|
||||
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(${Name}Constant.getColumnData(), ColumnDataModel.class);
|
||||
UploaderTemplateModel uploaderTemplateModel = JsonUtil.getJsonToBean(columnDataModel.getUploaderTemplateJson(), UploaderTemplateModel.class);
|
||||
List<String> selectKey = uploaderTemplateModel.getSelectKey();
|
||||
//子表合并
|
||||
List<$mapObject> results = FormExecelUtils.dataMergeChildTable(excelDataList,selectKey);
|
||||
// 导入字段
|
||||
List<ExcelImFieldModel> columns = new ArrayList<>();
|
||||
## 添加导入所有字段信息
|
||||
#foreach($fieldModel in $importFieldsNew)
|
||||
#set($config = $fieldModel.config)
|
||||
#set($vModel = ${fieldModel.vModel})
|
||||
#if($vModel.toLowerCase().startsWith("tablefield"))
|
||||
#if(${fieldModel.childList.size()}>0)
|
||||
//${vModel}子表对象
|
||||
List<ExcelImFieldModel> ${vModel}columns = new ArrayList<>();
|
||||
#foreach($child in ${fieldModel.childList})
|
||||
#set($itemFields =$child.fieLdsModel)
|
||||
${vModel}columns.add(new ExcelImFieldModel("${itemFields.vModel}" ,"#if(${itemFields.config.required})*#end${itemFields.config.label}"));
|
||||
#end
|
||||
columns.add(new ExcelImFieldModel("${vModel}","${fieldModel.label}","table",${vModel}columns));
|
||||
#end
|
||||
#elseif($vModel.contains("complexHeader"))
|
||||
#set($item = ${fieldModel})
|
||||
#if(${item.childColumns.size()}>0 && ${item.uploadFieldList.size()}>0)
|
||||
//${item.fullName} 复杂表头对象
|
||||
List<ExcelImFieldModel> ${item.id}columns = new ArrayList<>();
|
||||
#foreach($itemFields in ${item.uploadFieldList})
|
||||
${item.id}columns.add(new ExcelImFieldModel("${itemFields.vModel}" ,"#if(${itemFields.config.required})*#end${itemFields.label}"));
|
||||
#end
|
||||
columns.add(new ExcelImFieldModel("${item.id}","${item.fullName}","complexHeader",${item.id}columns));
|
||||
#end
|
||||
#else
|
||||
columns.add(new ExcelImFieldModel("${vModel}","${config.label}","${config.yunzhupaasKey}"));
|
||||
#end
|
||||
#end
|
||||
headAndDataMap.put("dataRow" , results);
|
||||
headAndDataMap.put("headerRow" , JsonUtil.getJsonToList(JsonUtil.getListToJsonArray(columns)));
|
||||
} catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return ActionResult.fail(MsgCode.VS407.get());
|
||||
}
|
||||
return ActionResult.success(headAndDataMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "导入数据" )
|
||||
@PostMapping("/ImportData")
|
||||
public ActionResult<ExcelImportModel> ImportData(@RequestBody VisualImportModel visualImportModel) throws Exception {
|
||||
List<$mapObject> listData = visualImportModel.getList();
|
||||
ImportFormCheckUniqueModel uniqueModel = new ImportFormCheckUniqueModel();
|
||||
uniqueModel.setDbLinkId(${Name}Constant.DBLINKID);
|
||||
uniqueModel.setUpdate(Objects.equals("${importType}", "2"));
|
||||
#if($isFlow)uniqueModel.setFlowId(visualImportModel.getFlowId()); #end
|
||||
|
||||
Map<String,String> tablefieldkey = new HashMap<>();
|
||||
for(String key:${Name}Constant.TABLEFIELDKEY.keySet()){
|
||||
tablefieldkey.put(key,${Name}Constant.TABLERENAMES.get(${Name}Constant.TABLEFIELDKEY.get(key)));
|
||||
}
|
||||
ExcelImportModel excelImportModel = generaterSwapUtil.importData(${Name}Constant.getFormData(),listData,uniqueModel, tablefieldkey,${Name}Constant.getTableList());
|
||||
List<ImportDataModel> importDataModel = uniqueModel.getImportDataModel();
|
||||
for (ImportDataModel model : importDataModel) {
|
||||
String id = model.getId();
|
||||
$mapObject result = model.getResultData();
|
||||
if(StringUtil.isNotEmpty(id)){
|
||||
update(id, JsonUtil.getJsonToBean(result,${Name}Form.class), true);
|
||||
}else {
|
||||
create(#if($isFlow)RandomUtil.uuId(),#end JsonUtil.getJsonToBean(result,${Name}Form.class));
|
||||
}
|
||||
}
|
||||
return ActionResult.success(excelImportModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出异常报告
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "导出异常报告")
|
||||
@PostMapping("/ImportExceptionData")
|
||||
public ActionResult<DownloadVO> ImportExceptionData(@RequestBody VisualImportModel visualImportModel) {
|
||||
DownloadVO vo = DownloadVO.builder().build();
|
||||
UserInfo userInfo = userProvider.get();
|
||||
String menuFullName = generaterSwapUtil.getMenuName(visualImportModel.getMenuId());
|
||||
//主表对象
|
||||
List<ExcelExportEntity> entitys = new ArrayList<>();
|
||||
entitys.add(new ExcelExportEntity("异常原因", "errorsInfo",30));
|
||||
List<String> selectKeys = new ArrayList<>();
|
||||
//以下添加字段
|
||||
## 导入字段添加到entity
|
||||
#foreach($fieldModel in $importFields)
|
||||
#set($config = $fieldModel.config)
|
||||
#set($vModel = ${fieldModel.vModel})
|
||||
#if($vModel.toLowerCase().startsWith("tablefield"))
|
||||
//${vModel}子表对象
|
||||
ExcelExportEntity ${vModel}ExcelEntity = new ExcelExportEntity("${fieldModel.label}(${vModel})","${vModel}");
|
||||
List<ExcelExportEntity> ${vModel}ExcelEntityList = new ArrayList<>();
|
||||
#foreach($child in ${fieldModel.childList})
|
||||
#set($itemFields =$child.fieLdsModel)
|
||||
${vModel}ExcelEntityList.add(new ExcelExportEntity("${itemFields.config.label}($vModel-${itemFields.vModel})" ,"${itemFields.vModel}"));
|
||||
selectKeys.add("$vModel-${itemFields.vModel}");
|
||||
#end
|
||||
${vModel}ExcelEntity.setList(${vModel}ExcelEntityList);
|
||||
entitys.add(${vModel}ExcelEntity);
|
||||
#else
|
||||
entitys.add(new ExcelExportEntity("${config.label}($vModel)" ,"$vModel"));
|
||||
selectKeys.add("${vModel}");
|
||||
#end
|
||||
#end
|
||||
ExcelModel excelModel = generaterSwapUtil.getExcelParams(${Name}Constant.getFormData(),selectKeys);
|
||||
List<${mapObject}> list = new ArrayList<>();
|
||||
list.addAll(visualImportModel.getList());
|
||||
|
||||
ExportParams exportParams = new ExportParams(null, menuFullName + "模板");
|
||||
exportParams.setStyle(ExcelExportStyler.class);
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
exportParams.setFreezeCol(1);
|
||||
try{
|
||||
@Cleanup Workbook workbook = new HSSFWorkbook();
|
||||
if (entitys.size()>0){
|
||||
if (list.size()==0){
|
||||
list.add(new HashMap<>());
|
||||
}
|
||||
//复杂表头-表头和数据处理
|
||||
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(${Name}Constant.getColumnData(), ColumnDataModel.class);
|
||||
List<HeaderModel> complexHeaderList = columnDataModel.getComplexHeaderList();
|
||||
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
|
||||
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList, false);
|
||||
list = VisualUtils.complexHeaderDataHandel(list, complexHeaderList, false);
|
||||
}
|
||||
|
||||
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, list);
|
||||
ExcelHelper helper = new ExcelHelper();
|
||||
helper.init(workbook, exportParams, entitys, excelModel);
|
||||
helper.doPreHandle();
|
||||
helper.doPostHandle();
|
||||
}
|
||||
|
||||
String fileName = menuFullName + "错误报告_" + DateUtil.dateNow("yyyyMMddHHmmss") + ".xls";
|
||||
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
|
||||
#if(${isCloud}=="cloud")
|
||||
String temporaryFilePath = fileApi.getPath(FileTypeConstant.TEMPORARY);
|
||||
FileInfo fileInfo = fileUploadApi.uploadFile(multipartFile, temporaryFilePath, fileName);
|
||||
#else
|
||||
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
|
||||
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
|
||||
#end
|
||||
vo.setName(fileInfo.getFilename());
|
||||
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return ActionResult.success(vo);
|
||||
}
|
||||
#end
|
||||
## 导出
|
||||
#macro(ExportMethod)
|
||||
/**
|
||||
* 导出Excel
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Operation(summary = "导出Excel")
|
||||
@PostMapping("/Actions/Export")
|
||||
public ActionResult Export(@RequestBody ${Name}Pagination ${name}Pagination) throws IOException {
|
||||
if (StringUtil.isEmpty(${name}Pagination.getSelectKey())){
|
||||
return ActionResult.fail(MsgCode.IMP011.get());
|
||||
}
|
||||
List<${table.entityName}> list= ${serviceName}.getList(${name}Pagination);
|
||||
List<${mapObject}> realList=new ArrayList<>();
|
||||
for (${Name}Entity entity : list) {
|
||||
#EntityToMap()
|
||||
realList.add(${name}Map);
|
||||
}
|
||||
//数据转换
|
||||
realList = generaterSwapUtil.swapDataList(realList, ${Name}Constant.getFormData(), ${Name}Constant.getColumnData(), ${name}Pagination.getModuleId(),${lineEdit});
|
||||
String[]keys=!StringUtil.isEmpty(${name}Pagination.getSelectKey())?${name}Pagination.getSelectKey():new String[0];
|
||||
UserInfo userInfo=userProvider.get();
|
||||
String menuFullName = generaterSwapUtil.getMenuName(${name}Pagination.getMenuId());
|
||||
|
||||
#if(${isCloud}=="cloud")
|
||||
DownloadVO vo=this.creatModelExcel(fileApi.getPath(FileTypeConstant.TEMPORARY),realList,keys,userInfo,menuFullName);
|
||||
#else
|
||||
DownloadVO vo=this.creatModelExcel(configValueUtil.getTemporaryFilePath(),realList,keys,userInfo,menuFullName);
|
||||
#end
|
||||
return ActionResult.success(vo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出表格方法
|
||||
*/
|
||||
public DownloadVO creatModelExcel(String path,List<${mapObject}>list,String[]keys,UserInfo userInfo,String menuFullName){
|
||||
DownloadVO vo=DownloadVO.builder().build();
|
||||
List<ExcelExportEntity> entitys=new ArrayList<>();
|
||||
if(keys.length>0){
|
||||
## 子表对象
|
||||
#foreach($cl in $childTableHandle)
|
||||
ExcelExportEntity ${cl.tableModel}ExcelEntity = new ExcelExportEntity("${cl.label}(${cl.tableModel})","${cl.tableModel}");
|
||||
List<ExcelExportEntity> ${cl.tableModel}List = new ArrayList<>();
|
||||
#end
|
||||
#set($lineEditName = "#if(${lineEdit})_name#end")
|
||||
for(String key:keys){
|
||||
switch(key){
|
||||
#if($columnListSize.size()>0)
|
||||
## 主表
|
||||
#foreach($fieldModel in ${mastTableHandle})
|
||||
#set($config = $fieldModel.config)
|
||||
#set($vModel = ${fieldModel.vModel})
|
||||
#if($vModel)
|
||||
case "${vModel}" :
|
||||
entitys.add(new ExcelExportEntity("${config.label}" ,"${vModel}${lineEditName}"));
|
||||
break;
|
||||
#end
|
||||
#end
|
||||
## 副表
|
||||
#foreach($clid in $columnTableHandle)
|
||||
#set($fieLdsModelList = $clid.fieLdsModelList)
|
||||
#foreach($cf in $fieLdsModelList)
|
||||
#set($field = ${cf.field})
|
||||
#if($field)
|
||||
#set($label = $cf.mastTable.fieLdsModel.config.label)
|
||||
#set($lowName= ${cf.table.toLowerCase()})
|
||||
case "${cf.vModel}" :
|
||||
entitys.add(new ExcelExportEntity("${label}" ,"${cf.vModel}${lineEditName}"));
|
||||
break;
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
## 子表
|
||||
#foreach($cl in $childTableHandle)
|
||||
#set($clForm = $cl.childList)
|
||||
#foreach($clField in $clForm)
|
||||
#set($clForm = $clField.fieLdsModel)
|
||||
#if($!{clField.fieLdsModel.vModel})
|
||||
case "${cl.tableModel}-${clField.fieLdsModel.vModel}":
|
||||
${cl.tableModel}List.add(new ExcelExportEntity("${clField.fieLdsModel.config.label}" ,"${clField.fieLdsModel.vModel}${lineEditName}"));
|
||||
break;
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
default:
|
||||
break;
|
||||
#end
|
||||
}
|
||||
}
|
||||
#foreach($cl in $childTableHandle)
|
||||
if(${cl.tableModel}List.size() > 0){
|
||||
${cl.tableModel}ExcelEntity.setList(${cl.tableModel}List);
|
||||
entitys.add(${cl.tableModel}ExcelEntity);
|
||||
}
|
||||
#end
|
||||
}
|
||||
|
||||
ExportParams exportParams = new ExportParams(null, "表单信息");
|
||||
exportParams.setType(ExcelType.XSSF);
|
||||
try{
|
||||
@Cleanup Workbook workbook = new HSSFWorkbook();
|
||||
if (entitys.size()>0){
|
||||
if (list.size()==0){
|
||||
list.add(new HashMap<>());
|
||||
}
|
||||
//去除空数据
|
||||
List<$mapObject> dataList = new ArrayList<>();
|
||||
for ($mapObject map : list) {
|
||||
int i = 0;
|
||||
for (String key : keys) {
|
||||
//子表
|
||||
if (key.toLowerCase().startsWith("tablefield")) {
|
||||
String tableField = key.substring(0, key.indexOf("-" ));
|
||||
String field = key.substring(key.indexOf("-" ) + 1);
|
||||
Object o = map.get(tableField);
|
||||
if (o != null) {
|
||||
List<$mapObject> childList = (List<$mapObject>) o;
|
||||
for ($mapObject childMap : childList) {
|
||||
if (childMap.get(field) != null) {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Object o = map.get(key);
|
||||
if (o != null) {
|
||||
i++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (i > 0) {
|
||||
dataList.add(map);
|
||||
}
|
||||
}
|
||||
List<ExcelExportEntity> mergerEntitys = new ArrayList<>(entitys);
|
||||
List<$mapObject> mergerList=new ArrayList<>(dataList);
|
||||
//复杂表头-表头和数据处理
|
||||
ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(${Name}Constant.getColumnData(), ColumnDataModel.class);
|
||||
List<HeaderModel> complexHeaderList = columnDataModel.getComplexHeaderList();
|
||||
if (!Objects.equals(columnDataModel.getType(), 3) && !Objects.equals(columnDataModel.getType(), 5)) {
|
||||
entitys = VisualUtils.complexHeaderHandel(entitys, complexHeaderList, Objects.equals(columnDataModel.getType(), 4));
|
||||
dataList = VisualUtils.complexHeaderDataHandel(dataList, complexHeaderList, Objects.equals(columnDataModel.getType(), 4));
|
||||
}
|
||||
|
||||
exportParams.setStyle(ExcelExportStyler.class);
|
||||
workbook = ExcelExportUtil.exportExcel(exportParams, entitys, dataList);
|
||||
VisualUtils.mergerVertical(workbook, mergerEntitys, mergerList);
|
||||
## 表格样式添加
|
||||
ExcelModel excelModel = generaterSwapUtil.getExcelParams(${Name}Constant.getFormData(),Arrays.asList(keys));
|
||||
ExcelHelper helper = new ExcelHelper();
|
||||
helper.init(workbook, exportParams, entitys, excelModel);
|
||||
helper.doPreHandle();
|
||||
helper.doPostHandle();
|
||||
}
|
||||
String fileName = menuFullName +"_"+ DateUtil.dateNow("yyyyMMddHHmmss") + ".xls";
|
||||
MultipartFile multipartFile = ExcelUtil.workbookToCommonsMultipartFile(workbook, fileName);
|
||||
#if(${isCloud}=="cloud")
|
||||
String temporaryFilePath = fileApi.getPath(FileTypeConstant.TEMPORARY);
|
||||
FileInfo fileInfo = fileUploadApi.uploadFile(multipartFile, temporaryFilePath, fileName);
|
||||
#else
|
||||
String temporaryFilePath = configValueUtil.getTemporaryFilePath();
|
||||
FileInfo fileInfo = FileUploadUtils.uploadFile(multipartFile, temporaryFilePath, fileName);
|
||||
#end
|
||||
vo.setName(fileInfo.getFilename());
|
||||
vo.setUrl(UploaderUtil.uploaderFile(fileInfo.getFilename() + "#" + "Temporary") + "&name=" + fileName);
|
||||
} catch (Exception e) {
|
||||
log.error("信息导出Excel错误:{}", e.getMessage());
|
||||
e.printStackTrace();
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
#end
|
||||
Reference in New Issue
Block a user