瀏覽代碼

日志填报对接

huangjn 2 年之前
父節點
當前提交
8a29e04cd7

+ 21 - 5
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/SaveContractLogVO.java

@@ -2,24 +2,28 @@ package org.springblade.business.vo;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.apache.http.client.utils.DateUtils;
+import org.springblade.core.tool.utils.DateUtil;
+
+import java.util.Date;
 
 @Data
 public class SaveContractLogVO {
 
     @ApiModelProperty("列表数据主键")
-    private Long id;
+    private Long dataId;
 
     @ApiModelProperty("项目ID")
-    private String projectId;
+    private Long projectId;
 
     @ApiModelProperty("合同段ID")
-    private String contractId;
+    private Long contractId;
 
     @ApiModelProperty("日志填报的节点ID(唯一键)")
-    private String wbsNodeId;
+    private Long wbsNodeId;
 
     @ApiModelProperty("填报的日志类型")
-    private String wbsNodeType;
+    private Integer wbsNodeType;
 
     @ApiModelProperty("填报日期,所选的日期")
     private String recordTime;
@@ -27,4 +31,16 @@ public class SaveContractLogVO {
     @ApiModelProperty("关联工序的ids")
     private String correlationId;
 
+    public SaveContractLogVO(Long businessId, String projectId, String contractId, Long wbsNodeId, Integer wbsNodeType, String recordTime, String correlationId){
+        this.dataId = businessId;
+        this.projectId = Long.parseLong(projectId);
+        this.contractId = Long.parseLong(contractId);
+        this.wbsNodeId = wbsNodeId;
+        this.wbsNodeType = wbsNodeType;
+        this.recordTime = recordTime;
+        this.correlationId = correlationId;
+    }
+
+    public SaveContractLogVO(){}
+
 }

+ 2 - 0
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ContractLogClientImpl.java

@@ -7,6 +7,7 @@ import org.springblade.business.entity.ContractLog;
 import org.springblade.business.feign.ContractLogClient;
 import org.springblade.business.service.IContractLogService;
 import org.springblade.business.vo.SaveContractLogVO;
+import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springframework.beans.BeanUtils;
@@ -35,6 +36,7 @@ public class ContractLogClientImpl implements ContractLogClient {
             }
         } else {
             //新增
+            contractLog.setId(SnowFlakeUtil.getId());
             contractLog.setCreateUser(AuthUtil.getUserId());
             contractLog.setCreateUserName(AuthUtil.getUserName());
 

+ 9 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/bean/TableInfo.java

@@ -28,4 +28,13 @@ public class TableInfo {
      */
     private String isTheLog;
 
+    /**
+     * huangjn 2022-09-14 15:27 日志ID
+     */
+    private String theLogId;
+
+    private String linkTabIds;
+
+    private String recordTime;
+
 }

+ 143 - 56
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -31,31 +31,23 @@ import org.jsoup.Jsoup;
 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.feign.InformationQueryClient;
+import org.springblade.business.vo.SaveContractLogVO;
 import org.springblade.common.utils.SnowFlakeUtil;
 import org.springblade.core.oss.model.BladeFile;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tool.node.ForestNodeMerger;
-import org.springblade.core.tool.utils.Func;
-import org.springblade.core.tool.utils.IoUtil;
-import org.springblade.core.tool.utils.ResourceUtil;
-import org.springblade.core.tool.utils.StringPool;
+import org.springblade.core.tool.utils.*;
 import org.springblade.manager.bean.TableInfo;
 import org.springblade.manager.dto.FormData;
-import org.springblade.manager.entity.ExcelTab;
-import org.springblade.manager.entity.Formula;
-import org.springblade.manager.entity.WbsTree;
-import org.springblade.manager.entity.WbsTreeContract;
+import org.springblade.manager.entity.*;
 import org.springblade.manager.formula.KeyMapper;
 import org.springblade.manager.formula.impl.TableElementConverter;
-import org.springblade.manager.service.IFormulaService;
-import org.springblade.manager.service.IWbsParamService;
-import org.springblade.manager.service.IWbsTreeContractService;
-import org.springblade.manager.service.IWbsTreeService;
+import org.springblade.manager.service.*;
 import org.springblade.manager.vo.ExceTabTreVO;
 import org.springblade.manager.vo.ExcelTabVO;
 import org.springblade.manager.mapper.ExcelTabMapper;
-import org.springblade.manager.service.IExcelTabService;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.manager.vo.ExcelTabWbsTypeVO;
 import org.springblade.manager.vo.WbsTreeVO;
@@ -89,6 +81,10 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 
 	private final IWbsParamService wbsParamService;
 
+	private final IWbsTreePrivateService wbsTreePrivateService;
+
+	private final ContractLogClient contractLogClient;
+
 	@Override
 	public IPage<ExcelTabVO> selectExcelTabPage(IPage<ExcelTabVO> page, ExcelTabVO excelTab) {
 		return page.setRecords(baseMapper.selectExcelTabPage(page, excelTab));
@@ -176,6 +172,24 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 				}
 				//huangjn 判断是否是日志
 
+				//huangjn 日志ID
+				if(dataInfo2.containsKey("theLogId")){
+					tableInfo.setTheLogId(dataInfo2.getString("theLogId"));
+				}
+				//huangjn 日志ID
+
+				//huangjn 日志勾选的工序
+				if(dataInfo2.containsKey("linkTabIds")){
+					tableInfo.setLinkTabIds(dataInfo2.getString("linkTabIds"));
+				}
+				//huangjn 日志勾选的工序
+
+				//huangjn 日志所选时间
+				if(dataInfo2.containsKey("recordTime")){
+					tableInfo.setRecordTime(dataInfo2.getString("recordTime"));
+				}
+				//huangjn 日志所选时间
+
 				dataInfo2.fluentRemove("contractId")
 						 .fluentRemove("pkeyId")
 						 .fluentRemove("p_key_id")
@@ -185,6 +199,9 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 				         .fluentRemove("id")
 						 .fluentRemove("isFirst")
 						 .fluentRemove("isTheLog")
+						 .fluentRemove("theLogId")
+						 .fluentRemove("linkTabIds")
+						 .fluentRemove("recordTime")
 				         .fluentRemove("");
 				// 计算数据
 				LinkedHashMap<String,List<String>> dataMap =dataInfo2.keySet().stream().filter(e->e.contains("__")).collect(Collectors.groupingBy(e->e.split("__")[0], LinkedHashMap<String,List<String>>::new,Collectors.toList()));
@@ -254,62 +271,132 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 		}
 	}
 
