From fa24d347d4c5a796297184f9957b0582dc52c66e Mon Sep 17 00:00:00 2001
From: kimi <kimi42345@gmail.com>
Date: 星期五, 14 二月 2020 14:34:00 +0800
Subject: [PATCH] init 2/14

---
 src/main/java/com/highdatas/mdm/service/impl/DeletedTableLogServiceImpl.java          |   20 ++
 src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java               |   40 +++
 src/main/java/com/highdatas/mdm/entity/DeletedTableLog.java                           |   68 ++++++
 src/main/java/com/highdatas/mdm/service/IDeletedTableLogService.java                  |   16 +
 src/main/java/com/highdatas/mdm/mapper/DeletedTableLogMapper.java                     |   16 +
 src/main/java/com/highdatas/mdm/controller/SysBusinessOperateController.java          |    2 
 src/main/java/com/highdatas/mdm/pojo/Result.java                                      |    2 
 src/main/resources/application-prod.yml                                               |   19 -
 pom.xml                                                                               |    6 
 src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java              |   24 ++
 src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java                           |    4 
 src/main/java/com/highdatas/mdm/util/WorkflowUtils.java                               |   62 ++++++
 src/main/java/com/highdatas/mdm/util/Constant.java                                    |    2 
 src/main/java/com/highdatas/mdm/controller/MenuMappingController.java                 |    6 
 src/main/java/com/highdatas/mdm/util/MpGenerator.java                                 |    2 
 src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java                 |   13 +
 src/main/resources/application-dev.yml                                                |    9 
 src/main/java/com/highdatas/mdm/service/act/impl/RepositoryServiceImpl.java           |   13 
 src/main/java/com/highdatas/mdm/controller/MasterDataController.java                  |   42 +++
 src/main/resources/mapping/TableInfoMapper.xml                                        |   42 ++++
 src/main/java/com/highdatas/mdm/service/act/impl/HistoryServiceImpl.java              |    2 
 src/main/resources/static/process/editor-app/configuration/toolbar-default-actions.js |    8 
 src/main/java/com/highdatas/mdm/controller/DeletedTableLogController.java             |   20 ++
 src/main/java/com/highdatas/mdm/controller/MaintainController.java                    |   19 +
 src/main/java/com/highdatas/mdm/service/MasterDataService.java                        |    5 
 src/main/java/com/highdatas/mdm/util/DbUtils.java                                     |   21 ++
 src/main/java/com/highdatas/mdm/controller/ActivitiDesignerController.java            |   11 
 src/main/java/com/highdatas/mdm/mapper/xml/DeletedTableLogMapper.xml                  |   12 +
 src/main/java/com/highdatas/mdm/controller/ActivitiController.java                    |   51 ++++
 src/main/java/com/highdatas/mdm/service/IMenuMappingService.java                      |    2 
 src/main/java/com/highdatas/mdm/controller/SysMenuController.java                     |   21 ++
 31 files changed, 529 insertions(+), 51 deletions(-)

diff --git a/pom.xml b/pom.xml
index c7b0082..875578c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -237,7 +237,11 @@
 			<artifactId>spring-security-config</artifactId>
 			<version>4.1.3.RELEASE</version>
 		</dependency>
-
+		<dependency>
+			<groupId>com.belerweb</groupId>
+			<artifactId>pinyin4j</artifactId>
+			<version>2.5.0</version>
+		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/src/main/java/com/highdatas/mdm/controller/ActivitiController.java b/src/main/java/com/highdatas/mdm/controller/ActivitiController.java
index 2655142..45c2be7 100644
--- a/src/main/java/com/highdatas/mdm/controller/ActivitiController.java
+++ b/src/main/java/com/highdatas/mdm/controller/ActivitiController.java
@@ -20,12 +20,13 @@
 import org.activiti.engine.task.Task;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
-import java.io.FileNotFoundException;
+import java.io.*;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -67,7 +68,8 @@
     IMaintainService maintainService;
     @Autowired
     ITUserService userService;
-
+    @Value("${img.url}")
+    String basePath;
 
     @RequestMapping(value = "/list", method = RequestMethod.GET)
     public Result<List<Map<String, Object>>> list(HttpServletRequest request) throws FileNotFoundException {
@@ -78,12 +80,50 @@
         List<Map<String, Object>> list = flowsMapper.selectVersion(filterSegment);
         for (Map<String, Object> one : list) {
             String newModelId = (String) one.get(Constant.ID);
-            String url = "processes/" +  newModelId +  "/" +  newModelId  +  ".png";
+            String url = "act/img/" +  newModelId;
             one.put("imgurl",url);
         }
         return Result.success(list);
     }
