kimi42345
2020-03-02 2411eadd4ad4bef5c08c6ba2ea5898ea72136e29
src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
@@ -4,23 +4,21 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.highdatas.mdm.entity.Flows;
import com.highdatas.mdm.entity.Maintain;
import com.highdatas.mdm.entity.SysField;
import com.highdatas.mdm.entity.TableSchemaResult;
import com.highdatas.mdm.entity.*;
import com.highdatas.mdm.mapper.TableInfoMapper;
import com.highdatas.mdm.pojo.*;
import com.highdatas.mdm.service.IFlowsService;
import com.highdatas.mdm.service.IMaintainService;
import com.highdatas.mdm.service.ISysFieldService;
import com.highdatas.mdm.service.MasterDataService;
import com.highdatas.mdm.service.*;
import com.highdatas.mdm.util.Constant;
import com.highdatas.mdm.util.ContentBuilder;
import com.highdatas.mdm.util.DbUtils;
import org.apache.commons.lang3.StringUtils;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.sql.Connection;
import java.sql.SQLException;
import java.text.MessageFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -34,14 +32,19 @@
@Service
public class MasterDataServiceImpl implements MasterDataService {
    @Autowired
    IMenuMappingService menuMappingService;
    @Autowired
    TableInfoMapper mapper;
    @Autowired
    ISysFieldService fieldService;
    @Autowired
    IMaintainService maintainService;
    @Autowired
    IMaintainDetailService maintainDetailService;
    @Autowired
    IFlowsService flowsService;
    @Resource
    protected SqlSessionTemplate sqlSessionTemplate;
    @Override
    public Result selectById(String tableName, String id) {
        try{
@@ -391,7 +394,107 @@
        return Result.success(resultobject);
    }
   //bak
    @Override
    public Maintain uploadedData(String tableName, SysAssembleUpdateType uploadType, String userId) {
        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)) {
                biggerVersion = mVersion;
                maintain.setOrderNo(maxVersion.getOrderNo());
                String tempName = maxVersion.getTableName() + Constant.RECORD;
                mapper.deleteTempByMaintainId(tempName, DbUtils.quotedStr(maxVersion.getId()));
                maintainDetailService.delete(new EntityWrapper<MaintainDetail>().eq("parent_id", maxVersion.getId()));
                maxVersion.deleteById();
            }else {
                biggerVersion = DbUtils.versionAddBig(mVersion);
                maintain.setOrderNo(DbUtils.getOrderNoAdd(maxVersion.getOrderNo()));
            }
        }
        String uuid = DbUtils.getUUID();
        maintain.setId(uuid);
        maintain.setVersion(biggerVersion);
        maintain.setChargeId(userId);
        maintain.setTableName(tableName);
        maintain.setCreateTime(new Date());
        Connection connection = sqlSessionTemplate.getConnection();
        try {
            mapper.insertMatintainDetailFromTemp(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD , DbUtils.quotedStr(Operate.create.toString()));
            connection.commit();
            mapper.updateStdId( maintain.getTableName() + Constant.RECORD);
            connection.commit();
            Integer aLong = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId()));
            connection.commit();
            if (aLong == null) {
                maintain.setDesp("上传数据");
            }
            maintain.setDesp(MessageFormat.format("上传数据{0}条", aLong));
            if (uploadType.equals(SysAssembleUpdateType.All)) {
                List<TableSchemaResult> tableField = mapper.getTableField(tableName);
                List<String> tableFieldList = tableField.stream().map(tableSchemaResult -> tableSchemaResult.getFieldName()).collect(Collectors.toList());
                tableFieldList.add(Constant.STD_ID);
                String collect = tableFieldList.stream().map(s -> s.equalsIgnoreCase(Constant.ID) ? MessageFormat.format(Constant.FieldAsAlias, Constant.MYSQL_UUID, Constant.ID) : s)
                        .map(s -> s.equalsIgnoreCase(Constant.STD_ID) ? MessageFormat.format(Constant.FieldAsAlias, Constant.ID, Constant.STD_ID) : s).collect(Collectors.joining(Constant.COMMA));
                mapper.insertRecordFromStandrad(maintain.getTableName(), maintain.getTableName() + Constant.RECORD, collect);
                connection.commit();
                mapper.insertMatintainDetailFromStandrad(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD);
                connection.commit();
                Integer standradCnt = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId()));
                connection.commit();
                if (standradCnt != null) {
                    maintain.setDesp(maintain.getDesp() + MessageFormat.format("删除原数据{0}条", standradCnt));
                }else {
                    maintain.setDesp(maintain.getDesp() + "删除原数据");
                }
                maintain.setDesp(maintain.getDesp() + MessageFormat.format("删除原数据{0}条", standradCnt));
            }
            operateLog.setCreateTime(new Date())
                    .setMaintainId(maintain.getId())
                    .setId(DbUtils.getUUID())
                    .setMaintainId(menuMapping.getId())
                    .setOperate("open")
                    .setDesp(MessageFormat.format("上传数据{0}条", aLong));
            maintain.insert();
            connection.commit();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        finally {
            if (connection != null) {
                try {
                    connection.commit();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        return maintain;
    }
    //bak
    public Result selectListByPage(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version) {
        Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
        long changeCount = maintainService.countVersionOperatorByType(tableName + Constant.RECORD, whereSegment, maintainFromVersion.getId(), Operate.create);
@@ -472,6 +575,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 +585,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 +686,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 +724,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 +826,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 {