123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823 |
- #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
|