From d0451fdd55195901e65e5c4b3b64028a86f9e669 Mon Sep 17 00:00:00 2001
From: kimi42345 <kimi42345@outlook.com>
Date: 星期日, 22 三月 2020 22:10:54 +0800
Subject: [PATCH] no message

---
 src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java |  235 ++++++++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 202 insertions(+), 33 deletions(-)

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 855e7a2..5bf0349 100644
--- a/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
+++ b/src/main/java/com/highdatas/mdm/service/impl/MasterDataServiceImpl.java
@@ -4,23 +4,24 @@
 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.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
+import javax.annotation.Resource;
+import javax.sql.DataSource;
+import java.sql.Connection;
+import java.sql.SQLException;
 import java.text.MessageFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -34,13 +35,20 @@
 @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 DataSource dataSource;
 
     @Override
     public Result selectById(String tableName, String id) {
@@ -133,14 +141,18 @@
             return null;
         }
     }
+
+    @Override
     public Long getCountByVersion (String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) {
         try{
-            String fields = getFields(tableName);
-            String Hfields = getFields(tableName, Constant.H);
-            String tempFields = getTempFields(tableName);
-            String A1fields = getFields(tableName, Constant.A1);
-            String A2fields = getFields(tableName, Constant.A2);
-            String tempHFields = getTempFields(tableName, Constant.H);
+            Maintain maintain = maintainService.selectById(maintainId);
+
+            String fields = getFields(tableName, maintain);
+            String Hfields = getFields(tableName, Constant.H, maintain);
+            String tempFields = getTempFields(tableName, maintain);
+            String A1fields = getFields(tableName, Constant.A1, maintain);
+            String A2fields = getFields(tableName, Constant.A2, maintain);
+            String tempHFields = getTempFields(tableName, Constant.H, maintain);
             if (StringUtils.isEmpty(whereSegment)) {
                 whereSegment = Constant.WHERE_DEFAULT;
             }
@@ -155,12 +167,14 @@
 
     public Long getCountByMaxVersion (String maintainId, String tableName,String tableTempName,Integer fromOrderNo, Integer toOrderNo, String whereSegment) {
         try{
-            String fields = getFields(tableName);
-            String Hfields = getFields(tableName, Constant.H);
-            String tempFields = getTempFields(tableName);
-            String A1fields = getFields(tableName, Constant.A1);
-            String A2fields = getFields(tableName, Constant.A2);
-            String tempHFields = getTempFields(tableName, Constant.H);
+            Maintain maintain = maintainService.selectById(maintainId);
+
+            String fields = getFields(tableName, maintain);
+            String Hfields = getFields(tableName, Constant.H, maintain);
+            String tempFields = getTempFields(tableName, maintain);
+            String A1fields = getFields(tableName, Constant.A1, maintain);
+            String A2fields = getFields(tableName, Constant.A2, maintain);
+            String tempHFields = getTempFields(tableName, Constant.H, maintain);
             if (StringUtils.isEmpty(whereSegment)) {
                 whereSegment = Constant.WHERE_DEFAULT;
             }
@@ -176,7 +190,13 @@
 
     @Override
     public String getFields(String tableName) {
-        return getFields(tableName, null);
+        return getFields(tableName, Constant.EMPTY_Str);
+    }
+
+    @Override
+    public String getFields(String tableName, Maintain maintain) {
+
+        return getFields(tableName, null, maintain);
     }
 
     private String getCaseWhenFields(String tableName) {
@@ -213,8 +233,38 @@
     }
 
     @Override
+    public String getFields(String tableName, String alias, Maintain maintain) {
+        List<SysField> fields = fieldService.getFieldByMaintain(maintain.getId());
+        ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA);
+        if (!fields.contains(Constant.ID)) {
+            fields.add(new SysField().setField(Constant.ID));
+        }
+
+        for (SysField field : fields) {
+            String fieldName = field.getField();
+            if (fieldName.equalsIgnoreCase(Constant.DEAL)) {
+                //DEAL 涓嶇粰鐪�
+                continue;
+            }
+            if (StringUtils.isEmpty(alias)) {
+                contentBuilder.append(fieldName);
+            } else {
+                contentBuilder.append(MessageFormat.format(Constant.Alias,alias,fieldName));
+            }
+
+        }
+
+        return contentBuilder.toString();
+    }
+
+    @Override
+    public String getTempFields(String tableName, Maintain maintain) {
+        return getTempFields(tableName, null, maintain);
+    }
+
+    @Override
     public String getTempFields(String tableName) {
-        return getTempFields(tableName, null);
+        return getTempFields(tableName, Constant.EMPTY_Str);
     }
     @Override
     public String getTempFields(String tableName, String alias) {
@@ -222,6 +272,33 @@
         ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA);
         for (TableSchemaResult tableSchemaResult : tableField) {
             String fieldName = tableSchemaResult.getFieldName();
+            if (fieldName.equalsIgnoreCase(Constant.ID)) {
+                if (StringUtils.isEmpty(alias)) {
+                    contentBuilder.append(MessageFormat.format("{0} as id", Constant.STD_ID));
+                } else {
+                    contentBuilder.append(MessageFormat.format("{0}.{1} as id", alias, Constant.STD_ID));
+                }
+                continue;
+            }
+            if (StringUtils.isEmpty(alias)) {
+                contentBuilder.append(fieldName);
+            } else {
+                contentBuilder.append(MessageFormat.format(Constant.Alias,alias,fieldName));
+            }
+        }
+        return contentBuilder.toString();
+    }
+
+    @Override
+    public String getTempFields(String tableName, String alias, Maintain maintain) {
+        List<SysField> fields = fieldService.getFieldByMaintain(maintain.getId());
+        ContentBuilder contentBuilder = new ContentBuilder(Constant.COMMA);
+        if (!fields.contains(Constant.ID)) {
+            fields.add(new SysField().setField(Constant.ID));
+        }
+
+        for (SysField field : fields) {
+            String fieldName = field.getField();
             if (fieldName.equalsIgnoreCase(Constant.ID)) {
                 if (StringUtils.isEmpty(alias)) {
                     contentBuilder.append(MessageFormat.format("{0} as id", Constant.STD_ID));
@@ -279,6 +356,7 @@
 
     @Override
     public Result selectListByPageByVersion(String tableName, List<String> fieldList, String whereSegment, Integer pageNo, Integer pageSize, String version, boolean findMax) {
+
         Maintain maintainFromVersion = maintainService.getMaintainFromVersion(tableName, version);
         Maintain nowVersionMaintain = maintainService.getNowVersion(tableName);
         boolean isMax = maintainService.checkdMaxVersion(maintainFromVersion.getId());
@@ -327,12 +405,12 @@
 
         String tempHfields;
         if (fieldList == null || fieldList.size() == 0) {
-            fields = getFields(tableName);
-            Hfields = getFields(tableName,Constant.H);
-            A1fields = getFields(tableName,Constant.A1);
-            A2fields = getFields(tableName,Constant.A2);
-            tempFields = getTempFields(tableName);
-            tempHfields = getTempFields(tableName, Constant.H);
+            fields = getFields(tableName, maintainFromVersion);
+            Hfields = getFields(tableName,Constant.H, maintainFromVersion);
+            A1fields = getFields(tableName,Constant.A1, maintainFromVersion);
+            A2fields = getFields(tableName,Constant.A2, maintainFromVersion);
+            tempFields = getTempFields(tableName, maintainFromVersion);
+            tempHfields = getTempFields(tableName, Constant.H, maintainFromVersion);
         } else {
             fields = fieldList.stream().collect(Collectors.joining(Constant.COMMA));
             Hfields = fieldList.stream().map(s -> MessageFormat.format(Constant.Alias,Constant.H, s)).collect(Collectors.joining(Constant.COMMA));
@@ -370,7 +448,7 @@
 
         EntityWrapper<SysField> sysFieldEntityWrapper = new EntityWrapper<>();
         sysFieldEntityWrapper.eq("table_name", tableName);
-        List<SysField> sysFields = fieldService.selectList(sysFieldEntityWrapper);
+        List<SysField> sysFields = fieldService.getFieldByMaintain(maintainFromVersion.getId());
         if (isMax) {
             sysFields.add(new SysField().setAlias("鏁版嵁鐘舵��").setField("operate").setVisible(true).setFormat("operate_"));
             sysFields.add(new SysField().setAlias("瀹℃壒鐘舵��").setField("status").setVisible(true).setFormat("status_"));
@@ -391,7 +469,97 @@
         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;
+        try {
+            connection = dataSource.getConnection();
+            connection.setAutoCommit(false);
+            mapper.insertMatintainDetailFromTemp(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD , DbUtils.quotedStr(Operate.create.toString()));
+            mapper.updateStdId( maintain.getTableName() + Constant.RECORD);
+            Integer aLong = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId()));
+            if (aLong == null) {
+                maintain.setDesp("涓婁紶鏁版嵁");
+            }else {
+                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);
+                mapper.insertMatintainDetailFromStandrad(DbUtils.quotedStr(maintain.getId()), maintain.getTableName() + Constant.RECORD);
+                Integer standradCnt = mapper.tempDeal(maintain.getTableName() + Constant.RECORD, DbUtils.quotedStr(maintain.getId()));
+
+                if (standradCnt != null) {
+                    maintain.setDesp(maintain.getDesp() + MessageFormat.format("鍒犻櫎鍘熸暟鎹畕0}鏉�", standradCnt));
+                }else {
+                    maintain.setDesp(maintain.getDesp() + "鍒犻櫎鍘熸暟鎹�");
+                }
+
+            }
+
+            operateLog.setCreateTime(new Date())
+                    .setMaintainId(maintain.getId())
+                    .setId(DbUtils.getUUID())
+                    .setMaintainId(menuMapping.getId())
+                    .setOperate("open")
+                    .setDesp("鎵归噺涓婁紶鏁版嵁");
+
+            maintain.insert();
+            connection.commit();
+        }
+        catch (Exception 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);
@@ -506,9 +674,10 @@
 
     public Result insert(String tableName, String json) {
         try {
-            List<TableSchemaResult> tableFieldList = mapper.getTableField(tableName);
-            List<String> fieldNameList = tableFieldList.stream().map(TableSchemaResult::getFieldName).collect(Collectors.toList());
-            String fields = tableFieldList.stream().map(TableSchemaResult::getFieldName).collect(Collectors.joining(Constant.COMMA));
+            List<SysField> fieldByTable = fieldService.getFieldByTable(tableName);
+
+            List<String> fieldNameList = fieldByTable.stream().map(sysField -> sysField.getField()).collect(Collectors.toList());
+            String fields = fieldByTable.stream().map(sysField -> sysField.getField()).collect(Collectors.joining(Constant.COMMA));
 
             ContentBuilder builder = new ContentBuilder(Constant.COMMA);
             Object parse = JSON.parse(json);

--
Gitblit v1.8.0