From 2220383df9ee6bfbced20b83b83c90b6a68d995f Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Tue, 05 Sep 2023 17:41:02 +0800
Subject: [PATCH] 填报调整

---
 skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResRsbNorspiServiceImpl.java |  411 +++++++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 290 insertions(+), 121 deletions(-)

diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResRsbNorspiServiceImpl.java b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResRsbNorspiServiceImpl.java
index 3818c25..a12eb22 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResRsbNorspiServiceImpl.java
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/sjztmd/service/impl/TbAttResRsbNorspiServiceImpl.java
@@ -1,17 +1,32 @@
 package cn.gistack.sm.sjztmd.service.impl;
 
 import cn.gistack.sm.sjztmd.entity.TbAttResRsbNorspi;
+import cn.gistack.sm.sjztmd.entity.TbAttResRsbNorspi;
+import cn.gistack.sm.sjztmd.entity.TbAttResRsbSpillway;
+import cn.gistack.sm.sjztmd.entity.TbAttResRsbVerspi;
 import cn.gistack.sm.sjztmd.mapper.TbAttResRsbNorspiMapper;
+import cn.gistack.sm.sjztmd.mapper.TbAttResRsbVerspiMapper;
 import cn.gistack.sm.sjztmd.service.ITbAttResRsbNorspiService;
+import cn.gistack.sm.sjztmd.service.ITbAttResRsbSpillwayService;
+import cn.gistack.sm.sjztmd.service.ITbAttResRsbVerspiService;
 import cn.gistack.system.user.feign.IUserClient;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.JavaType;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.ibatis.annotations.Mapper;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import springfox.documentation.spring.web.json.Json;
 
 import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @ClassName TbAttResRsbNorspiServiceImpl
@@ -27,168 +42,322 @@
 	@Autowired
 	private IUserClient userClient;
 
+	@Autowired
+	private ITbAttResRsbVerspiService tbAttResRsbVerspiService;
+
+	@Autowired
+	private ITbAttResRsbSpillwayService tbAttResRsbSpillwayService;
+
 	/**
 	 * 查询水库填报详情信息
 	 * @param guid
 	 * @return
 	 */
 	@Override
