package com.vci.ubcs.code.controller; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.vci.ubcs.code.applyjtcodeservice.vo.BaseModelVO; import com.vci.ubcs.code.dto.*; import com.vci.ubcs.code.dto.datapush.BaseModelDTO; import com.vci.ubcs.code.service.MdmEngineService; import com.vci.ubcs.code.service.MdmIOService; import com.vci.ubcs.code.vo.pagemodel.*; import com.vci.ubcs.flow.core.dto.FlowStatusDTO; import com.vci.ubcs.starter.annotation.VciBusinessLog; import com.vci.ubcs.starter.revision.model.BaseModel; import com.vci.ubcs.starter.revision.model.TreeQueryObject; import com.vci.ubcs.starter.util.LocalFileUtil; import com.vci.ubcs.starter.util.SaveLogUtil; import com.vci.ubcs.starter.web.pagemodel.*; import com.vci.ubcs.starter.web.util.ControllerUtil; import com.vci.ubcs.starter.web.util.LangBaseUtil; import com.vci.ubcs.starter.web.util.VciBaseUtil; import io.swagger.annotations.Api; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springblade.core.tool.api.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; @RestController @RequestMapping("/mdmEngineController") @Api(value = "编码数据管理", tags = "编码数据管理") public class MdmEngineController { /** * 日志 */ private Logger logger = LoggerFactory.getLogger(getClass()); /** * 主数据引擎服务 */ @Autowired private MdmEngineService engineService; /** * 主数据导入导出服务 */ @Autowired private MdmIOService mdmIOService; /** * 日志保存工具类 */ @Autowired private SaveLogUtil saveLogUtil; /** * 下载批量申请的导入模板 * @param codeClassifyOid 分类的主键 * @param response 响应对象 * @throws IOException 抛出异常 */ @GetMapping("/downloadImportExcel") @VciBusinessLog(operateName = "下载批量申请编码的导入模板") public void downloadImportExcel(String codeClassifyOid, HttpServletResponse response) throws IOException{ String excelName = mdmIOService.createImportExcel(codeClassifyOid,false); try { ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //如果出错,把错误信息写到text String msg = LangBaseUtil.getErrorMsg(e); if(StringUtils.isBlank(msg)){ msg = "未知错误"; } ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null); } } /** * 下载批量申请的导入模板 * @param codeClassifyOid 分类的主键 * @param response 响应对象 * @throws IOException 抛出异常 */ @GetMapping("/downloadExcelBatchEdit") @VciBusinessLog(operateName = "下载批量申请编码的导入模板") public void downloadImportExcelBatchEdit(String codeClassifyOid, HttpServletResponse response) throws IOException{ String excelName = mdmIOService.downloadImportExcelBatchEdit(codeClassifyOid); try { ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //如果出错,把错误信息写到text String msg = LangBaseUtil.getErrorMsg(e); if(StringUtils.isBlank(msg)){ msg = "未知错误"; } ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null); } } /** * 导入批量编辑数据 * @param codeClassifyOid 分类的主键 * @param classifyAttr 分类路径使用的属性 * @param file 文件的内容 */ @VciBusinessLog(operateName = "导入批量编辑数据") @PostMapping("/batchImportEdit") public R batchImportEdit(String codeClassifyOid, String classifyAttr,MultipartFile file,HttpServletResponse response) throws Throwable { String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + file.getOriginalFilename(); File file1 = new File(excelFileName); try { file.transferTo(new File(excelFileName)); CodeImProtRusultVO codeImProtRusultVO =mdmIOService.batchImportEdit(codeClassifyOid, classifyAttr,file1); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){ //放到map里 R result = R.fail("导入失败"); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) { String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath()); codeImProtRusultVO.setFileOid(filedUUid); } result.setData(codeImProtRusultVO); return result; }else { return R.success("操作成功!"); } }catch (Throwable e) { logger.error("导入错误",e); String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt"; LocalFileUtil.writeContentToFile(LangBaseUtil.getErrorMsg(e),errorFile); String uuid=ControllerUtil.putErrorFile(errorFile); CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO(); codeImProtRusultVO.setRedisUuid(""); codeImProtRusultVO.setFileOid(uuid); codeImProtRusultVO.setFilePath(errorFile); R r = R.fail("导入失败"); r.setData(codeImProtRusultVO); return r; }finally { file1.delete(); } } /** * 下载批量申请的导入模板 * @param codeClassifyOid 分类的主键 * @param response 响应对象 * @throws IOException 抛出异常 */ @GetMapping("/downloadTopImportExcel") @VciBusinessLog(operateName = "下载批量申请编码的导入模板") public void downloadTopImportExcel(String codeClassifyOid,HttpServletResponse response) throws IOException{ String excelName = mdmIOService.downloadTopImportExcel(codeClassifyOid); try { ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //如果出错,把错误信息写到text String msg = LangBaseUtil.getErrorMsg(e); if(StringUtils.isBlank(msg)){ msg = "未知错误"; } ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null); } } /** * 导出主题库的数据 * @param exportAttrDTO 导出的相关配置 */ @VciBusinessLog(operateName = "导出主题库的数据") @PostMapping("/exportCode") public void exportCode(CodeExportAttrDTO exportAttrDTO, HttpServletResponse response) throws IOException { try { String excelName = mdmIOService.exportCode(exportAttrDTO); ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //如果出错,把错误信息写到text String msg = LangBaseUtil.getErrorMsg(e); String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt"; LocalFileUtil.writeContentToFile(msg,errorFile); ControllerUtil.writeFileToResponse(response,errorFile); } } /** * 下载历史数据导入模板 * @param codeClassifyOid 分类的主键 * @param response 响应对象 * @throws IOException 抛出异常 */ @GetMapping("/downloadImportExcelHistory") @VciBusinessLog(operateName = "下载历史数据导入模板") public void downloadImportExcelHistory(String codeClassifyOid,HttpServletResponse response) throws IOException{ String excelName = mdmIOService.createImportExcel(codeClassifyOid,true); //String excelName = mdmIOService.downloadTopImportExcel(codeClassifyOid); try { ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //如果出错,把错误信息写到text String msg = LangBaseUtil.getErrorMsg(e); if(StringUtils.isBlank(msg)){ msg = "未知错误"; } ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null); } } /** * 批量申请编码的信息(当前分类上批量申请) * @param secDTOList 申请编码的信息,必须包含码段和分类主键的信息 * @param file 文件的内容 */ @VciBusinessLog(operateName = "批量申请编码的信息") @PostMapping("/batchImportCode") public R batchImportCode(String secDTOList, String codeClassifyOid, MultipartFile file, HttpServletResponse response) throws Throwable { CodeOrderDTO orderDTO = new CodeOrderDTO(); orderDTO.setCodeClassifyOid(codeClassifyOid); if(StringUtils.isNotBlank(secDTOList)){ List secDTOS = JSONObject.parseArray(secDTOList, CodeOrderSecDTO.class); orderDTO.setSecDTOList(secDTOS); } String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + LocalFileUtil.getFileNameForIE(file.getOriginalFilename()); File file1 = new File(excelFileName); try { file.transferTo(new File(excelFileName)); CodeImProtRusultVO codeImProtRusultVO = mdmIOService.batchImportCode(orderDTO,file1); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){ //放到map里 R result = R.fail("导入失败"); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) { String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath()); codeImProtRusultVO.setFileOid(filedUUid); } result.setData(codeImProtRusultVO); return result; }else { return R.success("操作成功!"); } }catch (Throwable e) { logger.error("导入错误",e); String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt"; LocalFileUtil.writeContentToFile( LangBaseUtil.getErrorMsg(e),errorFile); String uuid=ControllerUtil.putErrorFile(errorFile); CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO(); codeImProtRusultVO.setRedisUuid(""); codeImProtRusultVO.setFileOid(uuid); codeImProtRusultVO.setFilePath(errorFile); R result = R.fail("导入失败"); result.setData(codeImProtRusultVO); // result.setObj(codeImProtRusultVO); return result; }finally { file1.delete(); } // return null; } /** * 导入历史数据 * @param codeClassifyOid 分类的主键 * @param classifyAttr 分类路径使用的属性 * @param file 文件的内容 */ @VciBusinessLog(operateName = "导入编码的历史数据") @PostMapping("/batchImportHistoryData") public R batchImportHistoryData(String codeClassifyOid, String classifyAttr,MultipartFile file,HttpServletResponse response) throws Throwable { String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + file.getOriginalFilename(); File file1 = new File(excelFileName); try { file.transferTo(new File(excelFileName)); CodeImProtRusultVO codeImProtRusultVO =mdmIOService.batchImportHistoryData(codeClassifyOid, classifyAttr,file1); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){ //放到map里 R result = R.fail("导入失败"); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) { String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath()); codeImProtRusultVO.setFileOid(filedUUid); } result.setData(codeImProtRusultVO); return result; }else { return R.success("操作成功!"); } }catch (Throwable e) { logger.error("导入错误",e); String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt"; LocalFileUtil.writeContentToFile(LangBaseUtil.getErrorMsg(e),errorFile); String uuid=ControllerUtil.putErrorFile(errorFile); CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO(); codeImProtRusultVO.setRedisUuid(""); codeImProtRusultVO.setFileOid(uuid); codeImProtRusultVO.setFilePath(errorFile); R r = R.fail("导入失败"); r.setData(codeImProtRusultVO); return r; }finally { file1.delete(); } } /** * 导入历史数据(从顶层分类导的) * @param codeClassifyOid 分类的主键 * @param classifyAttr 分类路径使用的属性 * @param file 文件的内容 */ @VciBusinessLog(operateName = "批量申请编码的信息") @PostMapping("/batchTopImportCode") public R batchTopImportCode(String codeClassifyOid, String classifyAttr,MultipartFile file,HttpServletResponse response) throws Throwable { String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + file.getOriginalFilename(); File file1 = new File(excelFileName); try { file.transferTo(new File(excelFileName)); CodeImProtRusultVO codeImProtRusultVO =mdmIOService.batchTopImportCode(codeClassifyOid, classifyAttr,file1); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())||StringUtils.isNotBlank(codeImProtRusultVO.getRedisUuid())){ //放到map里 R r = R.fail("导入失败!"); if(StringUtils.isNotBlank(codeImProtRusultVO.getFilePath())) { String filedUUid = ControllerUtil.putErrorFile(codeImProtRusultVO.getFilePath()); codeImProtRusultVO.setFileOid(filedUUid); r = R.success("导入成功!"); } r.setData(codeImProtRusultVO); return r; }else { return R.success("导入成功!"); } }catch (Throwable e) { e.printStackTrace(); logger.error("导入错误",e); String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt"; LocalFileUtil.writeContentToFile(LangBaseUtil.getErrorMsg(e),errorFile); String uuid=ControllerUtil.putErrorFile(errorFile); CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO(); codeImProtRusultVO.setRedisUuid(""); codeImProtRusultVO.setFileOid(uuid); codeImProtRusultVO.setFilePath(errorFile); R r = R.fail("导入失败"); r.setData(codeImProtRusultVO); return r; }finally { file1.delete(); } } /** * 修改状态 * @param baseModelDTO 数据传输对象 * @return 执行结果 */ @PostMapping("/changeStatus") public R changeStatus(@RequestBody BaseModelDTO baseModelDTO) { engineService.changeStatus(baseModelDTO); return R.success("操作成功!"); } /** * 申请编码保存 * @param orderDTO 编码申请相关的信息,需要有属性和码段相关的信息 * @return 执行结果 */ @PostMapping("/addSaveCode") @VciBusinessLog(operateName = "申请单个编码") public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception { String s = null; try { s = engineService.addSaveCode(orderDTO); saveLogUtil.operateLog("编码申请",false,orderDTO.toString()); }catch (Exception e){ saveLogUtil.operateLog("编码申请",true,e.toString()); throw e; } return R.success(s); } /** * 使用模板的主键获取表单的定义 * @param templateOid 模板的主键 * @param codeClassifyOid 使用模板的分类主键 * @return UI相关的信息(仅包含表单) */ @GetMapping("/getFormDefineByTemplateOid") public MdmUIInfoVO getFormDefineByTemplateOid(String templateOid, String codeClassifyOid){ return engineService.getFormDefineByTemplateOid(templateOid,codeClassifyOid); } /** * 相似项查询 * @param orderDTO 编码的相关信息 * @return 数据列表 */ @PostMapping("/resembleQuery") public DataGrid> resembleQuery(@RequestBody CodeOrderDTO orderDTO){ return engineService.resembleQuery(orderDTO); } /** * 修改单条主题库的数据 * @param orderDTO 编码申请相关的信息,不需要码段的信息 * @return 执行结果 */ @PutMapping("/editSaveCode") @VciBusinessLog(operateName = "修改编码数据") public R editSaveCode(@RequestBody CodeOrderDTO orderDTO){ engineService.editSaveCode(orderDTO); return R.success("修改成功!"); } /** * 批量删除主题库的数据 * @param deleteBatchDTO 删除的信息,必须要有主键和分类的主键 * @return 执行结果 */ @VciBusinessLog(operateName = "批量删除主题库的数据") @DeleteMapping("/deleteCode") public R deleteCode(@RequestBody CodeDeleteBatchDTO deleteBatchDTO){ engineService.deleteCode(deleteBatchDTO); return R.success("删除成功!"); } /** * 使用分类和阶段的编号,获取包含的属性 * @param codeClassifyOid 分类的主键 * @param phase 阶段的名称 * @return 包含的属性,请获取obj属性 */ @VciBusinessLog(operateName = "获取阶段的属性信息") @GetMapping("/listPhaseAttrByClassifyOid") public R listPhaseAttrByClassifyOid(String codeClassifyOid,String phase){ return R.data(engineService.listPhaseAttrByClassifyOid(codeClassifyOid,phase)); } /** * 获取当前分类所在路径上的分类属性 * @param codeClassifyOid 分类的主键 * @return 包含了当前分类的上级和所有层级的下级 */ @GetMapping("/hasSelfClassifyTree") public List hasSelfClassifyTree(String codeClassifyOid){ return engineService.hasSelfClassifyTree(codeClassifyOid); } /** * 使用分类获取对应的数据 * @param codeClassifyOid 分类的主键 * @param templateOid 模板的主键 * @param queryObject 基础查询对象 * @return 数据的信息(包含下级分类) */ @GetMapping("/gridTableDataByClassifyOid") @VciBusinessLog(operateName = "查询主题库分类的数据") public DataGrid> gridTableDataByClassifyOid(String codeClassifyOid, String templateOid, BaseQueryObject queryObject){ //TODO后续可以定义查询模板来查询 return engineService.gridTableDataByClassifyOid(codeClassifyOid,templateOid,queryObject.getConditionMap(),queryObject.getPageHelper()); } /** * 获取分类对象 * @param redisOid * @return */ @GetMapping("/gridclassifys") public R gridclassifys(String redisOid){ List codeImportTemplateVOs=mdmIOService.gridclassifys(redisOid); return R.data(codeImportTemplateVOs); } /** * 从redis缓存里获取到导入正确的数据 * @param codeClassifyOid * @param redisOid * @return */ @GetMapping("/gridValidata") public DataGrid> gridValidata(String codeClassifyOid,String redisOid){ return mdmIOService.gridDatas(codeClassifyOid,redisOid); } /** * 从redis缓存里获取到导入行相似项的数据 * @param dataOid * @param redisOid * @return */ @GetMapping("/gridRowResemble") public DataGrid> gridRowResemble(String dataOid,String redisOid){ return mdmIOService.gridRowResemble(dataOid,redisOid); } /** * 从redis缓存里获取到导入具有相似项的数据 * @param codeClassifyOid * @param redisOid * @return */ @GetMapping("/gridResemble") public DataGrid> gridResemble(String codeClassifyOid,String redisOid){ return mdmIOService.gridDatas(codeClassifyOid,redisOid); } /** * 导入数据 * @param codeImprotSaveDatVO//数据对象 * @return */ @PostMapping("/batchImportData") public R batchImportData(@RequestBody CodeImprotParmaDatVO codeImprotSaveDatVO){ return mdmIOService.batchImportData(codeImprotSaveDatVO.getCodeImprotSaveDatVOList(),codeImprotSaveDatVO.getClassifyAttr(),codeImprotSaveDatVO.getImprot()); } /** * 根据数据oid从缓存中移除数据 * @param redisOid redisid * @param codeClassifyOid 存储规则的oid * @param dataOids 所需删除的数据 * @return */ @GetMapping("/deleteDatas") public R deleteDatas(String redisOid,String codeClassifyOid,String dataOids){ return mdmIOService.deleteDatas(redisOid,codeClassifyOid,dataOids); } /** * 批量保存流程执行页面修改的内容 * @param orderDTOList 编码相关的信息,不需要码段的信息 * @return 执行结果 */ @PostMapping("/batchUpdateCode") public R batchUpdateCode(@RequestBody List orderDTOList){ return engineService.batchUpdateCode(orderDTOList); } /** * 标记流程中业务数据是否通过 * @param oid 业务数据主键 * @param btmName 业务类型 * @param pass 是否通过 true-通过;false-不通过 * @return 执行结果 */ @PostMapping("/markPass") public R markDataPassing(String oid,String btmName,Boolean pass){ return engineService.markDataPassing(oid,btmName,pass); } /** * 组合规则的预览的内容 * @param orderDTO 申请编码信息 * @return 公式转换后的值 */ @PostMapping("/previewCompRule") public R previewCompRule(@RequestBody CodeOrderDTO orderDTO){ return R.data(engineService.previewCompRule(orderDTO)); } /** * 分类注入的内容 * @param orderDTO 申请编码的信息,包含分类的主键和模板的主键 * @return 执行结果 */ @PostMapping("/previewClassify") public R previewClassify(@RequestBody CodeOrderDTO orderDTO){ VciBaseUtil.alertNotNull(orderDTO,"申请的信息",orderDTO.getCodeClassifyOid(),"分类主键",orderDTO.getTemplateOid(),"模板的主键"); Map classifyMap = engineService.previewClassify(orderDTO.getCodeClassifyOid(),orderDTO.getTemplateOid()); return R.data(classifyMap); } /** * 下载错误的文件信息 * @param uuid 唯一标识 * @param response 响应对象 * @throws IOException 抛出异常 */ @GetMapping("/downloadErrorFile") public void downloadErrorFile(String uuid,HttpServletResponse response) throws IOException { ControllerUtil.downloadErrorFile(response,uuid); } /** * 升版编码数据 * @param orderDTO 编码相关的信息,不需要码段的信息 * @return 执行结果 */ @VciBusinessLog(operateName = "升版编码数据") @PostMapping("/upSaveCode") public R upSaveCode(@RequestBody CodeOrderDTO orderDTO){ engineService.upSaveCode(orderDTO); return R.success("操作成功!"); } /** * 使用码段的主键获取分类的码值内容 * @param classifySecOid 码段的主键 * @param parentClassifyValueOid 上级分类的主键 * @return 分类码值的内容 */ @GetMapping("/listCodeClassifyValueBySecOid") public IPage listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid){ List valueVOS = engineService.listCodeClassifyValueBySecOid(classifySecOid, parentClassifyValueOid); IPage valueVOIPage = new Page<>(); valueVOIPage.setRecords(valueVOS); valueVOIPage.setTotal(valueVOS==null?0:valueVOS.size()); return valueVOIPage; } /** * 使用分类的主键来获取编码规则 * @param codeClassifyOid 分类的主键 * @return 编码规则的内容 */ @GetMapping("/getCodeRuleByClassifyOid") // @VciUnCheckRight public R getCodeRuleByClassifyOid(String codeClassifyOid){ return R.data(engineService.getCodeRuleByClassifyOid(codeClassifyOid)); } /** * 使用主键获取数据 * @param oid 数据主键 * @param templateOid 模板的主键 * @return 数据内容 */ @GetMapping("/getDataByOid") public R>> getDataByOid(String oid,String templateOid){ return engineService.getDataByOid(oid,templateOid); } /** * 使用分类模板主键+模板流程名称获取在审批页面上左侧显示的属性 * @param templateOid 分类模板的主键 * @param executionId 流程执行id * @param processUse 流程的用途 * @return 树节点显示的名称 */ @GetMapping("/getFieldByProcessTemplate") public List getFieldByProcessTemplate(String templateOid,String executionId,String processUse){ return engineService.getFieldByProcessTemplate(templateOid,executionId,processUse); } /** * 使用分类的主键获取业务数据 * @param btmType 业务类型 * @param queryObject 查询对象 * @return 表格的显示对象值 */ @GetMapping("/getTableDataByOids") public DataGrid> getTableDataByOids(String btmType,BaseQueryObject queryObject){ return engineService.getTableDataByExecutionId(btmType,queryObject); } /** * 使用分类的主键获取表格的定义 * @param codeClassifyOid 分类主键 * @param phase 阶段的名称 * @return UI相关的信息(仅包含表单) */ @GetMapping("/getTableDefineByClassifyOid") public MdmUIInfoVO getTableDefineByClassifyOid(String codeClassifyOid,String phase){ return engineService.getTableDefineByClassifyOid_v2(codeClassifyOid,phase); } /** * 使用分类的的编号路径,获取表单的定义 * @param idPath 编号的路径 * @return UI相关的信息(仅包含表单) */ // @VciUnCheckRight @GetMapping("/getFormDefineByClassifyIdPath") public MdmUIInfoVO getFormDefineByClassifyIdPath(String idPath){ return engineService.getFormDefineByClassifyIdPath(idPath); } /** * 使用分类的主键获取表单的定义 * @param codeClassifyOid 分类主键 * @return UI相关的信息(仅包含表单) */ @GetMapping("/getFormDefineByClassifyOid") public MdmUIInfoVO getFormDefineByClassifyOid(String codeClassifyOid){ return engineService.getFormDefineByClassifyOid(codeClassifyOid); } /** * 根据模板的主键获取表格的定义 * @param templateOid 模板的主键 * @return ui相关的信息(仅包含表格) */ @GetMapping("/getTableDefineByTemplateOid") public MdmUIInfoVO getTableDefineByTemplateOid(String templateOid){ return engineService.getTableDefineByTemplateOid(templateOid); } /** * 使用分类的编号路径,获取表格的相关定义 * @param codeClassifyIdPath 分类的编号路径,必须是从顶层节点开始,xxx/yy/zz这样的格式 * @param functionId 功能的编号 * @return UI相关的信息(仅包含表格) */ @GetMapping("/getUIInfoByClassifyIdPath") public MdmUIInfoVO getUIInfoByClassifyIdPath(String codeClassifyIdPath,String functionId){ return engineService.getUIInfoByClassifyIdPath(codeClassifyIdPath,functionId); } /** * 使用分类获取表格的定义 * @param codeClassifyOid 分类主键 * @param functionId 功能的编号 * @return UI相关的信息(仅包含表格) */ @GetMapping("/getUIInfoByClassifyOid") public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid,String functionId){ return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId); } /** * 使用分类获取表格的定义 * @param codeClassifyOid 分类主键 * @param functionId 功能的编号 * @return UI相关的信息(仅包含表格) */ @GetMapping("/getFlowdUIInfoByClassifyOid") public MdmUIInfoVO getFlowUIInfoByClassifyOid(String codeClassifyOid,String functionId,String templateId,String taskId,String modelKey){ return engineService.getFlowUIInfoByClassifyOid(codeClassifyOid,functionId,templateId,taskId,modelKey); } @GetMapping("/thisistest") @ResponseBody public Integer thisistest(String codeClassifyOid, String functionId) throws Exception { // return engineService.selectByTypeAndOid("wupin", "b1511bb3-a773-43e2-ac85-a7fde7314a0f,3e08970024835e69f6c2b2ecd90c48c3,582ff205-0dfb-43e0-8223-e772ff1851ab,db0400fe-cc90-4d9d-8da7-1edf06b1481b"); List models = new ArrayList<>(); BaseModel baseModel = new BaseModel(); Map map = new HashMap<>(); map.put("JZL","6789"); map.put("JZRXX","67891"); map.put("JZXZB","67892"); map.put("JSZGL","67893"); map.put("JSSXT","67894"); baseModel.setBtmname("djii"); baseModel.setCreator("fjivis"); baseModel.setId("vcia"); baseModel.setOid("0d86b1ba-9e9e-4d3d-9ae4-f862c3684e74"); baseModel.setCreateTime(new Date()); baseModel.setTs(new Date()); baseModel.setData(map); models.add(baseModel); BaseModel baseModel1 = new BaseModel(); Map map1 = new HashMap<>(); map1.put("JZL","6789z"); map1.put("JZRXX","67891z"); map1.put("JZXZB","67892z"); map1.put("JSZGL","67893z"); map1.put("JSSXT","67894z"); baseModel1.setBtmname("djiiz"); baseModel1.setCreator("fjivisz"); baseModel1.setId("vciaz"); baseModel1.setTs(new Date()); baseModel1.setOid("4a00be07-f5a8-4a9b-88fb-d52a0d9cf546"); baseModel1.setCreateTime(new Date()); baseModel1.setData(map1); models.add(baseModel1); BaseModel baseModel2 = new BaseModel(); Map map2 = new HashMap<>(); map2.put("JZL","67892"); map2.put("JZRXX","678912"); map2.put("JZXZB","678922"); map2.put("JSZGL","678932"); map2.put("JSSXT","678942"); baseModel2.setBtmname("djii2"); baseModel2.setCreator("fjivis2"); baseModel2.setTs(new Date()); baseModel2.setId("vcia2"); baseModel2.setOid("fa430ff9-f141-4dcf-8809-6f87905c1dea"); baseModel2.setCreateTime(new Date()); baseModel2.setData(map2); models.add(baseModel2); return 0; // return engineService.updateBatchByBaseModel("wupin", models); // return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId); } /** * 默认的参照列表 * @param referConfigVO 参照的配置信息 * @return 执行的结果 */ @RequestMapping(value = "/defaultReferDataGrid",method = {RequestMethod.POST, RequestMethod.GET}) public IPage defaultReferDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject){ return engineService.referDataGrid(referConfigVO,baseQueryObject); } /** * 默认的树形参照列表 * @param referConfigVO 参照的配置信息 * @return 执行的结果 */ @GetMapping("/defaultReferTree") public List defaultReferTree(UIFormReferVO referConfigVO, TreeQueryObject queryObject){ return engineService.referTree(referConfigVO,queryObject); } /** * 流程中变更状态的简易接口 * @param flowDTO 流程中携带的body * @return */ @PostMapping("/processChangeStatus") public R processChangeStatus(@RequestBody FlowStatusDTO flowDTO){ return engineService.processChangeStatus(flowDTO); } /** * 标准申请和修订用 * @param codeBZApplyDTO 编码申请相关的信息,需要有属性和码段相关的信息 * @return 执行结果 */ @PostMapping("/addSaveBZ") @VciBusinessLog(operateName = "申请单个编码") public R addSaveBZ (@RequestBody CodeBZApplyDTO codeBZApplyDTO) throws Exception { return R.success(engineService.addSaveBZ(codeBZApplyDTO)); } /** * 下载批量申请的导入模板 * @param codeClassifyOid 分类的主键 * @param response 响应对象 * @throws IOException 抛出异常 */ @GetMapping("/exportGroupCodeExcel") @VciBusinessLog(operateName = "导出集团码") public void exportGroupCodeExcel(String codeClassifyOid, HttpServletResponse response) throws IOException { try { String excelName = mdmIOService.exportGroupCodeExcel(codeClassifyOid); ControllerUtil.writeFileToResponse(response,excelName); } catch (Throwable e) { //如果出错,把错误信息写到text String msg = LangBaseUtil.getErrorMsg(e); if(StringUtils.isBlank(msg)){ msg = "未知错误"; } String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt"; LocalFileUtil.writeContentToFile(msg,errorFile); ControllerUtil.writeFileToResponse(response,errorFile); // return R.fail(msg); } // return R.status(true); } /** * 集团码导入 * @param codeClassifyOid * @param file * @param response * @return */ @PostMapping("/importGroupCode") public R importGroupCode(String codeClassifyOid,MultipartFile file,HttpServletResponse response){ String excelFileName = LocalFileUtil.getDefaultTempFolder() + File.separator + file.getOriginalFilename(); File file1 = new File(excelFileName); try { file.transferTo(new File(excelFileName)); String excelName=mdmIOService.importGroupCode(codeClassifyOid,file1); if(StringUtils.isNotBlank(excelName)) { ControllerUtil.writeFileToResponse(response,excelName); return R.fail("集团码导入出现问题,请查看文件"); }else{ return R.status(true); } }catch (Throwable e) { logger.error("导入错误",e); String errorFile = LocalFileUtil.getDefaultTempFolder() + File.separator + "错误.txt"; LocalFileUtil.writeContentToFile(LangBaseUtil.getErrorMsg(e),errorFile); String uuid=ControllerUtil.putErrorFile(errorFile); CodeImProtRusultVO codeImProtRusultVO =new CodeImProtRusultVO(); codeImProtRusultVO.setRedisUuid(""); codeImProtRusultVO.setFileOid(uuid); codeImProtRusultVO.setFilePath(errorFile); R r = R.fail("集团码导入失败"); r.setData(codeImProtRusultVO); return r; }finally { file1.delete(); } } /** * 获取统计分析数据 * @param btmNames 业务类型 * @return */ @GetMapping("/getStatisticAnalysis") @VciBusinessLog(operateName = "获取统计分析数据") public R getStatisticAnalysis(String btmNames) { return engineService.getStatisticAnalysis(btmNames); } }