|
@@ -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;
|
|
|
}
|
|
|
|