Browse Source

日志相关调整

huangjn 2 years ago
parent
commit
5eaf0d8b10

+ 3 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/entity/ContractLogWbs.java

@@ -44,6 +44,9 @@ public class ContractLogWbs extends BaseEntity {
     @ApiModelProperty("contract_log表主键")
     private Long contractLogId;
 
+    @ApiModelProperty("数据ID")
+    private String businessId;
+
     /**
      * 关联的工序唯一键,wbs_tree_contract表p_key_id
      */

+ 2 - 0
blade-service-api/blade-business-api/src/main/java/org/springblade/business/vo/SaveContractLogVO.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSONObject;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 import org.apache.http.client.utils.DateUtils;
+import org.springblade.business.entity.ContractLog;
+import org.springblade.business.entity.ContractLogWbs;
 import org.springblade.core.tool.utils.DateUtil;
 
 import java.util.Date;

+ 12 - 27
blade-service/blade-business/src/main/java/org/springblade/business/controller/ContractLogController.java

@@ -183,36 +183,21 @@ public class ContractLogController extends BladeController {
 	@PostMapping("/queryCurrentLogSelectProcessList")
 	@ApiOperationSupport(order = 7)
 	@ApiOperation(value = "获取当前日志资料关联的工序节点信息")
-	@ApiImplicitParams(
-		{
-			@ApiImplicitParam(name = "theLogId", value = "日志记录的id,可能为空"),
-			@ApiImplicitParam(name = "nodePrimaryKeyId", value = "当前操作的日志类型ID,即左侧列表的节点primaryKeyId"),
-			@ApiImplicitParam(name = "recordTime", value = "当前选择的填写日期,即右侧日期控件所选日期,格式为 yyyy-MM-dd")
-		}
-	)
-	public R<List<JSONObject>> querySelectProcessList(String theLogId, String nodePrimaryKeyId, String recordTime, String contractId){
+    @ApiImplicitParam(name = "businessId", value = "数据ID")
+	public R<List<JSONObject>> querySelectProcessList(String businessId){
 		List<JSONObject> jsonResult = new ArrayList<>();
 
-		if(StringUtils.isEmpty(theLogId)){
-			ContractLog log = this.contractLogService.getOne(Wrappers.<ContractLog>lambdaQuery()
-					.eq(ContractLog::getWbsNodeId, nodePrimaryKeyId)
-					.eq(ContractLog::getRecordTime, recordTime).eq(ContractLog::getContractId, contractId).eq(ContractLog::getCreateUser, AuthUtil.getUserId()));
-			if(log == null){
-				return R.data(300, null, "未找到数据");
-			}
-
-			theLogId = String.valueOf(log.getId());
-		}
-
-		List<ContractLogWbs> result = this.contractLogWbsService.list(Wrappers.<ContractLogWbs>lambdaQuery().eq(ContractLogWbs::getContractLogId, theLogId));
-		if(result != null && result.size() > 0){
-			result.forEach(logWbs -> {
-				JSONObject json = new JSONObject();
-				json.put("primaryKeyId", logWbs.getTreePrimaryKeyId());
-				json.put("path", logWbs.getTitle());
+		if(StringUtils.isNotEmpty(businessId)){
+			List<ContractLogWbs> result = this.contractLogWbsService.list(Wrappers.<ContractLogWbs>lambdaQuery().eq(ContractLogWbs::getBusinessId, businessId));
+			if(result != null && result.size() > 0){
+				result.forEach(logWbs -> {
+					JSONObject json = new JSONObject();
+					json.put("primaryKeyId", logWbs.getTreePrimaryKeyId());
+					json.put("path", logWbs.getTitle());
 
-				jsonResult.add(json);
-			});
+					jsonResult.add(json);
+				});
+			}
 		}
 
 		return R.data(jsonResult);

+ 11 - 44
blade-service/blade-business/src/main/java/org/springblade/business/feignClient/ContractLogClientImpl.java

@@ -89,50 +89,16 @@ public class ContractLogClientImpl implements ContractLogClient {
             //主键不为空,说明是修改
             //修改只修改关联的工序ids
             if(saveContractLogVO.getCorrelationIds() != null && saveContractLogVO.getCorrelationIds().size() > 0){
-                List<ContractLogWbs> oldLogWbsList = this.contractLogWbsService.list(Wrappers.<ContractLogWbs>lambdaQuery().eq(ContractLogWbs::getContractLogId, contractLog.getId()));
-                if(oldLogWbsList.size() > 0){
-                    List<ContractLogWbs> saveList = new ArrayList<>();
-
-                    //检查哪些数据是新增的
-                    List<JSONObject> jsonList = saveContractLogVO.getCorrelationIds();
-                    Iterator<JSONObject> iterator = jsonList.iterator();
-                    while (iterator.hasNext()){
-                        JSONObject next = iterator.next();
-                        for(ContractLogWbs oldWbs : oldLogWbsList){
-                            if(oldWbs.getTreePrimaryKeyId().toString().equals(next.getString("primaryKeyId"))){
-                                //存在则删除
-                                iterator.remove();
-                            }
-                        }
-                    }
-
-                    //检查哪些数据是删除的
-                    Iterator<ContractLogWbs> iterator1 = oldLogWbsList.iterator();
-                    while (iterator1.hasNext()){
-                        ContractLogWbs next = iterator1.next();
-                        for(JSONObject json : jsonList){
-                            if(json.getString("primaryKeyId").equals(next.getTreePrimaryKeyId().toString())){
-                                iterator1.remove();
-                            }
-                        }
-                    }
-
-                    //处理新增数据
-                    jsonList.forEach(json -> saveList.add(this.createContractLogWbs(json, JSONObject.parseObject(JSONObject.toJSONString(logJson), ContractLog.class))));
-                    //删除掉已经被取消的数据
-                    this.contractLogWbsService.removeBatchByIds(oldLogWbsList);
-                    //保存新增的数据
-                    this.contractLogWbsService.saveBatch(saveList);
-
-                } else {
-                    //没有旧数据,直接新增
-                    List<JSONObject> jsonList = saveContractLogVO.getCorrelationIds();
-
-                    List<ContractLogWbs> saveList = new ArrayList<>();
-                    jsonList.forEach(json -> saveList.add(this.createContractLogWbs(json, JSONObject.parseObject(JSONObject.toJSONString(logJson), ContractLog.class))));
-
-                    this.contractLogWbsService.saveBatch(saveList);
-                }
+                //删除旧的关联
+                this.contractLogWbsService.update(Wrappers.<ContractLogWbs>lambdaUpdate().set(ContractLogWbs::getIsDeleted, 1).eq(ContractLogWbs::getContractLogId, logJson.getString("id")));
+
+                //重新新增
+                List<JSONObject> jsonList = saveContractLogVO.getCorrelationIds();
+
+                List<ContractLogWbs> saveList = new ArrayList<>();
+                jsonList.forEach(json -> saveList.add(this.createContractLogWbs(json, JSONObject.parseObject(JSONObject.toJSONString(logJson), ContractLog.class))));
+
+                this.contractLogWbsService.saveBatch(saveList);
             }
             //修改数据ID指向
             this.contractLogService.update(Wrappers.<ContractLog>lambdaUpdate().set(ContractLog::getDataId, contractLog.getDataId()).eq(ContractLog::getId, logJson.getString("id")));
@@ -164,6 +130,7 @@ public class ContractLogClientImpl implements ContractLogClient {
         newLogWbs.setContractLogId(contractLog.getId());
         newLogWbs.setTreePrimaryKeyId(Long.parseLong(json.getString("primaryKeyId")));
         newLogWbs.setTitle(json.getString("path"));
+        newLogWbs.setBusinessId(json.getString("businessId"));
         newLogWbs.setCreateTime(new Date());
         newLogWbs.setCreateUser(AuthUtil.getUserId());
 

+ 1 - 0
blade-service/blade-business/src/main/java/org/springblade/business/mapper/ContractLogWbsMapper.xml

@@ -15,6 +15,7 @@
         <result column="contract_log_id" property="contractLogId"/>
         <result column="tree_primary_key_id" property="treePrimaryKeyId"/>
         <result column="title" property="title"/>
+        <result column="business_id" property="businessId"/>
     </resultMap>
 
     <resultMap id="contractLogResultMap" type="org.springblade.business.entity.ContractLog">

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

@@ -34,8 +34,19 @@ public class TableInfo {
      */
     private String theLogId;
 
+    /**
+     * 日志关联的工序信息
+     */
     private List<Object> linkTabIds;
 
+    /**
+     * 日志填写时间
+     */
     private String recordTime;
 
+    /**
+     * id,用于给日志关联的工序信息做特殊化处理
+     */
+    private String businessId;
+
 }

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

@@ -2055,7 +2055,7 @@ public class ExcelTabController extends BladeController {
                     }
 
                     // 移除Id 和 p_key_id
-                    reData.remove("id");
+//                    reData.remove("id");
                     reData.remove("p_key_id");
                     reData.remove("classify");
                     reData.remove("contractId");

+ 21 - 3
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ExcelTabServiceImpl.java

@@ -189,6 +189,11 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 					tableInfo.setRecordTime(dataInfo2.getString("recordTime"));
 				}
 				//huangjn 日志所选时间
+				//huangjn 每份填报数据的id,目前日志专用
+				if(dataInfo2.containsKey("id")){
+					tableInfo.setBusinessId(dataInfo2.getString("id"));
+				}
+				//huangjn 每份填报数据的id,目前日志专用
 
 				dataInfo2.fluentRemove("contractId")
 						 .fluentRemove("pkeyId")
@@ -311,7 +316,6 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 				}
 			}
 		}
-		List<JSONObject> linkTabIds = JSONArray.parseArray(JSONObject.toJSONString(tableInfoList.get(0).getLinkTabIds()), JSONObject.class);
 
 		if(StringUtils.isNotEmpty(businessId)){
 			//删除旧数据
@@ -319,6 +323,8 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 			this.jdbcTemplate.execute(delSql);
 		}
 
+		List<JSONObject> logWbsList = new ArrayList<>();
+
 		for(TableInfo tableInfo : tableInfoList){
 			WbsTreePrivate wbsTreePrivate = this.wbsTreePrivateService.getOne(Wrappers.<WbsTreePrivate>lambdaQuery().eq(WbsTreePrivate::getPKeyId, tableInfo.getPkeyId()));
 			if(wbsTreePrivate == null){
@@ -326,10 +332,15 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 			}
 			String tabName = wbsTreePrivate.getInitTableName();
 
+			String id = tableInfo.getBusinessId();
+			if(StringUtils.isEmpty(id)){
+				id = SnowFlakeUtil.getId() + "";
+			}
+
 			//拼接SQL
 			StringBuilder sql = new StringBuilder("INSERT INTO " + tabName ),
 						  keySql = new StringBuilder("id, group_id"),
-					      valSql = new StringBuilder("" + SnowFlakeUtil.getId() + ", " + businessId);
+					      valSql = new StringBuilder("" + id + ", " + businessId);
 			//参数
 			LinkedHashMap<String,String> dataMap2 = tableInfo.getDataMap();
 			for(String key : dataMap2.keySet()){
@@ -345,6 +356,13 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 			}catch (Exception e){
 				e.printStackTrace();
 			}
+
+			//处理每个表格的关联情况
+			List<JSONObject> linkTabIds = JSONArray.parseArray(JSONObject.toJSONString(tableInfo.getLinkTabIds()), JSONObject.class);
+			for(JSONObject json : linkTabIds){
+				json.put("businessId", id);
+			}
+			logWbsList.addAll(linkTabIds);
 		}
 
 		//保存日志记录
@@ -356,7 +374,7 @@ public class ExcelTabServiceImpl extends BaseServiceImpl<ExcelTabMapper, ExcelTa
 				tableNode.getPKeyId(),
 				parentNode.getMajorDataType(),
 				recordTime,
-				linkTabIds
+				logWbsList
 		));
 
 	}