mirror of
https://gitee.com/myxzgzs/boyue_jnpf.git
synced 2025-08-08 23:32:43 +08:00
824 lines
36 KiB
Plaintext
824 lines
36 KiB
Plaintext
![]() |
#set($mapObject ="Map<String, Object>")
|
|||
|
## 导入实例信息添加
|
|||
|
#macro(TemlateDownloadDemo $MapName $Field)
|
|||
|
#set($key = $Field.config.jnpfKey)
|
|||
|
#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}", "例:引迈信息/产品部,引迈信息/技术部");
|
|||
|
#else
|
|||
|
${MapName}.put("${vModelThis}", "例:引迈信息/技术部");
|
|||
|
#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("jnpf_${child.tableName}_jnpf_"+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("jnpf-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)
|
|||
|
/**
|
|||
|
* 创建
|
|||
|
*
|
|||
|
* @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){
|
|||
|
return ActionResult.fail(MsgCode.FA028.get());
|
|||
|
}
|
|||
|
return ActionResult.success(MsgCode.SU001.get());
|
|||
|
}
|
|||
|
#end
|
|||
|
## 编辑
|
|||
|
#macro(UpdateMethod)
|
|||
|
/**
|
|||
|
* 编辑
|
|||
|
* @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){
|
|||
|
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("jnpf-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.jnpfKey}"));
|
|||
|
#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
|