From af389156a78401b1e51807efe90b7310fc4c20f6 Mon Sep 17 00:00:00 2001
From: Fixiaobai <fixiaobai@163.com>
Date: 星期五, 10 十一月 2023 19:50:28 +0800
Subject: [PATCH] Changes11

---
 mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/BasicParamTemplateServiceImpl.java |  194 ++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 185 insertions(+), 9 deletions(-)

diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/BasicParamTemplateServiceImpl.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/BasicParamTemplateServiceImpl.java
index 8fb7751..ef6f5c6 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/BasicParamTemplateServiceImpl.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/BasicParamTemplateServiceImpl.java
@@ -36,6 +36,8 @@
 import com.chinaztt.mes.basic.service.BasicParamTemplateService;
 import com.chinaztt.mes.basic.util.DictUtils;
 import com.chinaztt.mes.common.numgen.NumberGenerator;
+import com.chinaztt.mes.common.util.JsonUtil;
+import com.chinaztt.ztt.admin.api.entity.SysDictItem;
 import com.chinaztt.ztt.common.oss.service.OssTemplate;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -46,8 +48,8 @@
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 宸ュ簭妯℃澘
@@ -69,8 +71,23 @@
 	private DictUtils dictUtils;
 
 	@Override
-	public IPage<List<Param>> getParamById(Page page, QueryWrapper<ParamDTO> gen) {
-		return paramMapper.getParamById(page, gen);
+	public List<Map<String, Object>> getParamById(Page page, long technologyOperationTemplateId) {
+		QueryWrapper<ParamJoinTemplate>gen=new QueryWrapper<>();
+		gen.lambda().eq(ParamJoinTemplate::getParentId,0)
+						.eq(ParamJoinTemplate::getTechnologyOperationTemplateId,technologyOperationTemplateId);
+		List<ParamJoinTemplate> paramJoinTemplates = paramJoinTemplateMapper.selectList(gen);
+		if(paramJoinTemplates.size()<1){
+			return new ArrayList<>();
+		}
+		List<SysDictItem> dict = dictUtils.getDict("technology_param");
+		List<Long>longList=new ArrayList<>();
+		paramJoinTemplates.forEach(p->{
+			longList.add(p.getTechnologyOperationParamId());
+		});
+		//QueryWrapper<Param>queryWrapper=new QueryWrapper<>();
+		//queryWrapper.lambda().in(Param::getId,longList);
+		//List<Param> params = paramMapper.selectList(queryWrapper);
+		return getTree(longList,dict,technologyOperationTemplateId);
 	}
 
 
@@ -82,7 +99,8 @@
 
 
 	@Override
-	public List<ParamDTO> relateTypeTemplate(List<ParamJoinTemplate> operationParamJoinTemplate) {
+	@Transactional(rollbackFor = Exception.class)
+	public List<Map<String, Object>> relateTypeTemplate(List<ParamJoinTemplate> operationParamJoinTemplate) {
 		List<ParamJoinTemplate> newOperationParamJoinTemplateList = new ArrayList<>();
 		List<ParamDTO> paramList = new ArrayList<>();
 		if (CollectionUtil.isNotEmpty(operationParamJoinTemplate)) {
@@ -98,17 +116,175 @@
 				newOperationParamJoinTemplateList.add(newParamJoinTemplate);
 			}
 			for (ParamJoinTemplate newOperationParam : newOperationParamJoinTemplateList) {
+				long firstId=newOperationParam.getTechnologyOperationParamId();
+				long templateId=newOperationParam.getTechnologyOperationTemplateId();
 				paramJoinTemplateMapper.insert(newOperationParam);
+				//浜岀骇鍙傛暟
+				QueryWrapper<Param>queryWrapperSecond = new QueryWrapper<Param>();
+				queryWrapperSecond.lambda().eq(Param::getParentId,newOperationParam.getTechnologyOperationParamId());
+				List<Param> paramList1 = paramMapper.selectList(queryWrapperSecond);
+				if(paramList1.size()>0){
+					for (int i = 0; i < paramList1.size(); i++) {
+						Param secondParam = paramList1.get(i);
+						ParamJoinTemplate templateSecond=new ParamJoinTemplate();
+						templateSecond.setSort(i+1L);
+						templateSecond.setTechnologyOperationParamId(secondParam.getId());
+						templateSecond.setTechnologyOperationTemplateId(templateId);
+						templateSecond.setParentId(firstId);
+						paramJoinTemplateMapper.insert(templateSecond);
+						//涓夌骇鍙傛暟
+						QueryWrapper<Param>queryWrapperThird = new QueryWrapper<Param>();
+						queryWrapperThird.lambda().eq(Param::getParentId,secondParam.getId());
+						List<Param> selectList = paramMapper.selectList(queryWrapperThird);
+						if(selectList.size()>0){
+							for (int j = 0; j < selectList.size(); j++) {
+								Param thirdParam = selectList.get(j);
+								ParamJoinTemplate templateThird=new ParamJoinTemplate();
+								templateThird.setSort(j+1L);
+								templateThird.setTechnologyOperationParamId(thirdParam.getId());
+								templateThird.setTechnologyOperationTemplateId(templateId);
+								templateThird.setParentId(secondParam.getId());
+								paramJoinTemplateMapper.insert(templateThird);
+							}
+						}
+					}
+				}
 			}
-			paramList = paramMapper.getTemplateParam(operationParamJoinTemplate.get(0).getTechnologyOperationTemplateId());
+			//paramList = paramMapper.getTemplateParam(operationParamJoinTemplate.get(0).getTechnologyOperationTemplateId());
 		}
-		return paramList;
+		List<SysDictItem> dict = dictUtils.getDict("technology_param");
+		QueryWrapper<ParamJoinTemplate>templateQueryWrapper=new QueryWrapper<>();
+		templateQueryWrapper.lambda().eq(ParamJoinTemplate::getParentId,0).select(ParamJoinTemplate::getTechnologyOperationParamId);
+		List<Long>longList=new ArrayList<>();
+		paramJoinTemplateMapper.selectList(templateQueryWrapper).forEach(p->{
+			longList.add(p.getTechnologyOperationParamId());
+		});
+		return getTree(longList,dict,operationParamJoinTemplate.get(0).getTechnologyOperationTemplateId());
 	}
+
+	public List<Map<String,Object>> getTree(List records,List<SysDictItem> dict,long templateId){
+		QueryWrapper<ParamJoinTemplate>templateQueryWrapper=new QueryWrapper<>();
+		templateQueryWrapper.lambda().eq(ParamJoinTemplate::getTechnologyOperationTemplateId,templateId);
+		List<ParamJoinTemplate> paramJoinTemplates = paramJoinTemplateMapper.selectList(templateQueryWrapper);
+		List<Map<String,Object>> all = new ArrayList<>();
+		records.forEach(l->{
+			//涓�绾у弬鏁�
+			Param paramFirst = paramMapper.selectById(Long.parseLong(String.valueOf(l)));
+
+			Map pojo = JsonUtil.jsonToPojo(JsonUtil.jsonToString(paramFirst), Map.class);
+			Optional.ofNullable(pojo.get("type")).ifPresent(o->{
+				pojo.put("type",dict.stream().filter(d-> Objects.equals(String.valueOf(d.getValue()),pojo.get("type"))).collect(Collectors.toList()).get(0).getLabel());
+			});
+			String id = String.valueOf(pojo.get("id"));
+			List<ParamJoinTemplate> collect = paramJoinTemplates.stream().filter(p -> Objects.equals(id, String.valueOf(p.getTechnologyOperationParamId()))).collect(Collectors.toList());
+			if(collect.size()>0) {
+				pojo.put("paramValue", collect.get(0).getDefaultValue());
+			}else {
+				pojo.put("paramValue", "");
+			}
+			QueryWrapper<Param>queryWrapper=new QueryWrapper<>();
+			queryWrapper.lambda().eq(Param::getParentId,pojo.get("id"));
+			List<Param> secondList = paramMapper.selectList(queryWrapper);
+			QueryWrapper<ParamJoinTemplate>queryWrapperTem=new QueryWrapper<>();
+			queryWrapperTem.lambda().eq(ParamJoinTemplate::getParentId,Long.valueOf(String.valueOf(l)));
+			List<ParamJoinTemplate> paramJoinTemplates1 = paramJoinTemplateMapper.selectList(queryWrapperTem);
+			//鍘婚櫎涓嶇浉鍏崇殑鏁版嵁
+			secondList.removeIf(s -> paramJoinTemplates1.stream().noneMatch(p->Objects.equals(s.getId(),p.getTechnologyOperationParamId())));
+			//娌℃湁children鐩存帴娣诲姞
+			if(secondList.isEmpty()){
+				Map<String,Object> oneMap = new HashMap<>();
+				oneMap.put("code",pojo.get("code"));
+				oneMap.put("paramItem",pojo.get("parameterItem"));
+				oneMap.put("paramItemTwo","");
+				oneMap.put("paramItemThree","");
+				oneMap.put("oneId", com.chinaztt.mes.common.util.StringUtils.defaultString( String.valueOf(pojo.get("id")),""));
+				oneMap.put("paramType", com.chinaztt.mes.common.util.StringUtils.defaultString((String) pojo.get("type"),""));
+				oneMap.put("paramFormat", com.chinaztt.mes.common.util.StringUtils.defaultString((String) pojo.get("parameterFormat"),""));
+				oneMap.put("unit", com.chinaztt.mes.common.util.StringUtils.defaultString((String) pojo.get("unit"),""));
+				oneMap.put("parentId",pojo.get("parentId"));
+				List<ParamJoinTemplate> collectSecond = paramJoinTemplates.stream().filter(p -> Objects.equals(String.valueOf(pojo.get("id")),String.valueOf( p.getTechnologyOperationParamId()))).collect(Collectors.toList());
+				if(collectSecond.size()>0){
+					oneMap.put("paramValue",collectSecond.get(0).getDefaultValue());
+				}else {
+					oneMap.put("paramValue","");
+				}
+				all.add(oneMap);
+			}
+			secondList.forEach(s->{
+				Map second = JsonUtil.jsonToPojo(JsonUtil.jsonToString(s), Map.class);
+				List<ParamJoinTemplate> collectSecond = paramJoinTemplates.stream().filter(p -> Objects.equals(s.getId(), p.getTechnologyOperationParamId())).collect(Collectors.toList());
+				if(collectSecond.size()>0){
+					second.put("paramValue",collectSecond.get(0).getDefaultValue());
+					s.setParamValue(String.valueOf(second.get("paramValue")));
+				}else {
+					second.put("paramValue","");
+					s.setParamValue(String.valueOf(second.get("paramValue")));
+				}
+				Optional.ofNullable(second.get("type")).ifPresent(o->{
+					List<SysDictItem> collect1 = dict.stream().filter(d -> Objects.equals(String.valueOf(d.getValue()), second.get("type"))).collect(Collectors.toList());
+					if(collect1.size()>0){
+						s.setType(String.valueOf(collect1.get(0).getLabel()));
+					}
+					//second.put("type",dict.stream().filter(d-> Objects.equals(String.valueOf(d.getValue()),second.get("type"))).collect(Collectors.toList()).get(0).getLabel());
+					//s.setType(String.valueOf(second.get("type")));
+				});
+				QueryWrapper<Param>queryWrapperSecond=new QueryWrapper<>();
+				queryWrapperSecond.lambda().eq(Param::getParentId,second.get("id"));
+				List<Param> third = paramMapper.selectList(queryWrapperSecond);
+				QueryWrapper<ParamJoinTemplate>queryWrapperThird=new QueryWrapper<>();
+				queryWrapperThird.lambda().eq(ParamJoinTemplate::getParentId,Long.valueOf(String.valueOf(s.getId())));
+				List<ParamJoinTemplate> paramJoinTemplates2 = paramJoinTemplateMapper.selectList(queryWrapperThird);
+				third.removeIf(t -> paramJoinTemplates2.stream().noneMatch(p->Objects.equals(p.getTechnologyOperationParamId(),t.getId())));
+				if(third.isEmpty()){
+					Param p = new Param();
+					p.setType(s.getType());
+					p.setParamValue(s.getParamValue());
+					//p.setParameterFormat(null);
+					//p.setParamValue(s.getParamValue());
+					p.setUnit(s.getUnit());
+					p.setParentId(s.getParentId());
+					third.add(p);
+				}
+				third.forEach(t->{
+					Optional.ofNullable(t.getType()).ifPresent(o->{
+						List<SysDictItem> collect1 = dict.stream().filter(d -> Objects.equals(String.valueOf(d.getValue()), t.getType())).collect(Collectors.toList());
+						if(collect1.size()>0){
+							t.setType(collect1.get(0).getLabel());
+						}
+					});
+					Map<String,Object> allMap = new HashMap<>();
+					List<ParamJoinTemplate> collectThird = paramJoinTemplates.stream().filter(p -> Objects.equals(t.getId(), p.getTechnologyOperationParamId())).collect(Collectors.toList());
+					if(collectThird.size()>0){
+						allMap.put("paramValue",collectThird.get(0).getDefaultValue());
+					}else {
+						allMap.put("paramValue","");
+					}
+					allMap.put("code",pojo.get("code"));
+					allMap.put("paramItem", com.chinaztt.mes.common.util.StringUtils.defaultString((String) pojo.get("parameterItem"),""));
+					allMap.put("oneId", com.chinaztt.mes.common.util.StringUtils.defaultString( String.valueOf(pojo.get("id")),""));
+					allMap.put("twoId", com.chinaztt.mes.common.util.StringUtils.defaultString( String.valueOf(second.get("id")) ,""));
+					allMap.put("threeId", com.chinaztt.mes.common.util.StringUtils.defaultString(String.valueOf(t.getId()),""));
+					allMap.put("paramItemTwo", com.chinaztt.mes.common.util.StringUtils.defaultString((String) second.get("parameterItem"),""));
+					allMap.put("paramItemThree", com.chinaztt.mes.common.util.StringUtils.defaultString(t.getParameterItem(),""));
+					allMap.put("paramType", com.chinaztt.mes.common.util.StringUtils.defaultString(t.getType(),""));
+					//allMap.put("paramFormat", com.chinaztt.mes.common.util.StringUtils.defaultString(t.getParameterFormat(),""));
+					allMap.put("unit", com.chinaztt.mes.common.util.StringUtils.defaultString(t.getUnit(),""));
+					allMap.put("parentId",t.getParentId());
+					allMap.put("paramValue",t.getParamValue());
+					all.add(allMap);
+				});
+			});
+		});
+		return all;
+	}
+
 
 	@Override
 	public boolean deleteParamTemplate(ParamJoinTemplate operationParamJoinTemplate) {
-		paramJoinTemplateMapper.delete(Wrappers.<ParamJoinTemplate>lambdaQuery().eq(ParamJoinTemplate::getTechnologyOperationParamId, operationParamJoinTemplate.getTechnologyOperationParamId()).eq(ParamJoinTemplate::getTechnologyOperationTemplateId, operationParamJoinTemplate.getTechnologyOperationTemplateId()));
-		return false;
+		System.out.println("------------------------->"+operationParamJoinTemplate);
+		return paramJoinTemplateMapper
+				.deleteByCondition( operationParamJoinTemplate.getTechnologyOperationParamId(),
+						operationParamJoinTemplate.getTechnologyOperationTemplateId())>0;
 	}
 
 	@Override

--
Gitblit v1.9.3