+	/**
+	 * 保存日志
+	 */
+	private void saveOrUpdateTheLog(List<TableInfo> tableInfoList){
+		String businessId = tableInfoList.get(0).getTheLogId();
+		if(StringUtils.isEmpty(businessId)){
+			businessId = SnowFlakeUtil.getId().toString();
+		}
+		String linkTabIds = tableInfoList.get(0).getLinkTabIds();
+		String recordTime = tableInfoList.get(0).getRecordTime();
+		if(StringUtils.isEmpty(recordTime)){
+			//为空,默认今天
+			recordTime = DateUtil.format(new Date(), "yyyy-MM-dd");
+		}
+
+		for(TableInfo tableInfo : tableInfoList){
+			WbsTreePrivate wbsTreePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tableInfo.getPkeyId()));
+			if(wbsTreePrivate == null){
+				continue;
+			}
+			String tabName = wbsTreePrivate.getInitTableName();
+
+			if(StringUtils.isNotEmpty(businessId)){
+				//删除旧数据
+				String delSql = "delete from "+tabName+" where group_id = " + businessId;
+				this.jdbcTemplate.execute(delSql);
+			}
+
+			//拼接SQL
+			StringBuilder sql = new StringBuilder("INSERT INTO " + tabName ),
+						  keySql = new StringBuilder("id, group_id"),
+					      valSql = new StringBuilder("" + SnowFlakeUtil.getId() + ", " + businessId);
+			//参数
+			LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
+			for(String key : dataMap2.keySet()){
+				keySql.append(", ").append(key);
+				valSql.append(", '").append(dataMap2.get(key)).append("'");
+			}
 
+			sql.append("(").append(keySql).append(")").append(" values(").append(valSql).append(")");
 
