From 52ffefd06e59cbd56c1a919972866592379cfed2 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期四, 21 九月 2023 11:27:11 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java |  346 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 313 insertions(+), 33 deletions(-)

diff --git a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
index e99c9da..f5ce8a2 100644
--- a/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
+++ b/Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/MdmEngineController.java
@@ -3,23 +3,27 @@
 
 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.CodeDeleteBatchDTO;
+import com.vci.ubcs.code.dto.CodeExportAttrDTO;
 import com.vci.ubcs.code.dto.CodeOrderDTO;
 import com.vci.ubcs.code.dto.CodeOrderSecDTO;
 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.web.pagemodel.BaseQueryObject;
-import com.vci.ubcs.starter.web.pagemodel.DataGrid;
-import com.vci.ubcs.starter.web.pagemodel.Tree;
+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 lombok.AllArgsConstructor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springblade.core.tool.api.R;
@@ -31,8 +35,7 @@
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @RestController
 //@AllArgsConstructor
@@ -40,9 +43,9 @@
 @Api(value = "缂栫爜鏁版嵁绠$悊", tags = "缂栫爜鏁版嵁绠$悊")
 public class MdmEngineController {
 
-//	/**
-//	 * 鏃ュ織
-//	 */
+	/**
+	 * 鏃ュ織
+	 */
 	private Logger logger = LoggerFactory.getLogger(getClass());
 	/**
 	 * 涓绘暟鎹紩鎿庢湇鍔�
@@ -54,6 +57,7 @@
 	 */
 	@Autowired
 	private MdmIOService mdmIOService;
+
 
 	/**
 	 * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉�
@@ -76,7 +80,71 @@
 			ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null);
 		}
 	}
+	/**
+	 * 涓嬭浇鎵归噺鐢宠鐨勫鍏ユā鏉�
+	 * @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) {
+			//濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
+			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 {
+		String excelName = mdmIOService.exportCode(exportAttrDTO);
+		try {
+			ControllerUtil.writeFileToResponse(response,excelName);
+		} catch (Throwable e) {
+			//濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
+			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) {
+			//濡傛灉鍑洪敊,鎶婇敊璇俊鎭啓鍒皌ext
+			String msg = LangBaseUtil.getErrorMsg(e);
+			if(StringUtils.isBlank(msg)){
+				msg = "鏈煡閿欒";
+			}
+			ControllerUtil.writeDataToResponse(response,msg.getBytes(StandardCharsets.UTF_8),null);
+		}
+	}
 
 	/**
 	 * 鎵归噺鐢宠缂栫爜鐨勪俊鎭�
@@ -95,20 +163,20 @@
 		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("鎿嶄綔鎴愬姛锛�");
-//			}
+			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";
@@ -125,9 +193,98 @@
 		}finally {
 			file1.delete();
 		}
-		return null;
+//		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();
+		}
+	}
 
 	/**
 	 * 淇敼鐘舵��
@@ -135,7 +292,7 @@
 	 * @return 鎵ц缁撴灉
 	 */
 	@PostMapping("changeStatus")
-	public R changeStatus(BaseModelDTO baseModelDTO) {
+	public R changeStatus(@RequestBody BaseModelDTO baseModelDTO) {
 		engineService.changeStatus(baseModelDTO);
 		return R.success("鎿嶄綔鎴愬姛锛�");
 	}
@@ -148,7 +305,7 @@
 	 */
 	@PostMapping("/addSaveCode")
 	@VciBusinessLog(operateName = "鐢宠鍗曚釜缂栫爜")
-	public R addSaveCode(@RequestBody CodeOrderDTO orderDTO){
+	public R addSaveCode(@RequestBody CodeOrderDTO orderDTO) throws Exception {
 		return R.success(engineService.addSaveCode(orderDTO));
 	}
 
@@ -258,7 +415,7 @@
 	}
 
 	/***
-	 * 浠巖edis缂撳瓨閲岃幏鍙栧埌瀵煎叆姝g‘鐨勬暟鎹�
+	 * 浠巖edis缂撳瓨閲岃幏鍙栧埌瀵煎叆琛岀浉浼奸」鐨勬暟鎹�
 	 * @param dataOid
 	 * @param redisOid
 	 * @return
@@ -278,7 +435,27 @@
 	public DataGrid<Map<String,String>> 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 瀛樺偍瑙勫垯鐨刼id
+	 * @param dataOids  鎵�闇�鍒犻櫎鐨勬暟鎹�
+	 * @return
+	 */
+	@GetMapping("/deleteDatas")
+	public  R deleteDatas(String redisOid,String codeClassifyOid,String dataOids){
+		return mdmIOService.deleteDatas(redisOid,codeClassifyOid,dataOids);
+	}
 	/**
 	 * 鎵归噺淇濆瓨娴佺▼鎵ц椤甸潰淇敼鐨勫唴瀹�
 	 * @param orderDTOList 缂栫爜鐩稿叧鐨勪俊鎭紝涓嶉渶瑕佺爜娈电殑淇℃伅
@@ -353,12 +530,12 @@
 	 * @return 鍒嗙被鐮佸�肩殑鍐呭
 	 */
 	@GetMapping("/listCodeClassifyValueBySecOid")
-	public DataGrid<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid){
+	public IPage<CodeClassifyValueVO> listCodeClassifyValueBySecOid(String classifySecOid, String parentClassifyValueOid){
 		List<CodeClassifyValueVO> valueVOS = engineService.listCodeClassifyValueBySecOid(classifySecOid, parentClassifyValueOid);
-		DataGrid<CodeClassifyValueVO> dataGrid = new DataGrid<>();
-		dataGrid.setData(valueVOS);
-		dataGrid.setTotal(valueVOS==null?0:valueVOS.size());
-		return dataGrid;
+		IPage<CodeClassifyValueVO> valueVOIPage = new Page<>();
+		valueVOIPage.setRecords(valueVOS);
+		valueVOIPage.setTotal(valueVOS==null?0:valueVOS.size());
+		return valueVOIPage;
 	}
 
 	/**
@@ -367,7 +544,7 @@
 	 * @return 缂栫爜瑙勫垯鐨勫唴瀹�
 	 */
 	@GetMapping("/getCodeRuleByClassifyOid")
-//	@VciUnCheckRight
+	//	@VciUnCheckRight
 	public R<CodeRuleVO> getCodeRuleByClassifyOid(String codeClassifyOid){
 		return R.data(engineService.getCodeRuleByClassifyOid(codeClassifyOid));
 	}
@@ -469,4 +646,107 @@
 	public MdmUIInfoVO getUIInfoByClassifyOid(String codeClassifyOid,String functionId){
 		return engineService.getUIInfoByClassifyOid(codeClassifyOid,functionId);
 	}
+
+	/**
+	 * 浣跨敤鍒嗙被鑾峰彇琛ㄦ牸鐨勫畾涔�
+	 * @param codeClassifyOid 鍒嗙被涓婚敭
+	 * @param functionId 鍔熻兘鐨勭紪鍙�
+	 * @return UI鐩稿叧鐨勪俊鎭紙浠呭寘鍚〃鏍硷級
+	 */
+	@GetMapping("/getFlowdUIInfoByClassifyOid")
+	public MdmUIInfoVO getUIInfoByClassifyOid(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<BaseModel> models = new ArrayList<>();
+		BaseModel baseModel = new BaseModel();
+		Map<String,String > 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<String,String > 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<String,String > 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<BaseModelVO> defaultReferDataGrid(UIFormReferVO referConfigVO, BaseQueryObject baseQueryObject){
+		return engineService.referDataGrid(referConfigVO,baseQueryObject);
+	}
+
+	/**
+	 * 榛樿鐨勬爲褰㈠弬鐓у垪琛�
+	 * @param referConfigVO 鍙傜収鐨勯厤缃俊鎭�
+	 * @return 鎵ц鐨勭粨鏋�
+	 */
+	@GetMapping("/defaultReferTree")
+	public List<Tree> 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);
+	}
 }

--
Gitblit v1.9.3