Prechádzať zdrojové kódy

Merge branch 'master' into rpt

fengyanjie 4 rokov pred
rodič
commit
6f42c4475b

+ 4 - 0
dmp-rwd-edit/pom.xml

@@ -83,6 +83,10 @@
             <artifactId>shiro-spring</artifactId>
             <version>1.4.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 0 - 2
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/EditApp.java

@@ -11,10 +11,8 @@ import org.apache.shiro.mgt.SecurityManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.cloud.client.SpringCloudApplication;
 import org.springframework.context.ConfigurableApplicationContext;
 import org.springframework.context.annotation.Bean;
-import org.springframework.core.env.ConfigurableEnvironment;
 
 import javax.persistence.EntityManager;
 

+ 40 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/AdminRoleController.java

@@ -0,0 +1,40 @@
+package com.persagy.dmp.rwd.edit.controller;
+
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.AdminRole;
+import com.persagy.dmp.rwd.edit.service.AdminRoleService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/rwdedit/system/role")
+public class AdminRoleController {
+    @Autowired
+    private AdminRoleService service;
+
+    @PostMapping("/query")
+    public PagedResponse<AdminRole> query(@RequestBody JacksonCriteria criteria) {
+        return service.query(criteria);
+    }
+
+    @PostMapping("/create")
+    public MapResponse create(@RequestBody AdminRole param) {
+        return service.create(param);
+    }
+
+    @PostMapping("/update")
+    public MapResponse update(@RequestBody AdminRole param) {
+        return service.update(param);
+    }
+
+    @PostMapping("/delete")
+    public MapResponse delete(@RequestBody AdminRole param) {
+        return service.delete(param);
+    }
+
+}

+ 40 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/AdminUserController.java

@@ -0,0 +1,40 @@
+package com.persagy.dmp.rwd.edit.controller;
+
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.entity.AdminUser;
+import com.persagy.dmp.rwd.edit.service.AdminUserService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/rwdedit/system/user")
+public class AdminUserController {
+    @Autowired
+    private AdminUserService service;
+
+    @PostMapping("/query")
+    public PagedResponse<AdminUser> query(@RequestBody JacksonCriteria criteria) {
+        return service.query(criteria);
+    }
+
+    @PostMapping("/create")
+    public MapResponse create(@RequestBody AdminUser param) {
+        return service.create(param);
+    }
+
+    @PostMapping("/update")
+    public MapResponse update(@RequestBody AdminUser param) {
+        return service.update(param);
+    }
+
+    @PostMapping("/delete")
+    public MapResponse delete(@RequestBody AdminUser param) {
+        return service.delete(param);
+    }
+
+}

+ 6 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/controller/ChangeRecordController.java

@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
@@ -40,4 +41,9 @@ public class ChangeRecordController {
         return service.delete(idList);
     }
 
+    @PostMapping("/download")
+    public void download(@RequestBody List<Integer> idList, HttpServletResponse response) {
+        service.download(response, idList);
+    }
+
 }

+ 4 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/entity/ChangeRecord.java

@@ -6,8 +6,10 @@ import com.persagy.dmp.rwd.edit.model.ChangeRecordModel;
 import com.vladmihalcea.hibernate.type.json.JsonStringType;
 import lombok.Getter;
 import lombok.Setter;
+import org.hibernate.annotations.SQLDelete;
 import org.hibernate.annotations.Type;
 import org.hibernate.annotations.TypeDef;
+import org.hibernate.annotations.Where;
 
 import javax.persistence.*;
 import java.util.Date;
@@ -17,6 +19,8 @@ import java.util.Date;
 @Entity
 @Table(name = "rwd_change_record")
 @TypeDef(name = "json", typeClass = JsonStringType.class)