+			//新增数据
+			try{
+				this.jdbcTemplate.execute(sql.toString());
+			}catch (Exception e){
+				e.printStackTrace();
+			}
+		}
+
+		//查询绑定的节点
+		WbsTreePrivate tableNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tableInfoList.get(0).getPkeyId()));
+		WbsTreePrivate parentNode = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getProjectId, tableNode.getProjectId()).eq(WbsTreePrivate::getId, tableNode.getParentId()));
+
+		//保存日志记录
+		this.contractLogClient.saveContractLog(new SaveContractLogVO(
+				Long.parseLong(businessId),
+				tableInfoList.get(0).getProjectId(),
+				tableInfoList.get(0).getContractId(),
+				parentNode.getPKeyId(),
+				parentNode.getMajorDataType(),
+				recordTime,
+				linkTabIds
+		));
+
+	}
 
 	@Override
 	public void saveOrUpdateInfo(List<TableInfo> tableInfoList) {
 		if(ListUtils.isNotEmpty(tableInfoList)){
-			for(TableInfo tableInfo:tableInfoList){
-				WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-						.eq(WbsTreeContract::getPKeyId, tableInfo.getPkeyId()));
-				if(wbsTreeContract == null){
-					continue;
-				}
+			if(StringUtils.isNotEmpty(tableInfoList.get(0).getIsTheLog())){
+				//日志填报
+				this.saveOrUpdateTheLog(tableInfoList);
+
+			} else {
+				//施工资料填报
+				for(TableInfo tableInfo:tableInfoList){
+					WbsTreeContract wbsTreeContract = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+							.eq(WbsTreeContract::getPKeyId, tableInfo.getPkeyId()));
+					if(wbsTreeContract == null){
+						continue;
+					}
 
-				String tabName = wbsTreeContract.getInitTableName();
+					String tabName = wbsTreeContract.getInitTableName();
 
-				// 判读修改还是 添加
-				String delSql = "delete from "+tabName+" where p_key_id="+tableInfo.getPkeyId();
-				jdbcTemplate.execute(delSql);
+					// 判读修改还是 添加
+					String delSql = "delete from "+tabName+" where p_key_id="+tableInfo.getPkeyId();
+					jdbcTemplate.execute(delSql);
 
-				String sqlInfo="";
-				LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
-				sqlInfo = "INSERT INTO "+tabName+" ( ";
-				String keyStr = "id,";
-				String valStr = SnowFlakeUtil.getId() + ",";
-				for (String keys : dataMap2.keySet()){
-					keyStr += keys+",";
-					valStr += "'"+dataMap2.get(keys)+"',";
+					String sqlInfo="";
+					LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
+					sqlInfo = "INSERT INTO "+tabName+" ( ";
+					String keyStr = "id,";
+					String valStr = SnowFlakeUtil.getId() + ",";
+					for (String keys : dataMap2.keySet()){
+						keyStr += keys+",";
+						valStr += "'"+dataMap2.get(keys)+"',";
+					}
+					keyStr=keyStr.substring(0,keyStr.lastIndexOf(","));
+					valStr=valStr.substring(0,valStr.lastIndexOf(","));
+					sqlInfo = sqlInfo + keyStr+") VALUES (" +valStr +")";
+
+					UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
+					updateWrapper.in("p_key_id",tableInfo.getPkeyId());
+					updateWrapper.set("is_tab_pdf",2);
+					wbsTreeContractService.update(updateWrapper);
+
+					jdbcTemplate.execute(sqlInfo);
+					// pdf 预览添加
+					//this.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
 				}
-				keyStr=keyStr.substring(0,keyStr.lastIndexOf(","));
-				valStr=valStr.substring(0,valStr.lastIndexOf(","));
-				sqlInfo = sqlInfo + keyStr+") VALUES (" +valStr +")";
-
-				UpdateWrapper<WbsTreeContract> updateWrapper = new UpdateWrapper<>();
-				updateWrapper.in("p_key_id",tableInfo.getPkeyId());
-				updateWrapper.set("is_tab_pdf",2);
-				wbsTreeContractService.update(updateWrapper);
-
-				jdbcTemplate.execute(sqlInfo);
-				// pdf 预览添加
-			   //this.getBussPdfInfo(Long.parseLong(tableInfo.getPkeyId()));
-			}
 
-			try{
-				//获取节点
-				WbsTreeContract wbsTreeContract = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, tableInfoList.get(0).getPkeyId()));
+				try{
+					//获取节点
+					WbsTreeContract wbsTreeContract = this.wbsTreeContractService.getOne(Wrappers.<WbsTreeContract>lambdaQuery().eq(WbsTreeContract::getPKeyId, tableInfoList.get(0).getPkeyId()));
 
-				WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
-						.eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId()));
-				//处理文件提名
-				String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId())? Long.valueOf(wbsTreeContractByP.getOldId()) :wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()));
-				fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
+					WbsTreeContract wbsTreeContractByP = wbsTreeContractService.getBaseMapper().selectOne(Wrappers.<WbsTreeContract>query().lambda()
+							.eq(WbsTreeContract::getId, wbsTreeContract.getParentId()).eq(WbsTreeContract::getContractId, wbsTreeContract.getContractId()));
+					//处理文件提名
+					String fileName = this.wbsParamService.createFileTitle(Func.isNotEmpty(wbsTreeContractByP.getOldId())? Long.valueOf(wbsTreeContractByP.getOldId()) :wbsTreeContractByP.getId(), Long.parseLong(wbsTreeContractByP.getContractId()));
+					fileName = StringUtils.isNotEmpty(fileName) ? fileName : "缺少文件提名配置";
 
-				//huangjn 保存成功后调用生成资料查询列表数据
-				this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfoList.get(0).getClassify()), 2,"是否是首件(临时,暂时没用到)");
-			}catch (Exception e){
-				e.printStackTrace();
+					//huangjn 保存成功后调用生成资料查询列表数据
+					this.informationQueryClient.saveOrUpdateInformationQueryData(wbsTreeContractByP.getPKeyId()+"", "业务ID(主要将来给首件使用)", fileName, Integer.parseInt(tableInfoList.get(0).getClassify()), 2,"是否是首件(临时,暂时没用到)");
+				}catch (Exception e){
+					e.printStackTrace();
+				}
 			}
 		}
 	}