-	public TbAttResRsbNorspi getDetailByGuid(String guid) {
+	public List<TbAttResRsbNorspi> getDetailByGuid(String guid) {
 		return baseMapper.getDetailByResGuid(guid);
 	}
 
 	/**
 	 * 编辑
-	 * @param tbAttResRsbNorspi
+	 * @param newList
 	 * @return
 	 */
 	@Override
-	public boolean updateByGuid(TbAttResRsbNorspi tbAttResRsbNorspi) {
+	public boolean updateByGuid(List<TbAttResRsbNorspi> newList) {
+		String resGuid = newList.get(0).getResGuid();
 		// 查询是否存在
-		TbAttResRsbNorspi detail = baseMapper.getDetailByResGuid(tbAttResRsbNorspi.getResGuid());
+		List<TbAttResRsbNorspi> oldList = baseMapper.getDetailByResGuid(resGuid);
 		// 更新日志
-		setUpdateLog(detail,tbAttResRsbNorspi);
-		// 修改
-		int i = addOrUpdateByGuid(detail,tbAttResRsbNorspi);
-		if (i>0){
+		setUpdateLog(oldList,newList);
+		// 创建或更新数据
+		boolean flag = addOrUpdate(oldList,newList);
+		// 返回
+		return flag;
+	}
+
+	/**
+	 * 新增或更新数据
+	 * @param oldList
+	 * @param newList
+	 * @return
+	 */
+	@Transactional(rollbackFor = Exception.class)
+	public boolean addOrUpdate(List<TbAttResRsbNorspi> oldList,List<TbAttResRsbNorspi> newList) {
+		// 取旧数据和新提交数据差集--删除
+		// 去除前一天已填报的人员手机号集合
+		List<TbAttResRsbNorspi> removeList = oldList.stream().filter(vo -> !newList.stream().map(e ->
+			e.getGuid()).collect(Collectors.toList()).contains(vo.getGuid())).collect(Collectors.toList());
+		// 取旧数据和新提交数据交集--更新
+		List<TbAttResRsbNorspi> updateList = newList.stream().filter(vo -> oldList.stream().map(e ->
+			e.getGuid()).collect(Collectors.toList()).contains(vo.getGuid())).collect(Collectors.toList());
+		// 取新数提交据和旧数据交集--新增
+		List<TbAttResRsbNorspi> addList = newList.stream().filter(vo -> !oldList.stream().map(e ->
+			e.getGuid()).collect(Collectors.toList()).contains(vo.getGuid())).collect(Collectors.toList());
+		boolean addFlag = true;
+		boolean updateFlag = true;
+		boolean removeFlag = true;
+		if (addList.size()>0){
+			// 批量新增
+			addFlag = saveBatch(addList);
+		}
+		if (updateList.size()>0){
+			// 批量更新
+			addFlag = updateBatchById(updateList);
+		}
+		if (removeList.size()>0){
+			// 批量删除
+			removeFlag = removeBatchByIds(removeList);
+		}
+		if (addFlag && updateFlag && removeFlag){
 			return true;
 		}
+		// 返回
 		return false;
 	}
 
 	/**
 	 * 审核
-	 * @param tbAttResRsbNorspi
+	 * @param newList
 	 * @return
 	 */
 	@Override
-	public boolean auditByGuid(TbAttResRsbNorspi tbAttResRsbNorspi) {
+	public boolean auditByGuid(List<TbAttResRsbNorspi> newList) {
 		// 查询是否存在
-		TbAttResRsbNorspi detail = baseMapper.getDetailByResGuid(tbAttResRsbNorspi.getResGuid());
+		List<TbAttResRsbNorspi> oldList = baseMapper.getDetailByResGuid(newList.get(0).getResGuid());
 		// 更新操作日志
-		setUpdateLog(detail,tbAttResRsbNorspi);
+		setUpdateLog(oldList,newList);
 		// 更新审核日志
-		setUpdateCheckLog(detail,tbAttResRsbNorspi);
-		if (null!=detail){
-			tbAttResRsbNorspi.setGuid(detail.getGuid());
-		}
-		// 驳回情况下将状态修改回0即已填写未提交状态
-		if (tbAttResRsbNorspi.getCheckState()==3){
-			tbAttResRsbNorspi.setCheckState(0);
-		}
+		setUpdateCheckLog(oldList,newList);
 		// 更新数据
-		int i = baseMapper.updateById(tbAttResRsbNorspi);
-		if (i>0){
+		boolean batch = updateBatchById(newList);
+		// 返回
+		return batch;
+	}
+
+	/**
+	 * @param oldList
+	 * @param newList
+	 * 更新审核记录
+	 */
+	private void setUpdateCheckLog(List<TbAttResRsbNorspi> oldList,List<TbAttResRsbNorspi> newList) {
+		// 遍历
+		for (TbAttResRsbNorspi newTbAttResRsbNorspi : newList) {
+			String fillName = "";
+			if (newTbAttResRsbNorspi.getCheckState() == 2) {
+				fillName = "审核";
+			}
+			if (newTbAttResRsbNorspi.getCheckState() == 3) {
+				fillName = "退回" + (null == newTbAttResRsbNorspi.getCheckLog() ? "" : ":" + newTbAttResRsbNorspi.getCheckLog());
+				for (TbAttResRsbNorspi tbAttResRsbNorspi : oldList) {
+					if (tbAttResRsbNorspi.getGuid().equals(newTbAttResRsbNorspi.getGuid())){
+						// 退回时进行设置状态为填写中
+						newTbAttResRsbNorspi.setCheckState(0);
+					}
+				}
+			}
+
+			// 拼接
+			String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
+			String userName = AuthUtil.getUser().getUserName();
+			String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
+			StringBuilder builder = new StringBuilder();
+			builder.append(time)
+				.append(",")
+				.append(fillName)
+				.append(",")
+				.append(userName)
+				.append(",")
+				.append(phone)
+				.append(";");
+			// 判断是否存在
+			if (null==newTbAttResRsbNorspi.getGuid() || newTbAttResRsbNorspi.getGuid().equals("")){
+				// 填报
+				newTbAttResRsbNorspi.setCheckLog(builder.toString());
+			} else {
+				for (TbAttResRsbNorspi tbAttResRsbNorspi : oldList) {
+					if (tbAttResRsbNorspi.getGuid().equals(newTbAttResRsbNorspi.getGuid())){
+						StringBuilder stringBuilder = new StringBuilder(null == tbAttResRsbNorspi.getCheckLog() ? "" : tbAttResRsbNorspi.getCheckLog());
+						stringBuilder.append(builder);
+						// 填报
+						newTbAttResRsbNorspi.setCheckLog(stringBuilder.toString());
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * @param oldList
+	 * @param newList
+	 * 更新操作记录
+	 */
+	private void setUpdateLog(List<TbAttResRsbNorspi> oldList,List<TbAttResRsbNorspi> newList) {
+		// 遍历
+		for (TbAttResRsbNorspi newTbAttResRsbNorspi : newList){
+			String fillName = "";
+			if (newTbAttResRsbNorspi.getCheckState()==0){
+				fillName = "编辑";
+			}
+			if (newTbAttResRsbNorspi.getCheckState()==1){
+				fillName = "提交";
+			}
+			if (newTbAttResRsbNorspi.getCheckState()==2){
+				fillName = "审核";
+			}
+			if (newTbAttResRsbNorspi.getCheckState()==3){
+				fillName = "退回" + (null==newTbAttResRsbNorspi.getCheckLog()?"":":" + newTbAttResRsbNorspi.getCheckLog());
+			}
+			// 管理员编辑
+			if (newTbAttResRsbNorspi.getCheckState()==4){
+				fillName = "编辑";
+				// 找到相关的 guid 数据
+				for (TbAttResRsbNorspi tbAttResRsbNorspi : oldList) {
+					if (tbAttResRsbNorspi.getGuid().equals(newTbAttResRsbNorspi.getGuid())){
+						newTbAttResRsbNorspi.setCheckState(tbAttResRsbNorspi.getCheckState());
+					}
+				}
+			}
+
+			// 拼接
+			String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
+			String userName = AuthUtil.getUser().getUserName();
+			String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
+			StringBuilder builder = new StringBuilder();
+			builder.append(time)
+				.append(",")
+				.append(fillName)
+				.append(",")
+				.append(userName)
+				.append(",")
+				.append(phone)
+				.append(";");
+			// 判断是否存在
+			if (null==newTbAttResRsbNorspi.getGuid() || newTbAttResRsbNorspi.getGuid().equals("")){
+				// 填报
+				newTbAttResRsbNorspi.setLog(builder.toString());
+			}else {
+				for (TbAttResRsbNorspi tbAttResRsbNorspi : oldList) {
+					if (tbAttResRsbNorspi.getGuid().equals(newTbAttResRsbNorspi.getGuid())){
+						StringBuilder stringBuilder = new StringBuilder(null==tbAttResRsbNorspi.getLog()?"":tbAttResRsbNorspi.getLog());
+						stringBuilder.append(builder);
+						// 填报
+						newTbAttResRsbNorspi.setLog(stringBuilder.toString());
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * 查询水库填报详情信息(正常,非常溢洪道,泄洪洞)
+	 * @param resGuid
+	 * @return
+	 */
+	@Override
+	public Map<String,Object> getResRsbNorsipiVerspiMionitorDetailByGuid(String resGuid) {
+		Map<String, Object> map = new HashMap<>();
+		// 查询正常溢洪道信息
+		List<TbAttResRsbNorspi> tbAttResRsbNorspiList = baseMapper.getDetailByResGuid(resGuid);
+		// 查询非常溢洪道信息
+		List<TbAttResRsbVerspi> tbAttResRsbVerspiList = tbAttResRsbVerspiService.getDetailByGuid(resGuid);
+		// 查询泄洪洞信息
+		List<TbAttResRsbSpillway> tbAttResRsbSpillwayList = tbAttResRsbSpillwayService.getDetailByGuid(resGuid);
+		// 封装数据
+		map.put("tbAttResRsbNorspiList",tbAttResRsbNorspiList);
+		map.put("tbAttResRsbVerspiList",tbAttResRsbVerspiList);
+		map.put("tbAttResRsbSpillwayList",tbAttResRsbSpillwayList);
+		// 返回
+		return map;
+	}
+
+	/**
+	 * 编辑(正常,非常溢洪道,泄洪洞)
+	 * @param map
+	 * @return
+	 */
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean editResRsbNorsipiVerspiMionitor(String map) {
+		ObjectMapper objectMapper = new ObjectMapper();
+		JsonNode jsonNode = null;
+		try {
+			jsonNode = objectMapper.readTree(map);
+		} catch (JsonProcessingException e) {
+			e.printStackTrace();
+		}
+		JsonNode tbAttResRsbNorspiListJsonNode = jsonNode.get("tbAttResRsbNorspiList");
+		JsonNode tbAttResRsbVerspiListJsonNode = jsonNode.get("tbAttResRsbVerspiList");
+		JsonNode tbAttResRsbSpillwayListJsonNode = jsonNode.get("tbAttResRsbSpillwayList");
+
+		JavaType tbAttResRsbNorspiType = objectMapper.getTypeFactory().constructParametricType(List.class, TbAttResRsbNorspi.class);
+		JavaType tbAttResRsbVerspiType = objectMapper.getTypeFactory().constructParametricType(List.class, TbAttResRsbVerspi.class);
+		JavaType tbAttResRsbSpillwayType = objectMapper.getTypeFactory().constructParametricType(List.class, TbAttResRsbSpillway.class);
+
+		List<TbAttResRsbNorspi> tbAttResRsbNorspiList = null;
+		List<TbAttResRsbVerspi> tbAttResRsbVerspiList = null;
+		List<TbAttResRsbSpillway> tbAttResRsbSpillwayList = null;
+		try {
+			tbAttResRsbNorspiList = objectMapper.readValue(tbAttResRsbNorspiListJsonNode.toString(), tbAttResRsbNorspiType);
+			tbAttResRsbVerspiList = objectMapper.readValue(tbAttResRsbVerspiListJsonNode.toString(), tbAttResRsbVerspiType);
+			tbAttResRsbSpillwayList = objectMapper.readValue(tbAttResRsbSpillwayListJsonNode.toString(), tbAttResRsbSpillwayType);
+		} catch (JsonProcessingException e) {
+			e.printStackTrace();
+		}
+		// 取出集合数据,这样转换格式异常
+//		List<TbAttResRsbNorspi> tbAttResRsbNorspiList = (List<TbAttResRsbNorspi>)map.get("tbAttResRsbNorspiList");
+//		List<TbAttResRsbVerspi> tbAttResRsbVerspiList = (List<TbAttResRsbVerspi>)map.get("tbAttResRsbVerspiList");
+//		List<TbAttResRsbSpillway> tbAttResRsbSpillwayList = (List<TbAttResRsbSpillway>)map.get("tbAttResRsbSpillwayList");
+		// 分别更新
+		boolean flag1 = updateByGuid(tbAttResRsbNorspiList);
+		boolean flag2 = tbAttResRsbVerspiService.updateByGuid(tbAttResRsbVerspiList);
+		boolean flag3 = tbAttResRsbSpillwayService.updateByGuid(tbAttResRsbSpillwayList);
+		if (flag1 && flag2 && flag3){
 			return true;
 		}
 		return false;
 	}
 
 	/**
-	 * 更新
-	 * @param tbAttResRsbNorspi
+	 * 审核(正常,非常溢洪道,泄洪洞)
+	 * @param map
 	 * @return
 	 */
-	private int addOrUpdateByGuid(TbAttResRsbNorspi oldAbAttResBase,TbAttResRsbNorspi tbAttResRsbNorspi){
-		int i = 0;
-		if (null!=oldAbAttResBase){
-			tbAttResRsbNorspi.setGuid(oldAbAttResBase.getGuid());
-			// 更新
-			i = baseMapper.updateById(tbAttResRsbNorspi);
-		}else {
-			tbAttResRsbNorspi.setCreateTime(new Date());
-			i = baseMapper.insert(tbAttResRsbNorspi);
+	@Override
+	@Transactional(rollbackFor = Exception.class)
+	public boolean auditResRsbNorsipiVerspiMionitor(String map) {
+		ObjectMapper objectMapper = new ObjectMapper();
+		JsonNode jsonNode = null;
+		try {
+			jsonNode = objectMapper.readTree(map);
+		} catch (JsonProcessingException e) {
+			e.printStackTrace();
 		}
-		// 返回
-		return i;
-	}
+		JsonNode tbAttResRsbNorspiListJsonNode = jsonNode.get("tbAttResRsbNorspiList");
+		JsonNode tbAttResRsbVerspiListJsonNode = jsonNode.get("tbAttResRsbVerspiList");
+		JsonNode tbAttResRsbSpillwayListJsonNode = jsonNode.get("tbAttResRsbSpillwayList");
 
-	/**
-	 * @param oldAbAttResBase
-	 * @param newTbAttResRsbNorspi
-	 * 更新审核记录
-	 */
-	private void setUpdateCheckLog(TbAttResRsbNorspi oldAbAttResBase,TbAttResRsbNorspi newTbAttResRsbNorspi) {
-		String fillName = "";
-		if (newTbAttResRsbNorspi.getCheckState()==2){
-			fillName = "审核";
-		}
-		if (newTbAttResRsbNorspi.getCheckState()==3){
-			fillName = "退回" + (null==newTbAttResRsbNorspi.getCheckLog()?"":":" + newTbAttResRsbNorspi.getCheckLog());
-		}
+		JavaType tbAttResRsbNorspiType = objectMapper.getTypeFactory().constructParametricType(List.class, TbAttResRsbNorspi.class);
+		JavaType tbAttResRsbVerspiType = objectMapper.getTypeFactory().constructParametricType(List.class, TbAttResRsbVerspi.class);
+		JavaType tbAttResRsbSpillwayType = objectMapper.getTypeFactory().constructParametricType(List.class, TbAttResRsbSpillway.class);
 
-		// 拼接
-		String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
-		String userName = AuthUtil.getUser().getUserName();
-		String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
-		StringBuilder builder = new StringBuilder();
-		builder.append(time)
-			.append(",")
-			.append(fillName)
-			.append(",")
-			.append(userName)
-			.append(",")
-			.append(phone)
-			.append(";");
-		// 判断是否存在
-		if (null==oldAbAttResBase){
-			// 填报
-			newTbAttResRsbNorspi.setCheckLog(builder.toString());
-		}else {
-			StringBuilder stringBuilder = new StringBuilder(null==oldAbAttResBase.getCheckLog()?"":oldAbAttResBase.getCheckLog());
-			stringBuilder.append(builder);
-			// 填报
-			newTbAttResRsbNorspi.setCheckLog(stringBuilder.toString());
+		List<TbAttResRsbNorspi> tbAttResRsbNorspiList = null;
+		List<TbAttResRsbVerspi> tbAttResRsbVerspiList = null;
+		List<TbAttResRsbSpillway> tbAttResRsbSpillwayList = null;
+		try {
+			tbAttResRsbNorspiList = objectMapper.readValue(tbAttResRsbNorspiListJsonNode.toString(), tbAttResRsbNorspiType);
+			tbAttResRsbVerspiList = objectMapper.readValue(tbAttResRsbVerspiListJsonNode.toString(), tbAttResRsbVerspiType);
+			tbAttResRsbSpillwayList = objectMapper.readValue(tbAttResRsbSpillwayListJsonNode.toString(), tbAttResRsbSpillwayType);
+		} catch (JsonProcessingException e) {
+			e.printStackTrace();
 		}
-	}
-
-	/**
-	 * @param oldAbAttResBase
-	 * @param newTbAttResRsbNorspi
-	 * 更新操作记录
-	 */
-	private void setUpdateLog(TbAttResRsbNorspi oldAbAttResBase,TbAttResRsbNorspi newTbAttResRsbNorspi) {
-		String fillName = "";
-		if (newTbAttResRsbNorspi.getCheckState()==0){
-			fillName = "编辑";
+		// 分别更新
+		boolean flag1 = auditByGuid(tbAttResRsbNorspiList);
+		boolean flag2 = tbAttResRsbVerspiService.auditByGuid(tbAttResRsbVerspiList);
+		boolean flag3 = tbAttResRsbSpillwayService.auditByGuid(tbAttResRsbSpillwayList);
+		if (flag1 && flag2 && flag3){
+			return true;
 		}
-		if (newTbAttResRsbNorspi.getCheckState()==1){
-			fillName = "提交";
-		}
-		if (newTbAttResRsbNorspi.getCheckState()==2){
-			fillName = "审核";
-		}
-		if (newTbAttResRsbNorspi.getCheckState()==3){
-			fillName = "退回" + (null==newTbAttResRsbNorspi.getCheckLog()?"":":" + newTbAttResRsbNorspi.getCheckLog());
-		}
-		// 管理员编辑
-		if (newTbAttResRsbNorspi.getCheckState()==4){
-			fillName = "编辑";
-			newTbAttResRsbNorspi.setCheckState(oldAbAttResBase.getCheckState());
-		}
-
-		// 拼接
-		String time = new SimpleDateFormat("yyyy-MM-dd HH:mm").format(new Date());
-		String userName = AuthUtil.getUser().getUserName();
-		String phone = userClient.userInfoById(AuthUtil.getUserId()).getData().getPhone();
-		StringBuilder builder = new StringBuilder();
-		builder.append(time)
-			.append(",")
-			.append(fillName)
-			.append(",")
-			.append(userName)
-			.append(",")
-			.append(phone)
-			.append(";");
-		// 判断是否存在
-		if (null==oldAbAttResBase){
-			// 填报
-			newTbAttResRsbNorspi.setLog(builder.toString());
-		}else {
-			StringBuilder stringBuilder = new StringBuilder(null==oldAbAttResBase.getLog()?"":oldAbAttResBase.getLog());
-			stringBuilder.append(builder);
-			// 填报
-			newTbAttResRsbNorspi.setLog(stringBuilder.toString());
-		}
+		return false;
 	}
 }

--
Gitblit v1.9.3