+@Where(clause = "valid = 1")
+@SQLDelete(sql = "update rwd_change_record set valid = 0 where id = ?")
 public class ChangeRecord {
 
     @Id

+ 152 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/AdminRoleService.java

@@ -0,0 +1,152 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.config.web.UserUtils;
+import com.persagy.dmp.rwd.edit.entity.AdminPermission;
+import com.persagy.dmp.rwd.edit.entity.AdminRole;
+import com.persagy.dmp.rwd.edit.entity.QAdminPermission;
+import com.persagy.dmp.rwd.edit.entity.QAdminRole;
+import com.persagy.dmp.rwd.edit.repository.AdminPermissionRepository;
+import com.persagy.dmp.rwd.edit.repository.AdminRoleRepository;
+import com.querydsl.core.types.dsl.BooleanExpression;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+public class AdminRoleService {
+
+    @Autowired
+    private AdminRoleRepository adminRoleRepository;
+
+    @Autowired
+    private AdminPermissionRepository permissionRepository;
+
+    @Autowired
+    private CriteriaUtils criteriaUtils;
+
+    private List<BooleanExpression> parse(ObjectNode criteria) {
+        // TODO
+        return null;
+    }
+
+    public PagedResponse<AdminRole> query(JacksonCriteria criteria) {
+        PagedResponse<AdminRole> query = criteriaUtils.query(QAdminRole.adminRole, this::parse, criteria);
+
+        // permissions
+        PagedResponse<AdminRole> resp = new PagedResponse<>();
+        resp.setCount(query.getCount());
+        List<AdminRole> data = query.getData();
+        if (data != null) {
+            boolean withPermissions = criteria.withColumn("permissions");
+            List<AdminRole> list = new ArrayList<>(data.size());
+            for (AdminRole role : data) {
+                AdminRole model = new AdminRole();
+                BeanUtils.copyProperties(role, model, "permissions");
+                if (withPermissions) {
+                    model.setPermissions(role.getPermissions());
+                }
+                list.add(model);
+            }
+            resp.setData(list);
+        }
+        return resp;
+    }
+
+    @Transactional
+    public MapResponse create(AdminRole param) {
+        MapResponse response = new MapResponse();
+        // TODO
+        String name = param.getName();
+        if (name == null) {
+            response.setFail("name is required");
+            return response;
+        }
+
+        long count = adminRoleRepository.count(QAdminRole.adminRole.name.eq(name));
+        if (count > 0) {
+            response.setFail("name is exists");
+            return response;
+        }
+
+        AdminRole role = new AdminRole();
+        role.setName(param.getName());
+        role.setRemark(param.getRemark());
+        role.setCreateUser(UserUtils.currentUserId());
+        role.setStatus(1);
+        adminRoleRepository.save(role);
+        response.add("id", role.getId());
+        return response;
+    }
+
+    @Transactional
+    public MapResponse update(AdminRole param) {
+        MapResponse response = new MapResponse();
+        // TODO
+        Integer roleId = param.getId();
+        Optional<AdminRole> opt = adminRoleRepository.findById(roleId);
+        if (!opt.isPresent()) {
+            response.setFail("data not exists");
+            return response;
+        }
+
+        AdminRole role = opt.get();
+        if (param.getRemark() != null) {
+            role.setRemark(param.getRemark());
+        }
+
+        // TODO
+        List<AdminPermission> permissions = param.getPermissions();
+        if (permissions != null) {
+            role.getPermissions().clear();
+            for (AdminPermission permission : permissions) {
+                if (permission.getSign() == null) {
+                    continue;
+                }
+
+                AdminPermission entity;
+                Optional<AdminPermission> optp = permissionRepository.findOne(QAdminPermission.adminPermission.sign.eq(permission.getSign()));
+                if (!optp.isPresent()) {
+                    entity = new AdminPermission();
+                    entity.setSign(permission.getSign());
+                    entity.setStatus(1);
+                    permissionRepository.save(entity);
+                } else {
+                    entity = optp.get();
+                    if (entity.getStatus() != 1) {
+                        continue;
+                    }
+                }
+                role.getPermissions().add(entity);
+            }
+        }
+        role.setUpdateUser(UserUtils.currentUserId());
+        adminRoleRepository.save(role);
+        return response;
+    }
+
+    @Transactional
+    public MapResponse delete(AdminRole param) {
+        MapResponse response = new MapResponse();
+        // TODO
+        Integer userId = param.getId();
+        Optional<AdminRole> opt = adminRoleRepository.findById(userId);
+        if (opt.isPresent()) {
+            AdminRole role = opt.get();
+            role.setStatus(0);
+            role.setUpdateUser(UserUtils.currentUserId());
+            adminRoleRepository.save(role);
+        }
+        return response;
+    }
+}
+

+ 143 - 0
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/AdminUserService.java

@@ -0,0 +1,143 @@
+package com.persagy.dmp.rwd.edit.service;
+
+import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.persagy.common.criteria.CriteriaUtils;
+import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.security.MD5Utils;
+import com.persagy.common.web.MapResponse;
+import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.rwd.edit.config.web.UserUtils;
+import com.persagy.dmp.rwd.edit.entity.AdminRole;
+import com.persagy.dmp.rwd.edit.entity.AdminUser;
+import com.persagy.dmp.rwd.edit.entity.AdminUserProject;
+import com.persagy.dmp.rwd.edit.entity.QAdminUser;
+import com.persagy.dmp.rwd.edit.repository.AdminUserRepository;
+import com.querydsl.core.types.dsl.BooleanExpression;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.transaction.Transactional;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@Service
+public class AdminUserService {
+
+    @Autowired
+    private AdminUserRepository adminUserRepository;
+
+    @Autowired
+    private CriteriaUtils criteriaUtils;
+
+    private List<BooleanExpression> parse(ObjectNode criteria) {
+        // TODO
+        return null;
+    }
+
+    public PagedResponse<AdminUser> query(JacksonCriteria criteria) {
+        PagedResponse<AdminUser> query = criteriaUtils.query(QAdminUser.adminUser, this::parse, criteria);
+        PagedResponse<AdminUser> resp = new PagedResponse<>();
+        resp.setCount(query.getCount());
+        List<AdminUser> data = query.getData();
+        if (data != null && data.size() > 0) {
+            Set<String> withColumns = criteria.getWithColumns();
+            List<AdminUser> list = new ArrayList<>(data.size());
+            boolean withRoles = withColumns != null && withColumns.contains("roles");
+            boolean withProjects = withColumns != null && withColumns.contains("projects");
+            for (AdminUser user : data) {
+                AdminUser model = new AdminUser();
+                BeanUtils.copyProperties(user, model, "password", "roles", "projects");
+                if (withRoles) {
+                    model.setRoles(user.getRoles());
+                }
+                if (withProjects) {
+                    model.setProjects(user.getProjects());
+                }
+                list.add(model);
+            }
+            resp.setData(list);
+        }
+        return resp;
+    }
+
+    @Transactional
+    public MapResponse create(AdminUser param) {
+        MapResponse response = new MapResponse();
+        // TODO
+        String username = param.getUsername();
+        if (username == null) {
+            response.setFail("账号不可为空!");
+            return response;
+        }
+        long count = adminUserRepository.count(QAdminUser.adminUser.username.eq(username));
+        if (count > 0) {
+            response.setFail("账号已存在!");
+            return response;
+        }
+
+        AdminUser entity = new AdminUser();
+        entity.setUsername(username);
+        entity.setRealname(param.getRealname());
+        entity.setPassword(MD5Utils.getSign(username + "123456"));
+        entity.setCreateUser(UserUtils.currentUserId());
+        entity.setStatus(1);
+        adminUserRepository.save(entity);
+        response.add("id", entity.getId());
+        return response;
+    }
+
+    @Transactional
+    public MapResponse update(AdminUser param) {
+        MapResponse response = new MapResponse();
+        // TODO
+        Integer userId = param.getId();
+        AdminUser user = adminUserRepository.findById(userId).get();
+        String realname = param.getRealname();
+        if (realname != null) {
+            user.setRealname(realname);
+        }
+        String phone = param.getPhone();
+        if (phone != null) {
+            user.setPhone(phone);
+        }
+        String remark = param.getRemark();
+        if (remark != null) {
+            user.setRemark(remark);
+        }
+
+        List<AdminRole> roles = param.getRoles();
+        if (roles != null) {
+            user.getRoles().clear();
+            user.getRoles().addAll(roles);
+        }
+
+        List<AdminUserProject> projects = param.getProjects();
+        if (projects != null) {
+            user.getProjects().clear();
+            for (AdminUserProject project : projects) {
+                project.setUser(user);
+            }
+            user.getProjects().addAll(projects);
+        }
+
+        adminUserRepository.save(user);
+        response.add("id", userId);
+        return response;
+    }
+
+    @Transactional
+    public MapResponse delete(AdminUser param) {
+        MapResponse response = new MapResponse();
+        // TODO
+
+        Integer id = param.getId();
+        AdminUser user = adminUserRepository.findById(id).get();
+        user.setStatus(0);
+        user.setUpdateUser(UserUtils.currentUserId());
+        adminUserRepository.save(user);
+        return response;
+    }
+}
+

+ 220 - 10
dmp-rwd-edit/src/main/java/com/persagy/dmp/rwd/edit/service/ChangeRecordService.java

@@ -1,43 +1,58 @@
 package com.persagy.dmp.rwd.edit.service;
 
+import com.fasterxml.jackson.databind.node.ArrayNode;
+import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
+import com.google.gson.Gson;
+import com.google.gson.JsonSyntaxException;
+import com.google.gson.reflect.TypeToken;
 import com.persagy.common.criteria.CriteriaUtils;
 import com.persagy.common.criteria.JacksonCriteria;
+import com.persagy.common.date.DateUtils;
+import com.persagy.common.json.JacksonMapper;
 import com.persagy.common.web.MapResponse;
 import com.persagy.common.web.PagedResponse;
+import com.persagy.dmp.common.http.HttpUtils;
 import com.persagy.dmp.rwd.edit.config.web.UserUtils;
 import com.persagy.dmp.rwd.edit.entity.ChangeRecord;
 import com.persagy.dmp.rwd.edit.entity.QChangeRecord;
+import com.persagy.dmp.rwd.edit.enumeration.EnumOperationType;
 import com.persagy.dmp.rwd.edit.repository.ChangeRecordRepository;
 import com.querydsl.core.types.dsl.BooleanExpression;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.actuate.endpoint.OperationType;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletResponse;
 import javax.transaction.Transactional;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
+import java.io.*;
+import java.net.URLEncoder;
+import java.util.*;
 
 @Slf4j
 @Service
 public class ChangeRecordService {
 
+    @Value("${persagy.dmp.server}")
+    private String dmpServer;
+
     @Autowired
     ChangeRecordRepository repository;
 
     @Autowired
     CriteriaUtils criteriaUtils;
 
+    @Autowired
+    HttpUtils httpUtils;
+
     private List<BooleanExpression> parse(ObjectNode object) {
         List<BooleanExpression> list = new LinkedList<>();
         QChangeRecord qt = QChangeRecord.changeRecord;
         list.addAll(CriteriaUtils.parse(qt.id, object.get("id")));
         list.addAll(CriteriaUtils.parse(qt.code, object.get("code")));
         list.addAll(CriteriaUtils.parse(qt.infoCode, object.get("infoCode")));
-        list.addAll(CriteriaUtils.parse(qt.operationType, object.get("operationType"), OperationType.class));
+        list.addAll(CriteriaUtils.parse(qt.operationType, object.get("operationType"), EnumOperationType.class));
         list.addAll(CriteriaUtils.parse(qt.operationUser, object.get("operationUser")));
         list.addAll(CriteriaUtils.parse(qt.operationTime, object.get("operationTime")));
         list.addAll(CriteriaUtils.parse(qt.confirmUser, object.get("confirmUser")));
@@ -45,7 +60,6 @@ public class ChangeRecordService {
         list.addAll(CriteriaUtils.parse(qt.publishUser, object.get("publishUser")));
         list.addAll(CriteriaUtils.parse(qt.publishTime, object.get("publishTime")));
         list.addAll(CriteriaUtils.parse(qt.finishTime, object.get("finishTime")));
-        list.addAll(CriteriaUtils.parse(qt.valid, object.get("valid")));
         list.addAll(CriteriaUtils.parse(qt.state, object.get("state")));
         return list;
     }
@@ -58,6 +72,30 @@ public class ChangeRecordService {
     @Transactional
     public MapResponse create(ChangeRecord param) {
         MapResponse response = new MapResponse();
+        String code = param.getCode();
+        String infoCode = param.getInfoCode();
+        if (code == null) {
+            response.setFail("code is required");
+            return response;
+        }
+        if (EnumOperationType.create.equals(param.getOperationType())) {
+            Boolean isExists = isExists(code, infoCode);
+            if (!isExists) {
+                response.setFail("code is exists");
+                return response;
+            }
+        }
+        QChangeRecord qt = QChangeRecord.changeRecord;
+        BooleanExpression ex = qt.code.eq(code).and(qt.state.eq(1));
+        if (infoCode != null) {
+            ex.and(qt.infoCode.eq(infoCode));
+        }
+        Iterable<ChangeRecord> all = repository.findAll(ex);
+        List<ChangeRecord> list = new ArrayList<>();
+        all.forEach(list::add);
+        if (list.size() > 0) {
+            repository.deleteAll(list);
+        }
         param.setOperationUser(UserUtils.currentUserId() + "");
         param.setOperationTime(new Date());
         param.setValid(true);
@@ -67,6 +105,36 @@ public class ChangeRecordService {
         return response;
     }
 
+    private Boolean isExists(String code, String infoCode) {
+        JacksonCriteria criteria = JacksonCriteria.newInstance();
+        HttpUtils.HttpResult result;
+        if (infoCode != null) {
+            criteria.add("type", "common");
+            criteria.add("classCode", code);
+            criteria.add("code", infoCode);
+            StringBuilder url = new StringBuilder(dmpServer);
+            url.append("/rwd/def/funcid");
+            url.append("?groupCode=0");
+            result = httpUtils.post(url.toString(), JacksonMapper.toSimpleJson(criteria), 300000);
+        } else {
+            criteria.add("type", "common");
+            criteria.add("code", code);
+            StringBuilder url = new StringBuilder(dmpServer);
+            url.append("/rwd/def/funcid");
+            url.append("?groupCode=0");
+            result = httpUtils.post(url.toString(), JacksonMapper.toSimpleJson(criteria), 300000);
+        }
+        if (result.success()) {
+            String content = result.getContent();
+            ObjectNode object = JacksonMapper.toObject(content, ObjectNode.class);
+            ArrayNode data = JacksonMapper.getArray(object, "data", JsonNodeFactory.instance.arrayNode());
+            if (data.size() > 0) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     @Transactional
     public MapResponse update(ChangeRecord param) {
         MapResponse response = new MapResponse();
@@ -83,18 +151,18 @@ public class ChangeRecordService {
         if (param.getValue() != null) {
             changeRecord.setValue(param.getValue());
         }
-        if (param.getState() == 2) {
+        if (param.getState() != null) {
             changeRecord.setState(param.getState());
+        }
+        if (param.getState() == 2) {
             changeRecord.setConfirmUser(UserUtils.currentUserId() + "");
             changeRecord.setConfirmTime(new Date());
         }
         if (param.getState() == 3) {
-            changeRecord.setState(param.getState());
             changeRecord.setPublishUser(UserUtils.currentUserId() + "");
             changeRecord.setPublishTime(new Date());
         }
         if (param.getState() == 4) {
-            changeRecord.setState(param.getState());
             changeRecord.setFinishTime(new Date());
         }
         repository.save(changeRecord);
@@ -110,6 +178,148 @@ public class ChangeRecordService {
         return response;
     }
 
+    @Transactional
+    public void download(HttpServletResponse resp, List<Integer> idList) {
+        List<ChangeRecord> data = repository.findAllById(idList);
+        data.forEach(item -> {
+            item.setState(3);
+            item.setPublishUser(UserUtils.currentUserId() + "");
+            item.setPublishTime(new Date());
+        });
+        repository.saveAll(data);
+
+        String fileName = DateUtils.format(new Date()) + ".sql";
+        List<String> sqlList = getSqlList(idList);
+
+        OutputStream out = null;
+        try {
+            InputStream stream = getStream(sqlList);
+            resp.reset();// 清空输出流
+            String resultFileName = URLEncoder.encode(fileName, "UTF-8");
+            resp.setCharacterEncoding("UTF-8");
+            resp.setHeader("Content-disposition", "attachment; filename=" + resultFileName);// 设定输出文件头
+            resp.setContentType("application/txt");// 定义输出类型
+            out = resp.getOutputStream();
+            byte[] buff = new byte[4096];
+            int size = 0;
+            while ((size = stream.read(buff)) != -1) {
+                out.write(buff, 0, size);
+            }
+            out.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            try {
+                if (out != null) {
+                    out.close();
+                }
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    public InputStream getStream(List<String> list) throws IOException {
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        DataOutputStream out = new DataOutputStream(baos);
+        for (String sql : list) {
+            out.writeBytes(sql + "\r\n");
+        }
+        byte[] bytes = baos.toByteArray();
+        ByteArrayInputStream tInputStringStream = new ByteArrayInputStream(bytes);
+        baos.close();
+        out.close();
+        return tInputStringStream;
+    }
+
+    private List<String> getSqlList(List<Integer> idList) {
+        List<String> sqlList = new ArrayList<>();
+        List<ChangeRecord> data = repository.findAllById(idList);
+        for (ChangeRecord changeRecord : data) {
+            StringBuilder sql = new StringBuilder();
+            Map<String, Object> map = json2map(JacksonMapper.toSimpleJson(changeRecord.getValue()));
+            switch (changeRecord.getOperationType()) {
+                case create:
+                    sql.append("insert into");
+                    if (changeRecord.getInfoCode() == null) {
+                        sql.append(" RWD_DEF_CLASS");
+                    } else {
+                        sql.append(" RWD_DEF_FUNCID");
+                    }
+                    sql.append(" (");//表名
+                    map.keySet().forEach(item -> {
+                        sql.append(humpToUnderline(item) + ",");
+                    });
+                    sql.deleteCharAt(sql.length() - 1);
+                    sql.append(") values (");
+                    map.values().forEach(item -> {
+                        sql.append("'" + item + "',");
+                    });
+                    sql.deleteCharAt(sql.length() - 1);
+                    sql.append(")");
+                    break;
+                case update:
+                    sql.append("update");
+                    if (changeRecord.getInfoCode() == null) {
+                        sql.append(" RWD_DEF_CLASS");
+                    } else {
+                        sql.append(" RWD_DEF_FUNCID");
+                    }
+                    sql.append(" set");
+                    for (Map.Entry<String, Object> entry : map.entrySet()) {
+                        sql.append(" " + humpToUnderline(entry.getKey()) + " = '" + entry.getValue() + "',");
+                    }
+                    sql.deleteCharAt(sql.length() - 1);
+                    break;
+                case delete:
+                    sql.append("delete from");
+                    if (changeRecord.getInfoCode() == null) {
+                        sql.append(" RWD_DEF_CLASS");
+                    } else {
+                        sql.append(" RWD_DEF_FUNCID");
+                    }
+                    break;
+            }
+            sql.append(" where 1=1");
+            if (changeRecord.getInfoCode() == null) {
+                sql.append(" and code = '" + changeRecord.getCode() + "'");
+            } else {
+                sql.append(" and class_code = '" + changeRecord.getCode() + "'");
+                sql.append(" and code = '" + changeRecord.getInfoCode() + "'");
+            }
+            sql.append(";");
+            sqlList.add(sql.toString());
+        }
+        return sqlList;
+    }
+
+    private static Map<String, Object> json2map(String str_json) {
+        Map<String, Object> res = null;
+        try {
+            Gson gson = new Gson();
+            res = gson.fromJson(str_json, new TypeToken<Map<String, Object>>() {
+            }.getType());
+        } catch (JsonSyntaxException e) {
+        }
+        return res;
+    }
+
+    /***
+     * 驼峰命名转为下划线命名
+     */
+    private String humpToUnderline(String para) {
+        StringBuilder sb = new StringBuilder(para);
+        int temp = 0;//定位
+        if (!para.contains("_")) {
+            for (int i = 0; i < para.length(); i++) {
+                if (Character.isUpperCase(para.charAt(i))) {
+                    sb.insert(i + temp, "_");
+                    temp += 1;
+                }
+            }
+        }
+        return sb.toString().toUpperCase();
+    }
 
 }