|
@@ -28,6 +28,7 @@ import org.jsoup.nodes.Document;
|
|
|
import org.jsoup.nodes.Element;
|
|
|
import org.jsoup.select.Elements;
|
|
|
import org.springblade.business.feign.ContractLogClient;
|
|
|
+import org.springblade.business.vo.SaveContractLogVO;
|
|
|
import org.springblade.common.constant.CommonConstant;
|
|
|
import org.springblade.common.utils.CommonUtil;
|
|
|
import org.springblade.common.utils.MathUtil;
|
|
@@ -1766,7 +1767,7 @@ public class ExcelTabController extends BladeController {
|
|
|
}
|
|
|
|
|
|
//获取数据
|
|
|
- List<Map<String, Object>> businessDataMapList = (List<Map<String, Object>>)this.getTheLogBusinessData(theLogId, nodePrimaryKeyId, recordTime).getData();
|
|
|
+ List<Map<String, Object>> businessDataMapList = this.getTheLogBusinessData(theLogId, nodePrimaryKeyId, recordTime).getData();
|
|
|
//PDF路径
|
|
|
List<String> pdfUrls = new ArrayList<>();
|
|
|
|
|
@@ -1872,6 +1873,7 @@ public class ExcelTabController extends BladeController {
|
|
|
int y1 = Integer.parseInt(data.children().get(0).attr("y1"));
|
|
|
|
|
|
final CellRange cellRange = sheet.getCellRange(y1, x1);
|
|
|
+
|
|
|
cellRange.setText(e.getId() + "");
|
|
|
cellRange.getCellStyle().getFont().setColor(Color.white);
|
|
|
|
|
@@ -1919,11 +1921,18 @@ public class ExcelTabController extends BladeController {
|
|
|
return R.data(null);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取当前用户当前日期的填报记录
|
|
|
+ */
|
|
|
@GetMapping("/get-the-log-business-data")
|
|
|
@ApiOperationSupport(order = 26)
|
|
|
@ApiOperation(value = "获取当前用户当前日期的填报记录")
|
|
|
- @ApiImplicitParam(name = "theLogId", value = "日志ID", required = true)
|
|
|
- public R getTheLogBusinessData(String theLogId, String nodePrimaryKeyId, String recordTime) {
|
|
|
+ @ApiImplicitParams({
|
|
|
+ @ApiImplicitParam(name = "theLogId", value = "日志记录的id,可能为空"),
|
|
|
+ @ApiImplicitParam(name = "nodePrimaryKeyId", value = "当前操作的日志类型ID,即左侧列表的节点primaryKeyId"),
|
|
|
+ @ApiImplicitParam(name = "recordTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd")
|
|
|
+ })
|
|
|
+ public R<List<Map<String, Object>>> getTheLogBusinessData(String theLogId, String nodePrimaryKeyId, String recordTime) {
|
|
|
List<Map<String, Object>> resultMapList = new ArrayList<>();
|
|
|
//获取对应的记录
|
|
|
JSONObject theLogJson;
|
|
@@ -2011,4 +2020,99 @@ public class ExcelTabController extends BladeController {
|
|
|
return R.data(resultMapList);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 复制指定日期的日志填报数据
|
|
|
+ */
|
|
|
+ @GetMapping("/copy-the-log-business-data")
|
|
|
+ @ApiOperationSupport(order = 27)
|
|
|
+ @ApiOperation(value = "复制指定日期的日志填报数据")
|
|
|
+ @ApiImplicitParams({
|
|
|
+ @ApiImplicitParam(name = "nodePrimaryKeyId", value = "当前操作的日志类型ID,即左侧列表的节点primaryKeyId"),
|
|
|
+ @ApiImplicitParam(name = "currentTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd"),
|
|
|
+ @ApiImplicitParam(name = "targetTime", value = "需要复制的目标日期")
|
|
|
+ })
|
|
|
+ public R<List<Map<String, Object>>> copyTheLogBusinessData(@RequestParam String nodePrimaryKeyId, @RequestParam String currentTime, @RequestParam String targetTime){
|
|
|
+ if(StringUtils.isNotEmpty(nodePrimaryKeyId) && StringUtils.isNotEmpty(currentTime) && StringUtils.isNotEmpty(targetTime)){
|
|
|
+ //获取目标的数据
|
|
|
+ JSONObject targetJson = this.contractLogClient.queryContractLogByPrimaryKeyIdAndRecordTime(nodePrimaryKeyId, targetTime);
|
|
|
+ if(targetJson == null){
|
|
|
+ return R.fail("目标日期下未找到当前用户填报的数据,请重新选择");
|
|
|
+ }
|
|
|
+ //查询是否存在关联工序的数据
|
|
|
+ List<JSONObject> wbsJsonList = this.contractLogClient.queryContractLogWbsByTheLogId(targetJson.getString("id"));
|
|
|
+
|
|
|
+ //获取目标数据所在数据表
|
|
|
+ WbsTreePrivate table = this.wbsTreePrivateService.getById(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);
|
|
|
+ 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<>();
|
|
|
+
|
|
|
+ //只需要替换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);
|
|
|
+ valueSql.append(",").append("'").append(value).append("'");
|
|
|
+ }
|
|
|
+ //组装SQL
|
|
|
+ insertSql.append(" (").append(keySql.toString().substring(1)).append(") ");
|
|
|
+ insertSql.append(" VALUES(").append(valueSql.toString().substring(1)).append(")");
|
|
|
+
|
|
|
+ insertSqlList.add(insertSql.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ if(insertSqlList.size() > 0){
|
|
|
+ //新增数据
|
|
|
+ for(String insertSql : insertSqlList){
|
|
|
+ this.jdbcTemplate.execute(insertSql);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //处理数据
|
|
|
+ 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")),
|
|
|
+ currentTime,
|
|
|
+ wbsJsonList
|
|
|
+ ));
|
|
|
+
|
|
|
+ //返回当前的新数据
|
|
|
+ return this.getTheLogBusinessData(!isNew ? currentJson.getString("id") : null, nodePrimaryKeyId, currentTime);
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
}
|