Bläddra i källkod

日志填报复制相关

liuyc 1 år sedan
förälder
incheckning
4d7c9b1db4

+ 4 - 1
blade-service/blade-business/src/main/java/org/springblade/business/controller/ImageClassificationFileController.java

@@ -635,13 +635,16 @@ public class ImageClassificationFileController extends BladeController {
             ImageClassificationFile newFile = this.copyBeanData(fileVO, true);
             this.setUserData(null, newFile, false);
             String[] urls = fileVO.getImageUrl().split(",");
-            Long total = 0L;
+            long total = 0L;
             for (String url : urls) {
                 long urlSize = getResourceLength(url);
                 total += urlSize;
             }
             String size = formatSize(total);
             newFile.setFileSize(size);
+            newFile.setClassifyId(fileVO.getClassifyId());
+            newFile.setContractId(fileVO.getContractId());
+            newFile.setProjectId(fileVO.getProjectId());
             //落库数据
             return R.status(this.imageClassificationFileService.save(newFile));
         } catch (Exception e) {

+ 63 - 52
blade-service/blade-manager/src/main/java/org/springblade/manager/controller/ExcelTabController.java

@@ -61,6 +61,7 @@ import org.springblade.resource.feign.IOSSClient;
 import org.springblade.resource.feign.NewIOSSClient;
 import org.springblade.resource.vo.NewBladeFile;
 import org.springblade.system.cache.ParamCache;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
@@ -2669,51 +2670,41 @@ public class ExcelTabController extends BladeController {
     })
     public R<List<Map<String, Object>>> copyTheLogBusinessData(@RequestParam String theLogId, @RequestParam String nodePrimaryKeyId, @RequestParam String currentTime, @RequestParam String contractId) {
         if (StringUtils.isNotEmpty(theLogId) && StringUtils.isNotEmpty(currentTime)) {
-
-            //检查当前日期下是否存在数据
-            JSONObject currentJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, currentTime, contractId);
-            String businessId = SnowFlakeUtil.getId().toString();
-            boolean isNew = true;
-            if (currentJson != null) {
-                //使用原本的数据ID
-                businessId = currentJson.getString("dataId");
-                isNew = false;
-            }
-
-            //新增的SQL集合
+            //复制出来的新日志记录logIds
+            List<String> logIds = new ArrayList<>();
+            //复制出来的新增表的实体表SQL集合
             List<String> insertSqlList = new ArrayList<>();
-            //关联集合
+            //复制出来的新增表关联工序节点集合
             List<JSONObject> logWbsList = new ArrayList<>();
             //记录第一组
             List<JSONObject> oneGroupLogWbsList = new ArrayList<>();
 
-            List<JSONObject> targetJsonList = this.contractLogClient.queryContractLogByIds(Func.toStrList(theLogId));
-            if (targetJsonList == null || targetJsonList.size() <= 0) {
-                return R.fail("目标日期下未找到当前用户填报的数据,请重新选择");
+            //获取所有选择的日志表的数据信息
+            List<ContractLog> contractLogList = jdbcTemplate.query("select * from u_contract_log where id in(" + theLogId + ")", new BeanPropertyRowMapper<>(ContractLog.class));
+            if (contractLogList.size() <= 0) {
+                return R.fail("未获取到选择日志填报信息");
             }
-
-            for (JSONObject targetJson : targetJsonList) {
-
-                //获取目标数据所在数据表
-                WbsTreePrivate table = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, targetJson.getString("tableId")));
-
+            Long tabId = contractLogList.stream().map(ContractLog::getTableId).collect(Collectors.toSet()).stream().findAny().orElse(null);
+            //获取目标数据所在数据表
+            WbsTreePrivate tableTemp = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tabId));
+            boolean var = true;
+            for (ContractLog objLog : contractLogList) {
+                long dataId = 0;
                 //获取目标数据
-                String queryTargetDataSql = "SELECT * FROM " + table.getInitTableName() + " WHERE group_id = " + targetJson.getString("dataId");
-                List<Map<String, Object>> targetDatas = this.jdbcTemplate.queryForList(queryTargetDataSql);
+                String queryTargetDataSql = "SELECT * FROM " + tableTemp.getInitTableName() + " WHERE id = " + objLog.getDataId();
+                List<Map<String, Object>> targetData = this.jdbcTemplate.queryForList(queryTargetDataSql);
 
                 //只需要替换group_id和id即可
-                for (Map<String, Object> dataMap : targetDatas) {
-                    StringBuilder insertSql = new StringBuilder("INSERT INTO " + table.getInitTableName()), keySql = new StringBuilder(), valueSql = new StringBuilder();
+                for (Map<String, Object> dataMap : targetData) {
+                    StringBuilder insertSql = new StringBuilder("INSERT INTO " + tableTemp.getInitTableName()), keySql = new StringBuilder(), valueSql = new StringBuilder();
                     for (Map.Entry<String, Object> mapEntry : dataMap.entrySet()) {
                         String key = mapEntry.getKey();
                         Object value = mapEntry.getValue();
 
+                        //重构id相关
                         if ("id".equals(key)) {
-                            //查询是否有关联记录
                             //查询是否存在关联工序的数据
                             List<JSONObject> wbsJsonList = this.contractLogClient.queryContractLogWbsByBusinessId(value.toString());
-                            //重置业务ID
-                            value = SnowFlakeUtil.getId();
                             if (wbsJsonList != null && wbsJsonList.size() > 0) {
                                 if (oneGroupLogWbsList.size() == 0) {
                                     oneGroupLogWbsList.addAll(wbsJsonList);
@@ -2721,14 +2712,25 @@ public class ExcelTabController extends BladeController {
                             } else {
                                 wbsJsonList = new ArrayList<>(oneGroupLogWbsList);
                             }
+
+                            //重构实体表的id对应log的dataId
+                            value = SnowFlakeUtil.getId();
+
+                            //赋值给log的dataId,也就是businessId要与实体表数据id对应
+                            dataId = Long.parseLong(String.valueOf(value));
+
+                            //后续关联工序节点businessId赋值,businessId=实体表数据的id
                             for (JSONObject json : wbsJsonList) {
-                                json.put("businessId", value);
+                                json.put("businessId", dataId);
                             }
-
                             logWbsList.addAll(wbsJsonList);
-                        } else if ("group_id".equals(key)) {
-                            value = businessId;
                         }
+
+                        //重构实体表数据的pKeyId分组
+                        if ("group_id".equals(key)) {
+                            value = tableTemp.getPKeyId();
+                        }
+
                         //设置参数
                         keySql.append(",").append(key);
                         if (value != null && StringUtils.isNotEmpty(String.valueOf(value))) {
@@ -2737,36 +2739,45 @@ public class ExcelTabController extends BladeController {
                             valueSql.append(",").append(value);
                         }
                     }
-                    //组装SQL
+                    //组装实体表数据SQL
                     insertSql.append(" (").append(keySql.substring(1)).append(") ");
                     insertSql.append(" VALUES(").append(valueSql.substring(1)).append(")");
-
                     insertSqlList.add(insertSql.toString());
                 }
+
+                if (dataId != 0) {
+                    //处理log当前表的记录数据
+                    String id = this.contractLogClient.saveContractLog(new SaveContractLogVO(
+                            dataId,
+                            String.valueOf(objLog.getProjectId()),
+                            String.valueOf(objLog.getContractId()),
+                            objLog.getWbsNodeId(),
+                            objLog.getTableId(),
+                            objLog.getWbsNodeType(),
+                            currentTime,
+                            logWbsList
+                    ));
+                    //log记录id
+                    if (StringUtils.isNotEmpty(id)) {
+                        logIds.add(id);
+                    }
+                } else {
+                    var = false;
+                }
             }
 
-            if (insertSqlList.size() > 0) {
-                //新增数据
+            if (insertSqlList.size() > 0 && var) {
+                //新增实体表数据
                 for (String insertSql : insertSqlList) {
                     this.jdbcTemplate.execute(insertSql);
                 }
+            } else {
+                throw new ServiceException("数据构造失败");
             }
-            //处理数据
-            this.contractLogClient.saveContractLog(new SaveContractLogVO(
-                    Long.parseLong(businessId),
-                    targetJsonList.get(0).getString("projectId"),
-                    targetJsonList.get(0).getString("contractId"),
-                    Long.parseLong(targetJsonList.get(0).getString("wbsNodeId")),
-                    Long.parseLong(targetJsonList.get(0).getString("tableId")),
-                    Integer.parseInt(targetJsonList.get(0).getString("wbsNodeType")),
-                    currentTime,
-                    logWbsList
-            ));
-
-            //返回当前的新数据
-            return this.getTheLogBusinessData(!isNew ? currentJson.getString("id") : null, nodePrimaryKeyId, currentTime, contractId);
-        }
 
+            //返回当前复制的表数据
+            return this.getTheLogBusinessData(StringUtils.join(logIds, ","), nodePrimaryKeyId, currentTime, contractId);
+        }
         return null;
     }