+    @RequestMapping(value = "/img/{modelId}", method = RequestMethod.GET)
+    public void image(@PathVariable String modelId, HttpServletResponse response)  {
+        String filePath = basePath   + modelId +"/"+ modelId + ".png";
+        File file = new File(filePath);
+        FileInputStream fileInputStream = null;
+        response.setHeader("Content-Type", "image/png");
+        try{
+            fileInputStream = new FileInputStream(file);
+            OutputStream outputStream = response.getOutputStream();
+            byte[] b = new byte[1024];
+            int len;
+            while ((len = fileInputStream.read(b, 0, 1024)) != -1) {
+                outputStream.write(b, 0, len);
+            }
+        }
+        catch (Exception e) {
+            e.printStackTrace();
+        }
+        finally {
+            if (fileInputStream != null) {
+                try {
+                    fileInputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
 
+        }
+
+    }
+    @RequestMapping(value = "/deleteModel/{modelId}", method = RequestMethod.GET)
+    public Result deleteModel(@PathVariable String modelId)  {
+        boolean b = repositoryService.deleteModel(modelId);
+        if (b) {
+            return Result.success(null);
+        } else {
+            return Result.error(CodeMsg.DELETE_ERROR);
+        }
+    }
     @RequestMapping(value = "/processlist", method = RequestMethod.GET)
     public Result<Result<JSONArray>> processlist(HttpServletRequest request)  {
         Result<JSONArray> processList   = repositoryService.getProcessList();
@@ -286,6 +326,11 @@
                     } else {
                         flows.setStatus(ActivitiStatus.open);
                     }
+
+                    if (!pass) {
+                        flows.setStatus(ActivitiStatus.close);
+                    }
+
                     if (flows.getBusinessType().equals(ActivitiBusinessType.maintain)){
                         String maintainId = flows.getBusinessId();
                         maintainService.dealFlow(maintainId, flows.getStatus());
diff --git a/src/main/java/com/highdatas/mdm/controller/ActivitiDesignerController.java b/src/main/java/com/highdatas/mdm/controller/ActivitiDesignerController.java
index 90efffb..7f6b67d 100644
--- a/src/main/java/com/highdatas/mdm/controller/ActivitiDesignerController.java
+++ b/src/main/java/com/highdatas/mdm/controller/ActivitiDesignerController.java
@@ -1,6 +1,8 @@
 package com.highdatas.mdm.controller;
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.highdatas.mdm.pojo.CodeMsg;
+import com.highdatas.mdm.pojo.Result;
 import com.highdatas.mdm.service.ModelEditorService;
 import com.highdatas.mdm.service.act.IdentityService;
 import com.highdatas.mdm.service.act.RepositoryService;
@@ -46,8 +48,13 @@
 
     @RequestMapping(value="/model/{modelId}/save", method = RequestMethod.PUT)
 
-    public void saveModel(@PathVariable String modelId, HttpServletRequest request) {
-        repositoryService.saveModel(modelId, request);
+    public Result saveModel(@PathVariable String modelId, HttpServletRequest request) {
+        boolean saved = repositoryService.saveModel(modelId, request);
+        if (saved) {
+            return Result.success(null);
+        } else {
+            return Result.error(new CodeMsg(1000, "鏈娴嬪埌浠讳竴鏍囩"));
+        }
     }
 
     @RequestMapping(value="/model/{modelId}/delete", method = RequestMethod.PUT)
diff --git a/src/main/java/com/highdatas/mdm/controller/DeletedTableLogController.java b/src/main/java/com/highdatas/mdm/controller/DeletedTableLogController.java
new file mode 100644
index 0000000..2eb99a8
--- /dev/null
+++ b/src/main/java/com/highdatas/mdm/controller/DeletedTableLogController.java
@@ -0,0 +1,20 @@
+package com.highdatas.mdm.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ *  鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author kimi
+ * @since 2020-01-13
+ */
+@Controller
+@RequestMapping("/deletedTableLog")
+public class DeletedTableLogController {
+
+}
diff --git a/src/main/java/com/highdatas/mdm/controller/MaintainController.java b/src/main/java/com/highdatas/mdm/controller/MaintainController.java
index 597fc47..7d22c7f 100644
--- a/src/main/java/com/highdatas/mdm/controller/MaintainController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MaintainController.java
@@ -74,6 +74,23 @@
         return maintainService.getUnSubmitData(tableName, pageNo, pageSize, whereSegment);
     }
 
+    @RequestMapping(value = "{tableName}/unflow/{pageNo}", method = RequestMethod.GET)
+    public Result unflow(@PathVariable String tableName, @PathVariable Integer pageNo, HttpServletRequest request) throws UnsupportedEncodingException {
+        String pageSize = request.getParameter("pageSize");
+        String whereSegment = request.getParameter("whereSegment");
+
+        if (StringUtils.isEmpty(whereSegment)) {
+            whereSegment = Constant.WHERE_DEFAULT;
+        }else  {
+            whereSegment = URLDecoder.decode(whereSegment, "UTF-8");
+        }
+        if (StringUtils.isEmpty(pageSize)) {
+            return maintainService.getInvalidVerionData(tableName, whereSegment, pageNo, null);
+        } else {
+            return maintainService.getInvalidVerionData(tableName, whereSegment, pageNo, Integer.valueOf(pageSize));
+        }
+    }
+
     @RequestMapping(value = "/history/{tableName}", method = RequestMethod.GET)
     public Result getHistory(@PathVariable String tableName) {
 
@@ -88,6 +105,8 @@
         }
 
         List<String> result = maintainList.stream()
+                .filter(maintain -> !StringUtils.isEmpty(maintain.getFlowId()))
+                .filter(maintain -> flowsService.selectById(maintain.getFlowId()).getStatus().equals(ActivitiStatus.open))
                 .map(maintain -> maintain.getVersion())
                 .collect(Collectors.toList());
 
diff --git a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
index 49583a9..b2bbb0f 100644
--- a/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MasterDataController.java
@@ -56,13 +56,18 @@
         if (StringUtils.isEmpty(uploadType)) {
             uploadType = Constant.All;
         }
+        MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("table_name",tableName));
+        SysOperateLog operateLog = new SysOperateLog();
+
         Maintain maxVersion = maintainService.getMaxVersion(tableName);
         Maintain maintain = new Maintain();
         String biggerVersion = null;
         if (maxVersion == null) {
             biggerVersion = Constant.VERSION_Default;
             maintain.setOrderNo(0);
+            operateLog.setOperate("鍒濆鍖栦富棰樻暟鎹�");
         } else {
+            operateLog.setOperate("鏇存柊涓婚");
             String flowId = maxVersion.getFlowId();
             String mVersion = maxVersion.getVersion();
             if (StringUtils.isEmpty(flowId)) {
@@ -99,9 +104,7 @@
         Long aLong = tableInfoMapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId()));
 
         maintain.setDesp(MessageFormat.format("涓婁紶鏁版嵁{0}鏉�", aLong));
-        MenuMapping menuMapping = menuMappingService.selectOne(new EntityWrapper<MenuMapping>().eq("table_name", maintain.getTableName()));
 
-        SysOperateLog operateLog = new SysOperateLog();
         operateLog.setCreateTime(new Date())
                 .setMaintainId(maintain.getId())
                 .setId(DbUtils.getUUID())
@@ -178,25 +181,46 @@
         return masterDataService.selectList(tableName,whereSegment);
     }
 
-    @RequestMapping(value = "{maintainId}/modify/{operateStr}", method = RequestMethod.GET)
-    public Result modify(@PathVariable String maintainId, @PathVariable String operateStr, HttpServletRequest request) throws UnsupportedEncodingException {
+    @RequestMapping(value = "{maintainId}/modify/{operateStr}", method = RequestMethod.POST)
+    public Result modify(@RequestParam String datas, @PathVariable String maintainId, @PathVariable String operateStr, HttpServletRequest request) throws UnsupportedEncodingException {
         Result result = null;
         Operate operate = Operate.parse(operateStr);
-        String datas = request.getParameter("datas");
         Maintain maintain = maintainService.selectById(maintainId);
         switch (operate) {
             case delete:
                 //datas is id;
-                result = deleteById(maintain.getTableName() + Constant.RECORD, datas);
+                Integer deleteCount = tableInfoMapper.deleteRecordByMaintainId(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(datas), DbUtils.quotedStr(maintainId));
+
+                result = Result.success(deleteCount);
                 break;
             case update:
                 JSONObject jsonObject = JSONObject.parseObject(datas);
-                Object id = jsonObject.get("id");
-                String updateSegment = masterDataService.getUpdateSegment(maintain.getTableName(), datas);
-                result = masterDataService.update(maintain.getTableName() + Constant.RECORD, updateSegment, false);
+                String id = (String) jsonObject.get("id");
+                jsonObject.remove(Constant.ID);
+                datas = jsonObject.toJSONString();
+                String updateSegment = masterDataService.getUpdateSegment(maintain.getTableName(), maintain.getTableName() + Constant.RECORD, datas);
+
+                Integer updateCount = tableInfoMapper.updateRecordByMaintainId(maintain.getTableName() + Constant.RECORD, updateSegment, DbUtils.quotedStr(maintainId));
+                result = Result.success(updateCount);
                 break;
             case create:
+                JSONObject createObject = JSONObject.parseObject(datas);
+                String recordId = DbUtils.getUUID();
+                createObject.fluentPut(Constant.ID, recordId);
+                createObject.fluentPut(Constant.STD_ID, DbUtils.getUUID());
+                datas = createObject.toJSONString();
+
+                MaintainDetail maintainDetail = new MaintainDetail();
+                maintainDetail.setParentId(maintainId);
+                maintainDetail.setId(DbUtils.getUUID());
+                maintainDetail.setPreMergeId(recordId);
+                maintainDetail.setCreateTime(new Date());
+                maintainDetail.setOperate(Operate.create);
+
                 result = masterDataService.insert(maintain.getTableName() + Constant.RECORD, datas);
+                if (result.getSuccess()) {
+                    maintainDetail.insert();
+                }
                 break;
                 default:
                     result = Result.error(CodeMsg.OPERATR_ERROR);
diff --git a/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java b/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java
index d563cc0..e883222 100644
--- a/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java
+++ b/src/main/java/com/highdatas/mdm/controller/MenuMappingController.java
@@ -41,9 +41,9 @@
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     public Result<Object> insert(@RequestParam String data, HttpServletRequest request) {
         HttpSession session = request.getSession();
-        boolean inserted =menuMappingService.create(data, session);
-        if (inserted) {
-            return  Result.success("鎻掑叆鎴愬姛", null);
+        MenuMapping inserted =menuMappingService.create(data, session);
+        if (inserted != null) {
+            return  Result.success(inserted);
         } else {
             return Result.error(CodeMsg.INSERT_ERROR);
         }
diff --git a/src/main/java/com/highdatas/mdm/controller/SysBusinessOperateController.java b/src/main/java/com/highdatas/mdm/controller/SysBusinessOperateController.java
index 248164c..088f60e 100644
--- a/src/main/java/com/highdatas/mdm/controller/SysBusinessOperateController.java
+++ b/src/main/java/com/highdatas/mdm/controller/SysBusinessOperateController.java
@@ -82,7 +82,7 @@
         String businessType = request.getParameter("businessType");
         SysBusinessOperate businessOperate = businessOperateService.selectById(id);
 
-        businessOperate.setCreateTime(new Date()).setId(DbUtils.getUUID()).setChageId(user.getUserId()).setModelId(modelId).setBusinessType(businessType);
+        businessOperate.setCreateTime(new Date()).setChageId(user.getUserId()).setModelId(modelId).setBusinessType(businessType);
         businessOperate.setUpdateTime(new Date());
         boolean update = businessOperate.updateById();
 
diff --git a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
index 709c502..418336a 100644
--- a/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
+++ b/src/main/java/com/highdatas/mdm/controller/SysMenuController.java
@@ -3,10 +3,14 @@
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
+import com.highdatas.mdm.entity.DeletedTableLog;
+import com.highdatas.mdm.entity.MenuMapping;
 import com.highdatas.mdm.entity.SysMenu;
 import com.highdatas.mdm.pojo.CodeMsg;
 import com.highdatas.mdm.pojo.MaintainDataType;
 import com.highdatas.mdm.pojo.Result;
+import com.highdatas.mdm.service.IDeletedTableLogService;
+import com.highdatas.mdm.service.IMenuMappingService;
 import com.highdatas.mdm.service.ISysMenuService;
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
@@ -31,7 +35,14 @@
 @RequestMapping("/menu")
 public class SysMenuController {
     @Autowired
-    private ISysMenuService menuService;
+    ISysMenuService menuService;
+
+    @Autowired
+    IMenuMappingService menuMappingService;
+
+    @Autowired
+    IDeletedTableLogService deletedTableLogService;
+
 
     @RequestMapping(value = "/all", method = RequestMethod.GET)
     public Result<List<SysMenu>> getAll() {
@@ -213,6 +224,14 @@
         HashSet<SysMenu> sysMenus = deleteMenuByParentId(data, menuid);
 
         for (SysMenu sysMenu : sysMenus) {
+            List<MenuMapping> menuMappingList = menuMappingService.selectList(new EntityWrapper<MenuMapping>().eq("menu_id", sysMenu.getId()));
+            for (MenuMapping menuMapping : menuMappingList) {
+                // 娣诲姞寰呭垹闄よ〃鐨勬棩蹇�
+                DeletedTableLog deletedTableLog = new DeletedTableLog();
+                deletedTableLog.setId(DbUtils.getUUID()).setTableName(menuMapping.getTableName()).setCreateTime(new Date());
+                deletedTableLog.insert();
+                menuMapping.deleteById();
+            }
             sysMenu.deleteById();
         }
         boolean delete = menuService.deleteById(menuid);
diff --git a/src/main/java/com/highdatas/mdm/entity/DeletedTableLog.java b/src/main/java/com/highdatas/mdm/entity/DeletedTableLog.java
new file mode 100644
index 0000000..7a021ae
--- /dev/null
+++ b/src/main/java/com/highdatas/mdm/entity/DeletedTableLog.java
@@ -0,0 +1,68 @@
+package com.highdatas.mdm.entity;
+
+import java.util.Date;
+import com.baomidou.mybatisplus.annotations.TableField;
+import com.baomidou.mybatisplus.activerecord.Model;
+import com.baomidou.mybatisplus.annotations.TableName;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author kimi
+ * @since 2020-01-13
+ */
+@TableName("deleted_table_log")
+public class DeletedTableLog extends Model<DeletedTableLog> {
+
+    private static final long serialVersionUID = 1L;
+
+    private String id;
+
+    @TableField("table_name")
+    private String tableName;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    public String getId() {
+        return id;
+    }
+
+    public DeletedTableLog setId(String id) {
+        this.id = id;
+        return this;
+    }
+    public String getTableName() {
+        return tableName;
+    }
+
+    public DeletedTableLog setTableName(String tableName) {
+        this.tableName = tableName;
+        return this;
+    }
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public DeletedTableLog setCreateTime(Date createTime) {
+        this.createTime = createTime;
+        return this;
+    }
+
+    @Override
+    protected Serializable pkVal() {
+        return this.id;
+    }
+
+    @Override
+    public String toString() {
+        return "DeletedTableLog{" +
+        "id=" + id +
+        ", tableName=" + tableName +
+        ", createTime=" + createTime +
+        "}";
+    }
+}
diff --git a/src/main/java/com/highdatas/mdm/mapper/DeletedTableLogMapper.java b/src/main/java/com/highdatas/mdm/mapper/DeletedTableLogMapper.java
new file mode 100644
index 0000000..f8bea2d
--- /dev/null
+++ b/src/main/java/com/highdatas/mdm/mapper/DeletedTableLogMapper.java
@@ -0,0 +1,16 @@
+package com.highdatas.mdm.mapper;
+
+import com.highdatas.mdm.entity.DeletedTableLog;
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author kimi
+ * @since 2020-01-13
+ */
+public interface DeletedTableLogMapper extends BaseMapper<DeletedTableLog> {
+
+}
diff --git a/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java b/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java
index 394f3ad..af3986b 100644
--- a/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java
+++ b/src/main/java/com/highdatas/mdm/mapper/TableInfoMapper.java
@@ -56,5 +56,9 @@
 
     Integer updateStdId(@Param("tableTempName")String tableTempName);
 
+    Integer updateRecordByMaintainId(@Param("tableTempName")String tableTempName, @Param("updateSegment") String updateSegment, @Param("maintainId")String maintainId);
+
+    Integer deleteRecordByMaintainId(@Param("tableTempName")String tableTempName, @Param("stdId") String stdId, @Param("maintainId")String maintainId);
+
 }
 
diff --git a/src/main/java/com/highdatas/mdm/mapper/xml/DeletedTableLogMapper.xml b/src/main/java/com/highdatas/mdm/mapper/xml/DeletedTableLogMapper.xml
new file mode 100644
index 0000000..8c1744c
--- /dev/null
+++ b/src/main/java/com/highdatas/mdm/mapper/xml/DeletedTableLogMapper.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.highdatas.mdm.mapper.DeletedTableLogMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.highdatas.mdm.entity.DeletedTableLog">
+        <id column="id" property="id" />
+        <result column="table_name" property="tableName" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+
+</mapper>
diff --git a/src/main/java/com/highdatas/mdm/pojo/Result.java b/src/main/java/com/highdatas/mdm/pojo/Result.java
index f5b3df0..760c7a1 100644
--- a/src/main/java/com/highdatas/mdm/pojo/Result.java
+++ b/src/main/java/com/highdatas/mdm/pojo/Result.java
@@ -50,7 +50,7 @@
         return new Result<T>(data);
     }
     public static <T> Result<T> success(CodeMsg codeMsg){
-        return new Result<T>(codeMsg);
+        return new Result<T>(CodeMsg.SUCCESS);
     }
     public static <T> Result<T> success(String message, T data){
         return new Result<T>(message, data);
diff --git a/src/main/java/com/highdatas/mdm/service/IDeletedTableLogService.java b/src/main/java/com/highdatas/mdm/service/IDeletedTableLogService.java
new file mode 100644
index 0000000..84d5ea5
--- /dev/null
+++ b/src/main/java/com/highdatas/mdm/service/IDeletedTableLogService.java
@@ -0,0 +1,16 @@
+package com.highdatas.mdm.service;
+
+import com.highdatas.mdm.entity.DeletedTableLog;
+import com.baomidou.mybatisplus.service.IService;
+
+/**
+ * <p>
+ *  鏈嶅姟绫�
+ * </p>
+ *
+ * @author kimi
+ * @since 2020-01-13
+ */
+public interface IDeletedTableLogService extends IService<DeletedTableLog> {
+
+}
diff --git a/src/main/java/com/highdatas/mdm/service/IMenuMappingService.java b/src/main/java/com/highdatas/mdm/service/IMenuMappingService.java
index 5dd8a76..1b29436 100644
--- a/src/main/java/com/highdatas/mdm/service/IMenuMappingService.java
+++ b/src/main/java/com/highdatas/mdm/service/IMenuMappingService.java
@@ -17,7 +17,7 @@
 public interface IMenuMappingService extends IService<MenuMapping> {
 
 
-    boolean create(String json, HttpSession session);
+    MenuMapping create(String json, HttpSession session);
 
 
     boolean update(String json);
diff --git a/src/main/java/com/highdatas/mdm/service/MasterDataService.java b/src/main/java/com/highdatas/mdm/service/MasterDataService.java
index 3afd973..543016d 100644
--- a/src/main/java/com/highdatas/mdm/service/MasterDataService.java
+++ b/src/main/java/com/highdatas/mdm/service/MasterDataService.java
@@ -54,11 +54,14 @@
 
     Result updateById(String tableName, String fieldsSegment, String id,  boolean total);
 
+    Result updateByStdId(String tableName, String fieldsSegment, String id, boolean total);
+
     Result update(String tableName, String fieldsSegment, boolean total);
 
     Result update(String tableName, String fieldsSegment, String whereSegment);
 
     String getUpdateSegment(String tableName, String fieldsSegment);
+    String getUpdateSegment(String tableName, String alias, String fieldsSegment);
 
     Result update(String tableName, String updateSegment, String whereDefault, boolean total);
 
@@ -66,6 +69,8 @@
 
     Result deleteById(String tableName, String id);
 
+    Result deleteByStdId(String tableName, String id);
+
     Result delete(String tableName, String whereSegment);
 
     Result selectListByPageByVersion(String tableName, String whereSegment, Integer pageNo, String version, boolean findMax);
diff --git a/src/main/java/com/highdatas/mdm/service/act/impl/HistoryServiceImpl.java b/src/main/java/com/highdatas/mdm/service/act/impl/HistoryServiceImpl.java
index 317667a..a693ee7 100644
--- a/src/main/java/com/highdatas/mdm/service/act/impl/HistoryServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/act/impl/HistoryServiceImpl.java
@@ -170,7 +170,7 @@
         TUser onlineUser = getOnlineUser();
         List<Map<String, String>> result = new ArrayList<Map<String, String>>();
 		List<HistoricProcessInstance> unFinishedTaskList = historyService.createHistoricProcessInstanceQuery().includeProcessVariables().unfinished().list();
-		Map<String, String> singleTask = null  ;
+		Map<String, String> singleTask = null;
 
 		for (HistoricProcessInstance historicProcessInstance : unFinishedTaskList) {
 			String userId = historicProcessInstance.getStartUserId();
diff --git a/src/main/java/com/highdatas/mdm/service/act/impl/RepositoryServiceImpl.java b/src/main/java/com/highdatas/mdm/service/act/impl/RepositoryServiceImpl.java
index 41c3c45..9396e88 100644
--- a/src/main/java/com/highdatas/mdm/service/act/impl/RepositoryServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/act/impl/RepositoryServiceImpl.java
@@ -30,6 +30,7 @@
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ClassUtils;
 
@@ -52,7 +53,8 @@
 	RepositoryService service;
 	@Autowired
 	ObjectMapper objectMapper;
-
+	@Value("${img.url}")
+	String basePath;
 	//download
     public void getModelXml(HttpServletResponse response, String modelId) throws IOException {
 		Model model = service.getModel(modelId);
@@ -443,12 +445,15 @@
 	      //1.3
 		  ObjectNode modelNode = (ObjectNode) new ObjectMapper().readTree(hashMap.get("json_xml").getBytes("utf-8"));
           BpmnModel bpmnModel = new BpmnJsonConverter().convertToBpmnModel(modelNode);
+		  if (bpmnModel.getProcesses().size() == 0) {
+		  	return false;
+		  }
           byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(bpmnModel);
 		  String processName = newModel.getName()+ ".bpmn20.xml";
           Deployment deployment = service.createDeployment().name(newModel.getName()).addString(processName,new String(bpmnBytes,"UTF-8")).deploy();
           newModel.setDeploymentId(deployment.getId());
           newModel.setCategory(deployment.getId());
-	      
+
 	      service.saveModel(newModel);
 	      
 	      //1.4
@@ -464,8 +469,7 @@
 		  service.addModelEditorSourceExtra(newModel.getId(), result);
 		  String newModelId = newModel.getId();
 		  //TODO dir 2.
-          String basePath = ClassUtils.getDefaultClassLoader().getResource("").getPath();
-          String path =  basePath + "static/processes/" + newModelId;
+          String path =  basePath  + newModelId;
 		  File dir = new File(path);
 		  if (!dir.exists()) {
 			  dir.mkdirs();
@@ -476,6 +480,7 @@
           if (file.exists()) {
 			file.delete();
           }
+          log.info(file.getAbsolutePath());
           file.createNewFile();
           fileOutputStream2 = new FileOutputStream(file);
           fileOutputStream2.write(bpmnBytes);
diff --git a/src/main/java/com/highdatas/mdm/service/impl/DeletedTableLogServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/DeletedTableLogServiceImpl.java
new file mode 100644
index 0000000..71e2914
--- /dev/null
+++ b/src/main/java/com/highdatas/mdm/service/impl/DeletedTableLogServiceImpl.java
@@ -0,0 +1,20 @@
+package com.highdatas.mdm.service.impl;
+
+import com.highdatas.mdm.entity.DeletedTableLog;
+import com.highdatas.mdm.mapper.DeletedTableLogMapper;
+import com.highdatas.mdm.service.IDeletedTableLogService;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author kimi
+ * @since 2020-01-13
+ */
+@Service
+public class DeletedTableLogServiceImpl extends ServiceImpl<DeletedTableLogMapper, DeletedTableLog> implements IDeletedTableLogService {
+
+}
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java
index f7c8f61..fc3971f 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MaintainServiceImpl.java
@@ -45,6 +45,7 @@
     MasterDataService masterDataService;
     @Autowired
     ISysFieldService fieldService;
+
     @Autowired
     MaintainMapper maintainMapper;
 
@@ -306,16 +307,22 @@
                 continue;
             }
             ActivitiStatus status = flows.getStatus();
-            if (status.equals(ActivitiStatus.open)) {
+            if (status.equals(ActivitiStatus.open) && nowMaintain == null) {
                 nowMaintain = maintain;
-                break;
+                continue;
+            }
+            if (!status.equals(ActivitiStatus.open) && nowMaintain != null){
+                nowMaintain = null;
             }
         }
         if (nowMaintain == null) {
             nowMaintain = selectOne(new EntityWrapper<Maintain>().eq("table_name", tableName).orderBy("version desc"));
         }
         int orderNo = nowMaintain.getOrderNo();
-        orderNo--;
+        Maintain nowVersion = getNowVersion(tableName);
+        if (nowVersion != null && nowVersion.getOrderNo() == orderNo) {
+            orderNo--;
+        }
         Maintain maintain = selectOne(new EntityWrapper<Maintain>().eq("table_name", nowMaintain.getTableName()).eq("order_no", orderNo));
         return maintain;
     }
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
index a04589d..855e7a2 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
@@ -472,6 +472,7 @@
         try {
             String[] split = fields.split(Constant.SEMICOLON);
             List<String> fieldNameList = Arrays.stream(split).map(s -> s.trim()).collect(Collectors.toList());
+            fields = fieldNameList.stream().collect(Collectors.joining(Constant.COMMA));
             ContentBuilder builder = new ContentBuilder(Constant.COMMA);
             Object parse = JSON.parse(values);
             List<String> ids = new ArrayList<>();
@@ -481,7 +482,7 @@
                 ids.add(id);
                 String sqlValues  = builder.toString();
                 mapper.insert(tableName, fields, sqlValues);
-                return Result.success(CodeMsg.INSERT_SUCCESS);
+                return Result.success(ids);
             } else if (parse instanceof JSONArray) {
                 JSONArray jsonArray = (JSONArray) parse;
                 int size = jsonArray.size();
@@ -582,6 +583,12 @@
     }
 
     @Override
+    public Result updateByStdId(String tableName, String fieldsSegment, String id, boolean total) {
+        String whereStr = DbUtils.combieOneSegment(Constant.STD_ID, id);
+        return update(tableName, fieldsSegment,whereStr, total);
+    }
+
+    @Override
     public Result update(String tableName, String fieldsSegment, boolean total) {
         String whereSegment = Constant.WHERE_DEFAULT;
         return update(tableName, fieldsSegment,whereSegment, total);
@@ -614,6 +621,31 @@
                 segment = new Segment(fieldName, String.valueOf(o));
             } else {
                 segment = new Segment(fieldName, o);
+            }
+            builder.append(segment.toString());
+        }
+        return builder.toString();
+    }
+
+    @Override
+    public String getUpdateSegment(String tableName, String alias, String fieldsSegment) {
+        ContentBuilder builder = new ContentBuilder(Constant.COMMA);
+        JSONObject jsonObject = JSONObject.parseObject(fieldsSegment);
+        List<TableSchemaResult> tableFieldResultList = mapper.getTableField(tableName);
+        for (TableSchemaResult tableSchemaResult : tableFieldResultList) {
+            String dbType = tableSchemaResult.getDbType();
+            String fieldName = tableSchemaResult.getFieldName();
+            Object o = jsonObject.get(fieldName);
+            if (o == null) {
+                continue;
+            }
+            String javaTypeStr = DbUtils.toSqlToJava(dbType);
+            Segment segment;
+            if ("string".equalsIgnoreCase(javaTypeStr.trim())) {
+
+                segment = new Segment(MessageFormat.format(Constant.Alias, alias, fieldName), String.valueOf(o));
+            } else {
+                segment = new Segment(MessageFormat.format(Constant.Alias, alias, fieldName), o);
             }
             builder.append(segment.toString());
         }
@@ -691,6 +723,12 @@
         String whereStr = DbUtils.combieOneSegment(Constant.ID, id);
         return  delete(tableName, whereStr);
     }
+
+    @Override
+    public Result deleteByStdId(String tableName, String id) {
+        String whereStr = DbUtils.combieOneSegment(Constant.STD_ID, id);
+        return  delete(tableName, whereStr);
+    }
     @Override
     public Result delete(String tableName, String whereSegment) {
         try {
diff --git a/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java b/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
index bdb7379..3e9bae2 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MenuMappingServiceImpl.java
@@ -22,6 +22,7 @@
 import com.highdatas.mdm.service.ISysMenuService;
 import com.highdatas.mdm.util.Constant;
 import com.highdatas.mdm.util.DbUtils;
+import com.highdatas.mdm.util.WorkflowUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -58,7 +59,7 @@
     public static final String key = "process";
 
     @Override
-    public boolean create(String json, HttpSession session) {
+    public MenuMapping create(String json, HttpSession session) {
         JSONObject jsonObject = JSONObject.parseObject(json);
 //        //1
 //        Flows flows = activitiService.start(key, session);
@@ -81,7 +82,7 @@
             menuMapping = objectMapper.readValue(json, MenuMapping.class);
         } catch (JsonProcessingException e) {
             e.printStackTrace();
-            return false;
+            return null;
         }
         //menuMapping.setMaintainId(maintainId);
         return  create(menuMapping);
@@ -109,10 +110,25 @@
         return null;
     }
 
-    public boolean create(MenuMapping menuMapping) {
+    public MenuMapping create(MenuMapping menuMapping) {
         menuMapping.setCreateTime(new Date());
         menuMapping.setId(DbUtils.getUUID());
-        return this.insert(menuMapping);
+        String name = menuMapping.getName();
+        name = DbUtils.getChineseOrEnglishOrNumber(name);
+        String tableName = WorkflowUtils.toFirstChar(name.toLowerCase());
+        tableName = Constant.MD + tableName;
+        String tableByName = tableInfoMapper.selectTableByName(tableName);
+        if (!StringUtils.isEmpty(tableByName)){
+            tableName =  tableName + "_" +  DbUtils.getUUID(5);
+        }
+        menuMapping.setTableName(tableName);
+        boolean insert = this.insert(menuMapping);
+        if (insert) {
+            return menuMapping;
+        } else {
+            return null;
+        }
+
     }
 
     @Override
diff --git a/src/main/java/com/highdatas/mdm/util/Constant.java b/src/main/java/com/highdatas/mdm/util/Constant.java
index c178428..6364547 100644
--- a/src/main/java/com/highdatas/mdm/util/Constant.java
+++ b/src/main/java/com/highdatas/mdm/util/Constant.java
@@ -46,4 +46,6 @@
     String A2 = "a2";
     String All = "all";
     String DataMenu = "DataMenu";
+    String AND = " and ";
+    String MD = "md_";
 }
diff --git a/src/main/java/com/highdatas/mdm/util/DbUtils.java b/src/main/java/com/highdatas/mdm/util/DbUtils.java
index 115281f..68763f1 100644
--- a/src/main/java/com/highdatas/mdm/util/DbUtils.java
+++ b/src/main/java/com/highdatas/mdm/util/DbUtils.java
@@ -88,6 +88,10 @@
         String id = UUID.randomUUID().toString().replaceAll("-", "");
         return id;
     }
+    public static String getUUID(int i)  {
+        String id = UUID.randomUUID().toString().replaceAll("-", "").substring(0, i);
+        return id;
+    }
 
     public static String combieOneSegment(String name, String value) {
         Segment segment = new Segment(name, value);
@@ -213,4 +217,21 @@
     public static int getOrderNoAdd(int orderNo) {
         return orderNo + 1;
     }
+
+    public static final String getChineseOrEnglishOrNumber(String str) {
+        StringBuffer sbf = new StringBuffer();
+        char[] charArray = str.toCharArray();
+        for (int i = 0; i < charArray.length; i++) {
+            if ((charArray[i] >= 0x4e00) && (charArray[i] <= 0x9fbb)) {
+                sbf.append(charArray[i]);
+            }
+            if ((charArray[i] >= 65) && (charArray[i] <= 122)) {
+                sbf.append(charArray[i]);
+            }
+            if (str.charAt(i) >= 48 && str.charAt(i) <= 57) {
+                sbf.append(charArray[i]);
+            }
+        }
+        return sbf.toString();
+    }
 }
diff --git a/src/main/java/com/highdatas/mdm/util/MpGenerator.java b/src/main/java/com/highdatas/mdm/util/MpGenerator.java
index f7ccee7..debef73 100644
--- a/src/main/java/com/highdatas/mdm/util/MpGenerator.java
+++ b/src/main/java/com/highdatas/mdm/util/MpGenerator.java
@@ -65,7 +65,7 @@
         // strategy.setCapitalMode(true);// 鍏ㄥ眬澶у啓鍛藉悕 ORACLE 娉ㄦ剰
         strategy.setTablePrefix(new String[]{""});// 姝ゅ鍙互淇敼涓烘偍鐨勮〃鍓嶇紑
         strategy.setNaming(NamingStrategy.underline_to_camel);// 琛ㄥ悕鐢熸垚绛栫暐
-        strategy.setInclude(new String[]{"sys_business_operate"}); // 闇�瑕佺敓鎴愮殑琛�
+        strategy.setInclude(new String[]{"deleted_table_log"}); // 闇�瑕佺敓鎴愮殑琛�
         // strategy.setExclude(new String[]{"test"}); // 鎺掗櫎鐢熸垚鐨勮〃
         // 鑷畾涔夊疄浣撶埗绫�
         // strategy.setSuperEntityClass("com.baomidou.demo.TestEntity");
diff --git a/src/main/java/com/highdatas/mdm/util/WorkflowUtils.java b/src/main/java/com/highdatas/mdm/util/WorkflowUtils.java
index 33a8f11..5758f74 100644
--- a/src/main/java/com/highdatas/mdm/util/WorkflowUtils.java
+++ b/src/main/java/com/highdatas/mdm/util/WorkflowUtils.java
@@ -1,10 +1,15 @@
 package com.highdatas.mdm.util;
 
+import com.highdatas.mdm.process.canvas.ProcessDiagramGenerator;
+import net.sourceforge.pinyin4j.PinyinHelper;
+import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType;
+import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat;
+import net.sourceforge.pinyin4j.format.HanyuPinyinToneType;
+import net.sourceforge.pinyin4j.format.exception.BadHanyuPinyinOutputFormatCombination;
 import org.activiti.bpmn.model.BpmnModel;
 import org.activiti.engine.ProcessEngineConfiguration;
 import org.activiti.engine.RepositoryService;
 import org.activiti.engine.repository.ProcessDefinition;
-import com.highdatas.mdm.process.canvas.ProcessDiagramGenerator;
 import org.apache.commons.io.FileUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -17,6 +22,11 @@
 
 public class WorkflowUtils {
 
+
+    public static void main(String[] args) {
+        System.out.println(toFirstChar("姹夊瓧杞崲涓烘嫾闊�").toUpperCase()); //杞负棣栧瓧姣嶅ぇ鍐�
+        //System.out.println(toPinyin("姹夊瓧杞崲涓烘嫾闊�"));
+    }
     private static Logger logger = LoggerFactory.getLogger(WorkflowUtils.class);
 
     /**
@@ -83,4 +93,54 @@
         return diagramPath;
     }
 
+
+    /**
+     * 鑾峰彇瀛楃涓叉嫾闊崇殑绗竴涓瓧姣�
+     * @param chinese
+     * @return
+     */
+    public static String toFirstChar(String chinese){
+        String pinyinStr = "";
+        char[] newChar = chinese.toCharArray();  //杞负鍗曚釜瀛楃
+        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        for (int i = 0; i < newChar.length; i++) {
+            if (newChar[i] > 128) {
+                try {
+                    pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0].charAt(0);
+                } catch (BadHanyuPinyinOutputFormatCombination e) {
+                    e.printStackTrace();
+                }
+            }else{
+                pinyinStr += newChar[i];
+            }
+        }
+        return pinyinStr;
+    }
+
+    /**
+     * 姹夊瓧杞负鎷奸煶
+     * @param chinese
+     * @return
+     */
+    public static String toPinyin(String chinese){
+        String pinyinStr = "";
+        char[] newChar = chinese.toCharArray();
+        HanyuPinyinOutputFormat defaultFormat = new HanyuPinyinOutputFormat();
+        defaultFormat.setCaseType(HanyuPinyinCaseType.LOWERCASE);
+        defaultFormat.setToneType(HanyuPinyinToneType.WITHOUT_TONE);
+        for (int i = 0; i < newChar.length; i++) {
+            if (newChar[i] > 128) {
+                try {
+                    pinyinStr += PinyinHelper.toHanyuPinyinStringArray(newChar[i], defaultFormat)[0];
+                } catch (BadHanyuPinyinOutputFormatCombination e) {
+                    e.printStackTrace();
+                }
+            }else{
+                pinyinStr += newChar[i];
+            }
+        }
+        return pinyinStr;
+    }
 }
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index a65091b..c49623d 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -1,13 +1,16 @@
 server:
   port: 9010
 #url: jdbc:mysql://180.169.94.250:8306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
+img:
+  url1: /usr/project/mdm/activiti
+  url : d:/datagovernance/file/activiti/
 
 spring:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://localhost:3306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
-    username: root
-    password: 123456
+    url: jdbc:mysql://180.169.94.250:8306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
+    username: masterdata
+    password: md123!
 
   activiti:
     database-schema-update: true
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 74d55c7..8273b0a 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -2,18 +2,19 @@
   port: 9010
 bak:
   url: 220.158.10.151
-
+img:
+  url: d:/datagovernance/file/activiti/
 baks:
-  url1: jdbc:mysql://127.0.0.1:3306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
+  url: jdbc:mysql://127.0.0.1:3306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
   username: root
   password: datacvg123!
 
 spring:
   datasource:
     driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://192.168.2.230:3306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
-    username: masterdata
-    password: md123!
+    url: jdbc:mysql://127.0.0.1:3306/data_admin?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC&nullCatalogMeansCurrent=true
+    username: root
+    password: datacvg123!
     hikari:
       minimum-idle: 3
       max-lifetime: 30000
@@ -28,21 +29,17 @@
     servlet:
       content-type: text/html
     encoding: utf-8
+
 logging:
   level:
     com:
       highdatas:
        mdm:
         mapper: DEBUG
+
 mybatis-plus:
   mapper-locations: classpath:mapping/*.xml
   type-aliases-package: com.highdatas.mdm.mapper
   global-config:
     db-config:
       column-underline: true
-
-exists:
-  callback:
-    url: http://192.168.2.68:18080/activiti/getBusinessId
-#activiti:
-#  check-process-definitions: false
\ No newline at end of file
diff --git a/src/main/resources/mapping/TableInfoMapper.xml b/src/main/resources/mapping/TableInfoMapper.xml
index 5526fe0..c208b70 100644
--- a/src/main/resources/mapping/TableInfoMapper.xml
+++ b/src/main/resources/mapping/TableInfoMapper.xml
@@ -28,9 +28,11 @@
           SELECT std_id FROM  ${tableTempName} tm
           LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
 		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
+		    LEFT JOIN flows f on maintain.flow_id = f.id
 		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
 		  and operate = 'create'
 		  AND tm.std_id = m.id
+		  AND f.status = 'open'
 		  and maintain.table_name = '${tableName}'
 		  ) ) a1
 		LEFT JOIN
@@ -42,8 +44,10 @@
         SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
         LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
         LEFT JOIN maintain m on m.id = md.parent_id
+        LEFT JOIN flows f on m.flow_id = f.id
         WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and  m.table_name = '${tableName}'
         and operate = 'update'
+        AND f.status = 'open'
         GROUP BY mt.std_id
         ) a on a.order_no = m.order_no and a.std_id = h.std_id
 		)a2 on a1.id = a2.id WHERE  a2.id is null
@@ -56,8 +60,10 @@
           SELECT std_id FROM  ${tableTempName} tm
           LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
 		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
+		  LEFT JOIN flows f on maintain.flow_id = f.id
 		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
 		  and operate = 'create'
+		  AND f.status = 'open'
 		  AND tm.std_id = m.id
 		  and maintain.table_name = '${tableName}'
 		  ) ) a1
@@ -70,23 +76,29 @@
         SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
         LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
         LEFT JOIN maintain m on m.id = md.parent_id
+        LEFT JOIN flows f on m.flow_id = f.id
         WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}'
         and operate = 'update'
+        AND f.status = 'open'
         GROUP BY mt.std_id
         ) a on a.order_no = m.order_no and a.std_id = h.std_id
 		)a2 on a1.id = a2.id WHERE  a2.id is not null
 			UNION
 		SELECT ${tempFields} FROM maintain_detail md
         LEFT JOIN maintain ON maintain.id = md.parent_id
+        LEFT JOIN flows f on maintain.flow_id = f.id
         LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
         WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'delete'
+         AND f.status = 'open'
          and  maintain.table_name = '${tableName}'
         AND NOT EXISTS (
             SELECT * FROM maintain_detail
             LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
             LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
+            LEFT JOIN flows f on maintain.flow_id = f.id
             WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
             AND operate = 'create'
+            AND f.status = 'open'
             AND mt.std_id = mt1.std_id
             and  maintain.table_name = '${tableName}'
         )
@@ -208,8 +220,10 @@
           SELECT std_id FROM  ${tableTempName} tm
           LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
 		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
+		  LEFT JOIN flows f on maintain.flow_id = f.id
 		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
 		  and  maintain.table_name = '${tableName}'
+		  AND f.status = 'open'
 		  and operate = 'create'
 		  AND tm.std_id = m.id
 		  ) ) a1
@@ -222,8 +236,10 @@
         SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
         LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
         LEFT JOIN maintain m on m.id = md.parent_id
+        LEFT JOIN flows f on m.flow_id = f.id
         WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and  m.table_name = '${tableName}'
         and operate = 'update'
+        AND f.status = 'open'
         GROUP BY mt.std_id
         ) a on a.order_no = m.order_no and a.std_id = h.std_id
 		)a2 on a1.id = a2.id WHERE  a2.id is null
@@ -236,8 +252,10 @@
           SELECT std_id FROM  ${tableTempName} tm
           LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id
 		  LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
+		  LEFT JOIN flows f on maintain.flow_id = f.id
 		  WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
 		   and maintain.table_name = '${tableName}'
+		   AND f.status = 'open'
 		  and operate = 'create'
 		  AND tm.std_id = m.id
 		  ) ) a1
@@ -250,8 +268,10 @@
         SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt
         LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id
         LEFT JOIN maintain m on m.id = md.parent_id
+        LEFT JOIN flows f on m.flow_id = f.id
         WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo}  and m.table_name = '${tableName}'
         and operate = 'update'
+        AND f.status = 'open'
         GROUP BY mt.std_id
         ) a on a.order_no = m.order_no and a.std_id = h.std_id
 		)a2 on a1.id = a2.id WHERE  a2.id is not null
@@ -259,15 +279,19 @@
 		SELECT ${tempFields} FROM maintain_detail md
         LEFT JOIN maintain ON maintain.id = md.parent_id
         LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id
+        LEFT JOIN flows f on maintain.flow_id = f.id
         WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
         and  maintain.table_name = '${tableName}'
+        AND f.status = 'open'
         AND operate = 'delete'
         AND NOT EXISTS (
             SELECT * FROM maintain_detail
             LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id
             LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id
+            LEFT JOIN flows f on maintain.flow_id = f.id
             WHERE  maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo}
             AND operate = 'create'
+            AND f.status = 'open'
             AND mt.std_id = mt1.std_id
             and  maintain.table_name = '${tableName}'
         )
@@ -437,4 +461,22 @@
         and maintain_detail.pre_merge_id = t.id
         )
     </select>
+
+
+    <select id="updateRecordByMaintainId" statementType="STATEMENT" resultType="java.lang.Integer">
+         update ${tableTempName}
+        INNER JOIN maintain_detail on ${tableTempName}.id = maintain_detail.pre_merge_id
+        set ${updateSegment}
+        WHERE maintain_detail.parent_id = ${maintainId}
+
+    </select>
+
+    <select id="deleteRecordByMaintainId" statementType="STATEMENT" resultType="java.lang.Integer">
+
+        DELETE  ${tableTempName} from  ${tableTempName}
+        INNER JOIN maintain_detail on maintain_detail.pre_merge_id =  ${tableTempName}.id
+        WHERE maintain_detail.parent_id = ${maintainId} and  ${tableTempName}.std_id = ${stdId}
+\
+
+    </select>
 </mapper>
diff --git a/src/main/resources/static/process/editor-app/configuration/toolbar-default-actions.js b/src/main/resources/static/process/editor-app/configuration/toolbar-default-actions.js
index 6600cfc..aa89d11 100644
--- a/src/main/resources/static/process/editor-app/configuration/toolbar-default-actions.js
+++ b/src/main/resources/static/process/editor-app/configuration/toolbar-default-actions.js
@@ -394,6 +394,9 @@
     	$scope.$hide();
     };
     $scope.closeMine = function () {
+        if (window.isShow) {
+            window.isShow = false;
+        }
         var browserName = navigator.appName;
         var browserVer = parseInt(navigator.appVersion);
         //alert(browserName + " : "+browserVer);
@@ -508,6 +511,11 @@
             url: KISBPM.URL.putModel(modelMetaData.modelId)})
 
             .success(function (data, status, headers, config) {
+                if (!data.success) {
+                    alert(data.message);
+                    $scope.status.loading = false;
+                    return;
+                }
                 $scope.editor.handleEvents({
                     type: ORYX.CONFIG.EVENT_SAVED
                 });

--
Gitblit v1.8.0