|
@@ -1865,65 +1865,80 @@ 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 targetJson = this.contractLogClient.queryContractLogById(theLogId);
|
|
|
- if (targetJson == null) {
|
|
|
- return R.fail("目标日期下未找到当前用户填报的数据,请重新选择");
|
|
|
- }
|
|
|
- //查询是否存在关联工序的数据
|
|
|
- List<JSONObject> wbsJsonList = this.contractLogClient.queryContractLogWbsByTheLogId(targetJson.getString("id"));
|
|
|
-
|
|
|
- //获取目标数据所在数据表
|
|
|
- WbsTreePrivate table = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, targetJson.getString("tableId")));
|
|
|
-
|
|
|
- //获取目标数据
|
|
|
- String queryTargetDataSql = "SELECT * FROM " + table.getInitTableName() + " WHERE group_id = " + targetJson.getString("dataId");
|
|
|
- List<Map<String, Object>> targetDatas = this.jdbcTemplate.queryForList(queryTargetDataSql);
|
|
|
|
|
|
//检查当前日期下是否存在数据
|
|
|
JSONObject currentJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, currentTime, contractId);
|
|
|
String businessId = SnowFlakeUtil.getId().toString();
|
|
|
boolean isNew = true;
|
|
|
if (currentJson != null) {
|
|
|
- //有记录,需要删除掉原本记录填写的数据
|
|
|
- String removeOldSql = "DELETE FROM " + table.getInitTableName() + " WHERE group_id = " + currentJson.getString("dataId");
|
|
|
- this.jdbcTemplate.execute(removeOldSql);
|
|
|
-
|
|
|
- //删除掉原本关联的工序节点
|
|
|
- this.contractLogClient.removeContractLogWbsByTheLogId(currentJson.getString("id"));
|
|
|
-
|
|
|
//使用原本的数据ID
|
|
|
businessId = currentJson.getString("dataId");
|
|
|
isNew = false;
|
|
|
}
|
|
|
+
|
|
|
//新增的SQL集合
|
|
|
List<String> insertSqlList = new ArrayList<>();
|
|
|
+ //关联集合
|
|
|
+ List<JSONObject> logWbsList = new ArrayList<>();
|
|
|
+ //记录第一组
|
|
|
+ List<JSONObject> oneGroupLogWbsList = new ArrayList<>();
|
|
|
|
|
|
- //只需要替换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.Entry<String, Object> mapEntry : dataMap.entrySet()) {
|
|
|
- String key = mapEntry.getKey();
|
|
|
- Object value = mapEntry.getValue();
|
|
|
-
|
|
|
- if ("id".equals(key)) {
|
|
|
- value = SnowFlakeUtil.getId();
|
|
|
- } else if ("group_id".equals(key)) {
|
|
|
- value = businessId;
|
|
|
- }
|
|
|
- //设置参数
|
|
|
- keySql.append(",").append(key);
|
|
|
- if (value != null && StringUtils.isNotEmpty(String.valueOf(value))) {
|
|
|
- valueSql.append(",").append("'").append(value).append("'");
|
|
|
- } else {
|
|
|
- valueSql.append(",").append(value);
|
|
|
+ List<JSONObject> targetJsonList = this.contractLogClient.queryContractLogByIds(Func.toStrList(theLogId));
|
|
|
+ if (targetJsonList == null || targetJsonList.size() <= 0) {
|
|
|
+ return R.fail("目标日期下未找到当前用户填报的数据,请重新选择");
|
|
|
+ }
|
|
|
+
|
|
|
+ for(JSONObject targetJson : targetJsonList){
|
|
|
+
|
|
|
+ //获取目标数据所在数据表
|
|
|
+ WbsTreePrivate table = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, targetJson.getString("tableId")));
|
|
|
+
|
|
|
+ //获取目标数据
|
|
|
+ String queryTargetDataSql = "SELECT * FROM " + table.getInitTableName() + " WHERE group_id = " + targetJson.getString("dataId");
|
|
|
+ List<Map<String, Object>> targetDatas = 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.Entry<String, Object> mapEntry : dataMap.entrySet()) {
|
|
|
+ String key = mapEntry.getKey();
|
|
|
+ Object value = mapEntry.getValue();
|
|
|
+
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ wbsJsonList = new ArrayList<>(oneGroupLogWbsList);
|
|
|
+ }
|
|
|
+ for(JSONObject json : wbsJsonList){
|
|
|
+ json.put("businessId", value);
|
|
|
+ }
|
|
|
+
|
|
|
+ logWbsList.addAll(wbsJsonList);
|
|
|
+ } else if ("group_id".equals(key)) {
|
|
|
+ value = businessId;
|
|
|
+ }
|
|
|
+ //设置参数
|
|
|
+ keySql.append(",").append(key);
|
|
|
+ if (value != null && StringUtils.isNotEmpty(String.valueOf(value))) {
|
|
|
+ valueSql.append(",").append("'").append(value).append("'");
|
|
|
+ } else {
|
|
|
+ valueSql.append(",").append(value);
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //组装SQL
|
|
|
- insertSql.append(" (").append(keySql.toString().substring(1)).append(") ");
|
|
|
- insertSql.append(" VALUES(").append(valueSql.toString().substring(1)).append(")");
|
|
|
+ //组装SQL
|
|
|
+ insertSql.append(" (").append(keySql.toString().substring(1)).append(") ");
|
|
|
+ insertSql.append(" VALUES(").append(valueSql.toString().substring(1)).append(")");
|
|
|
|
|
|
- insertSqlList.add(insertSql.toString());
|
|
|
+ insertSqlList.add(insertSql.toString());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (insertSqlList.size() > 0) {
|
|
@@ -1935,13 +1950,13 @@ public class ExcelTabController extends BladeController {
|
|
|
//处理数据
|
|
|
this.contractLogClient.saveContractLog(new SaveContractLogVO(
|
|
|
Long.parseLong(businessId),
|
|
|
- targetJson.getString("projectId"),
|
|
|
- targetJson.getString("contractId"),
|
|
|
- Long.parseLong(targetJson.getString("wbsNodeId")),
|
|
|
- Long.parseLong(targetJson.getString("tableId")),
|
|
|
- Integer.parseInt(targetJson.getString("wbsNodeType")),
|
|
|
+ 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,
|
|
|
- wbsJsonList
|
|
|
+ logWbsList
|
|
|
));
|
|
|
|
|
|
//返回当前的新数据
|