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/mapper/ParamJoinTemplateMapper.java             |    2 
 mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/ParamServiceImpl.java              |   11 
 mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamMapper.java                         |    2 
 mes-basic/src/main/resources/mapper/ParamMapper.xml                                            |   18 +
 mes-basic/src/main/resources/mapper/ParamJoinTemplateMapper.xml                                |    6 
 mes-basic/src/main/java/com/chinaztt/mes/basic/service/BasicParamTemplateService.java          |    8 
 mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/RoutingServiceImpl.java  |  319 ++++++++++++++++++++++++++++---
 mes-basic/src/main/java/com/chinaztt/mes/basic/dto/ParamDTO.java                               |    2 
 mes-technology/src/main/java/com/chinaztt/mes/technology/controller/RoutingController.java     |    3 
 mes-technology/src/main/java/com/chinaztt/mes/technology/service/RoutingService.java           |    9 
 mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Param.java                               |    3 
 mes-basic/src/main/java/com/chinaztt/mes/basic/entity/ParamJoinTemplate.java                   |    2 
 mes-basic/src/main/java/com/chinaztt/mes/basic/controller/BasicParamTemplateController.java    |    5 
 mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/BasicParamTemplateServiceImpl.java |  194 ++++++++++++++++++
 14 files changed, 518 insertions(+), 66 deletions(-)

diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/BasicParamTemplateController.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/BasicParamTemplateController.java
index 45cc021..4663bda 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/BasicParamTemplateController.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/controller/BasicParamTemplateController.java
@@ -98,13 +98,14 @@
 
 	/**
 	 * 閫氳繃id鏌ヨ宸ュ簭鍙傛暟
-	 * @param id id
+	 * @param  id
 	 * @return R
 	 */
 	@ApiOperation(value = "閫氳繃id鏌ヨ宸ュ簭鍙傛暟", notes = "閫氳繃id鏌ヨ宸ュ簭鍙傛暟")
 	@GetMapping("/param" )
 	public R getParamById(Page page, ParamDTO paramDTO) {
-		return R.ok(basicParamTemplateService.getParamById(page,QueryWrapperUtil.gen(paramDTO)));
+		Long technologyOperationTemplateId = paramDTO.getTechnologyOperationTemplateId();
+		return R.ok(basicParamTemplateService.getParamById(page,technologyOperationTemplateId));
 	}
     /**
      * 鏂板宸ュ簭妯℃澘
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/dto/ParamDTO.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/dto/ParamDTO.java
index 9907501..3fe8cae 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/dto/ParamDTO.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/dto/ParamDTO.java
@@ -41,5 +41,5 @@
 	 */
 	private List<SysDictItem> sysDictItemList;
 
-
+	private Long templateParentId;
 }
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Param.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Param.java
index 6c9351c..9455899 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Param.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/Param.java
@@ -104,6 +104,9 @@
 	@ApiModelProperty(value="鏁版嵁瀛楀吀")
 	private String dict;
 
+	@TableField(exist = false)
+	private String paramValue;
+
 	@ApiModelProperty(value="鐖剁骇鍙傛暟")
 	@TableField("parent_id")
 	@JSONField(serializeUsing= ToStringSerializer.class)
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/ParamJoinTemplate.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/ParamJoinTemplate.java
index 143c0cb..e3e3487 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/ParamJoinTemplate.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/entity/ParamJoinTemplate.java
@@ -60,5 +60,7 @@
 	@TableField(updateStrategy = FieldStrategy.IGNORED)
 	@ApiModelProperty(value = "榛樿鍊�")
 	private String defaultValue;
+
+	private Long parentId;
 }
 
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamJoinTemplateMapper.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamJoinTemplateMapper.java
index 020e9b7..a1deff3 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamJoinTemplateMapper.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamJoinTemplateMapper.java
@@ -43,4 +43,6 @@
 			@Param("defaultValue") String defaultValue,
 			@Param("technologyOperationParamId") Long technologyOperationParamId,
 			@Param("technologyOperationTemplateId") Long technologyOperationTemplateId);
+
+	int deleteByCondition(@Param("paramId") long paramId,@Param("templateId")long templateId);
 }
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamMapper.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamMapper.java
index 63eef7f..22d315b 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamMapper.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/mapper/ParamMapper.java
@@ -88,4 +88,6 @@
 	List<ParamDTO> getLastParamById(@org.apache.ibatis.annotations.Param("paramDTO") ParamDTO paramDTO);
 
     List<String> getNos(String code);
+
+	List<ParamDTO>getTemplateParamPlus(@org.apache.ibatis.annotations.Param("templateId")long templateId);
 }
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/BasicParamTemplateService.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/BasicParamTemplateService.java
index dbfbe00..6911999 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/BasicParamTemplateService.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/BasicParamTemplateService.java
@@ -22,13 +22,13 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.chinaztt.mes.basic.dto.ParamDTO;
-import com.chinaztt.mes.basic.entity.Param;
 import com.chinaztt.mes.basic.entity.ParamJoinTemplate;
 import com.chinaztt.mes.basic.entity.Template;
 import com.chinaztt.mes.basic.entity.TemplateTypeRelation;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 宸ュ簭妯℃澘
@@ -40,16 +40,16 @@
 	/**
 	 * 閫氳繃id鏌ヨ宸ュ簭鍙傛暟
 	 * @param page
-	 * @param gen
+	 * @param
 	 * @return
 	 */
-	IPage<List<Param>> getParamById(Page page, QueryWrapper<ParamDTO> gen);
+	List<Map<String, Object>> getParamById(Page page, long technologyOperationTemplateId);
 	/**
 	 * 宸ュ簭妯℃澘鍏宠仈宸ュ簭鍙傛暟
 	 * @param paramJoinTemplateList
 	 * @return
 	 */
-	List<ParamDTO> relateTypeTemplate(List<ParamJoinTemplate> paramJoinTemplateList);
+	List<Map<String, Object>> relateTypeTemplate(List<ParamJoinTemplate> paramJoinTemplateList);
 
 	/**
 	 *
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
diff --git a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/ParamServiceImpl.java b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/ParamServiceImpl.java
index 738492e..0ccd4d3 100644
--- a/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/ParamServiceImpl.java
+++ b/mes-basic/src/main/java/com/chinaztt/mes/basic/service/impl/ParamServiceImpl.java
@@ -81,7 +81,7 @@
 			Param second=new Param();
 			SysDictItem sysDictItem = second_param.stream().filter(p -> p.getId().equals(Integer.valueOf(String.valueOf(s)))).collect(Collectors.toList()).get(0);
 			second.setParameterItem(sysDictItem.getLabel());
-			second.setCode(""+s);
+			second.setCode(father.getCode()+"-"+s);
 			second.setParentId(father.getId());
 			baseMapper.insert(second);
 			//涓夌骇
@@ -89,7 +89,7 @@
 				Param third=new Param();
 				SysDictItem sysThirdDictItem = third_param.stream().filter(p -> p.getId().equals(Integer.valueOf(String.valueOf(t)))).collect(Collectors.toList()).get(0);
 				third.setParameterItem(sysThirdDictItem.getLabel());
-				third.setCode(""+t);
+				third.setCode(second.getCode()+"-"+t);
 				third.setParentId(second.getId());
 				baseMapper.insert(third);
 			});
@@ -231,6 +231,7 @@
 		List<List<Param>>paramList=new ArrayList<>();
 		AtomicInteger nums = new AtomicInteger();
 		List<Long>secondIds=new ArrayList();
+		List<String>secondCode=new ArrayList();
 		for (int i = 0; i < listParamTemplates.size(); i++) {
 			List<ParamTemplate> l = listParamTemplates.get(i);
 			List<Param>paramList1=new ArrayList<>();
@@ -257,7 +258,8 @@
 						Param second=new Param();
 						second.setId(IdWorker.getId());
 						secondIds.add(second.getId());
-						second.setCode(dictTwo.stream().filter(d -> Objects.equals(c.getParamItemTwo(), d.getLabel())).collect(Collectors.toList()).get(0).getId()+"");
+						second.setCode(paramFirst.getCode()+"-"+dictTwo.stream().filter(d -> Objects.equals(c.getParamItemTwo(), d.getLabel())).collect(Collectors.toList()).get(0).getId()+"");
+						secondCode.add(second.getCode());
 						second.setParameterItem(c.getParamItemTwo());
 						if(c.getParamItemThree()==null){
 							second.setType(type.stream().filter(d -> Objects.equals(c.getParamType(), d.getLabel())).collect(Collectors.toList()).get(0).getValue());
@@ -271,10 +273,11 @@
 						Param third=new Param();
 						third.setId(IdWorker.getId());
 						long paramItemTwo = secondIds.get(secondIds.size()-1);
+						String paramItemCode=secondCode.get(secondCode.size()-1);
 						//System.out.println(nums.get()+"鎵�灞炰簩绾�======銆�"+secondIds.get(secondIds.size()-1));
 						third.setParentId(paramItemTwo);
 						third.setParameterItem(c.getParamItemThree());
-						third.setCode(dictThree.stream().filter(d -> Objects.equals(c.getParamItemThree(), d.getLabel())).collect(Collectors.toList()).get(0).getId()+"");
+						third.setCode(paramItemCode+"-"+dictThree.stream().filter(d -> Objects.equals(c.getParamItemThree(), d.getLabel())).collect(Collectors.toList()).get(0).getId()+"");
 						third.setType(type.stream().filter(d -> Objects.equals(c.getParamType(), d.getLabel())).collect(Collectors.toList()).get(0).getValue());
 						third.setParameterFormat(c.getParamFormat());
 						third.setUnit(c.getUnit());
diff --git a/mes-basic/src/main/resources/mapper/ParamJoinTemplateMapper.xml b/mes-basic/src/main/resources/mapper/ParamJoinTemplateMapper.xml
index 38e3843..6e377cf 100644
--- a/mes-basic/src/main/resources/mapper/ParamJoinTemplateMapper.xml
+++ b/mes-basic/src/main/resources/mapper/ParamJoinTemplateMapper.xml
@@ -41,4 +41,10 @@
 		where technology_operation_param_id = #{technologyOperationParamId}
 		  and technology_operation_template_id = #{technologyOperationTemplateId}
 	</update>
+	<delete id="deleteByCondition">
+		DELETE
+		FROM basic_param_join_template
+		WHERE technology_operation_param_id = #{paramId}
+		  and technology_operation_template_id = #{templateId}
+	</delete>
 </mapper>
diff --git a/mes-basic/src/main/resources/mapper/ParamMapper.xml b/mes-basic/src/main/resources/mapper/ParamMapper.xml
index 3f12f92..e597752 100644
--- a/mes-basic/src/main/resources/mapper/ParamMapper.xml
+++ b/mes-basic/src/main/resources/mapper/ParamMapper.xml
@@ -40,6 +40,7 @@
 		<result property="defaultValue" column="default_value"/>
 		<result property="parentId" column="parent_id"/>
 		<result property="dict" column="dict"/>
+		<result property="templateParentId" column="templateParentId"/>
 		<collection property="sysDictItemList" ofType="com.chinaztt.ztt.admin.api.entity.SysDictItem"
 					column="dict" select="com.chinaztt.mes.basic.mapper.ParamMapper.getDict">
 		</collection>
@@ -123,4 +124,21 @@
 		FROM basic_param
 		WHERE code=#{code}
     </select>
+	<select id="getTemplateParamPlus" resultMap="paramMap">
+		SELECT
+		    bp.id id,
+			bpj.parent_id templateParentId,
+			bpj.technology_operation_template_id,
+			bpj.technology_operation_param_id,
+			bpj.default_value,
+			bp.code,
+			bp.parameter_item,
+			bp."type",
+			bp.unit
+		FROM
+			basic_param_join_template bpj
+				LEFT JOIN basic_param bp ON bpj.technology_operation_param_id = bp.ID
+		WHERE
+			bpj.technology_operation_template_id = #{templateId}
+	</select>
 </mapper>
diff --git a/mes-technology/src/main/java/com/chinaztt/mes/technology/controller/RoutingController.java b/mes-technology/src/main/java/com/chinaztt/mes/technology/controller/RoutingController.java
index 1401e61..36ec33a 100644
--- a/mes-technology/src/main/java/com/chinaztt/mes/technology/controller/RoutingController.java
+++ b/mes-technology/src/main/java/com/chinaztt/mes/technology/controller/RoutingController.java
@@ -341,7 +341,8 @@
 	@SysLog("宸ュ簭鍙傛暟鐨勫弬鏁板�肩殑淇敼")
 	@PutMapping("routingTemplateParam")
 	public R updateRoutingTemplateParamById(@RequestBody RoutingDTO routing) {
-		return routingService.updateRoutingTemplateParamById(routing);
+		System.out.println(routing);
+		return R.ok(routingService.updateRoutingTemplateParamById(routing));
 	}
 
 
diff --git a/mes-technology/src/main/java/com/chinaztt/mes/technology/service/RoutingService.java b/mes-technology/src/main/java/com/chinaztt/mes/technology/service/RoutingService.java
index 86e0cff..03164f7 100644
--- a/mes-technology/src/main/java/com/chinaztt/mes/technology/service/RoutingService.java
+++ b/mes-technology/src/main/java/com/chinaztt/mes/technology/service/RoutingService.java
@@ -25,11 +25,8 @@
 import com.chinaztt.mes.technology.dto.RoutingDTO;
 import com.chinaztt.mes.technology.dto.RoutingOperationDTO;
 import com.chinaztt.mes.technology.entity.Routing;
-import com.chinaztt.mes.technology.entity.RoutingOperationParam;
 import com.chinaztt.mes.technology.entity.RoutingOperationTemplate;
-import com.chinaztt.mes.technology.excel.RoutingData;
 import com.chinaztt.mes.technology.excel.RoutingExcelData;
-import com.chinaztt.mes.technology.excel.StructureData;
 import com.chinaztt.ztt.common.core.util.R;
 
 import javax.servlet.http.HttpServletResponse;
@@ -160,7 +157,7 @@
 	 * @param routingDTO
 	 * @return
 	 */
-	List<RoutingOperationParam> getOperationTemplateParam(RoutingDTO routingDTO);
+	List<Map<String, Object>> getOperationTemplateParam(RoutingDTO routingDTO);
 
 	/**
 	 * 鏌ヨ妯℃澘涓庡弬鏁�
@@ -176,7 +173,7 @@
 	 * @param routingDTO
 	 * @return
 	 */
-	List<RoutingOperationTemplate> addOperationTemplate(RoutingDTO routingDTO);
+	List<Map<String, Object>> addOperationTemplate(RoutingDTO routingDTO);
 
 	/**
 	 * 鏍规嵁澶嶅埗宸ュ簭妯℃澘鐨刬d鍒犻櫎宸ュ簭妯℃澘
@@ -192,7 +189,7 @@
 	 * @param routingDTO
 	 * @return
 	 */
-	boolean addOperationTemplateParam(RoutingDTO routingDTO);
+	List<Map<String,Object>> addOperationTemplateParam(RoutingDTO routingDTO);
 
 	/**
 	 * 鏍规嵁澶嶅埗宸ュ簭鍙傛暟鐨刬d鍒犻櫎宸ュ簭鍙傛暟
diff --git a/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/RoutingServiceImpl.java b/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/RoutingServiceImpl.java
index e6d3666..f9f487b 100644
--- a/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/RoutingServiceImpl.java
+++ b/mes-technology/src/main/java/com/chinaztt/mes/technology/service/impl/RoutingServiceImpl.java
@@ -24,6 +24,7 @@
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -34,11 +35,13 @@
 import com.chinaztt.mes.basic.entity.Part;
 import com.chinaztt.mes.basic.entity.Template;
 import com.chinaztt.mes.basic.mapper.BasicParamTemplateMapper;
+import com.chinaztt.mes.basic.mapper.ParamJoinTemplateMapper;
 import com.chinaztt.mes.basic.mapper.ParamMapper;
 import com.chinaztt.mes.basic.mapper.PartMapper;
 import com.chinaztt.mes.basic.util.DictUtils;
 import com.chinaztt.mes.common.handler.StateMachineHandler;
 import com.chinaztt.mes.common.numgen.NumberGenerator;
+import com.chinaztt.mes.common.util.JsonUtil;
 import com.chinaztt.mes.common.util.StateResult;
 import com.chinaztt.mes.technology.dto.*;
 import com.chinaztt.mes.technology.entity.*;
@@ -51,6 +54,7 @@
 import com.chinaztt.mes.technology.state.routing.constant.RoutingEvents;
 import com.chinaztt.mes.technology.state.routing.constant.RoutingStateStringValues;
 import com.chinaztt.mes.technology.state.routing.constant.RoutingStates;
+import com.chinaztt.ztt.admin.api.entity.SysDictItem;
 import com.chinaztt.ztt.common.core.util.R;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -99,7 +103,7 @@
 	private StateMachinePersister<RoutingStates, RoutingEvents, Routing> persister;
 	private NumberGenerator<Routing> numberGenerator;
 	private NumberGenerator<RoutingOperationTemplate> newNumberGenerator;
-
+	private ParamJoinTemplateMapper paramJoinTemplateMapper;
 
 	@Override
 	public IPage<List<RoutingDTO>> getPage(Page page, QueryWrapper<RoutingDTO> ew) {
@@ -316,23 +320,100 @@
 				newOperationTemplate.setRoutingOperationId(op.getId());
 				newOperationTemplate.setSystemNo(newNumberGenerator.generateNumberWithPrefix(RoutingOperationTemplate.DIGIT, RoutingOperationTemplate.PREFIX, RoutingOperationTemplate::getSystemNo));
 				routingOperationTemplateMapper.insert(newOperationTemplate);
-				//閫氳繃宸ュ簭妯℃澘id鑾峰彇宸ュ簭鍙傛暟
-				List<ParamDTO> paramList = paramMapper.getParam(operationTemplate.getId());
-				if (paramList != null) {
-					for (ParamDTO param : paramList) {
+				List<ParamDTO> templateParamPlus = paramMapper.getTemplateParamPlus(operationTemplate.getId());
+				//templateParamPlus.forEach(l->{
+				//	System.out.println("寰楀埌鐨勬暟鎹�=======================銆�"+JsonUtil.jsonToString(l));
+				//});
+				//涓�绾�
+				List<ParamDTO> first = templateParamPlus.stream().filter(t -> Objects.equals(t.getTemplateParentId(), 0L)).collect(Collectors.toList());
+				//first.forEach(f->{
+				//	System.out.println("涓�绾ф暟鎹�========================銆�"+JsonUtil.jsonToString(f));
+				//});
+				first.forEach(f->{
+						Long firstId=f.getId();
 						RoutingOperationParam routingOperation = new RoutingOperationParam();
-						routingOperation.setCode(param.getCode());
-						routingOperation.setParameterItem(param.getParameterItem());
 						routingOperation.setRoutingId(op.getRoutingId());
 						routingOperation.setOperationId(op.getOperationId());
-						routingOperation.setType(param.getType());
-						routingOperation.setUnit(param.getUnit());
 						routingOperation.setRoutingOperationId(op.getId());
 						routingOperation.setOperationTemplateId(newOperationTemplate.getId());
-						routingOperation.setParamValue(param.getDefaultValue());
+						routingOperation.setCode(f.getCode());
+						routingOperation.setParameterItem(f.getParameterItem());
+						routingOperation.setType(f.getType());
+						routingOperation.setUnit(f.getUnit());
+						routingOperation.setParamValue(f.getDefaultValue());
+						routingOperation.setParentId(0L);
 						routingOperationParamMapper.insert(routingOperation);
-					}
-				}
+					List<ParamDTO> second = templateParamPlus.stream()
+							.filter(t -> Objects.equals(firstId, t.getTemplateParentId())).collect(Collectors.toList());
+					//second.forEach(s->{
+					//	System.out.println("寰楀埌鐨勪簩绾�==================銆�"+JsonUtil.jsonToString(second));
+					//});
+					//浜岀骇
+					second.forEach(s->{
+						long secondId = s.getId();
+						RoutingOperationParam routingOperationSecond = new RoutingOperationParam();
+						routingOperationSecond.setRoutingId(op.getRoutingId());
+						routingOperationSecond.setOperationId(op.getOperationId());
+						routingOperationSecond.setRoutingOperationId(op.getId());
+						routingOperationSecond.setOperationTemplateId(newOperationTemplate.getId());
+						routingOperationSecond.setCode(s.getCode());
+						routingOperationSecond.setParameterItem(s.getParameterItem());
+						routingOperationSecond.setType(s.getType());
+						routingOperationSecond.setUnit(s.getUnit());
+						routingOperationSecond.setParamValue(s.getDefaultValue());
+						routingOperationSecond.setParentId(routingOperation.getId());
+						routingOperationParamMapper.insert(routingOperationSecond);
+						//涓夌骇
+						List<ParamDTO> third = templateParamPlus.stream()
+								.filter(t -> Objects.equals(secondId, t.getTemplateParentId())).collect(Collectors.toList());
+						//third.forEach(t->{
+						//	System.out.println("寰楀埌鐨勪笁绾�==============銆�"+JsonUtil.jsonToString(t));
+						//});
+						third.forEach(t->{
+							RoutingOperationParam routingOperationThird = new RoutingOperationParam();
+							routingOperationThird.setRoutingId(op.getRoutingId());
+							routingOperationThird.setOperationId(op.getOperationId());
+							routingOperationThird.setRoutingOperationId(op.getId());
+							routingOperationThird.setOperationTemplateId(newOperationTemplate.getId());
+							routingOperationThird.setCode(t.getCode());
+							routingOperationThird.setParameterItem(t.getParameterItem());
+							routingOperationThird.setType(t.getType());
+							routingOperationThird.setUnit(t.getUnit());
+							routingOperationThird.setParamValue(t.getDefaultValue());
+							routingOperationThird.setParentId(routingOperationSecond.getId());
+							routingOperationParamMapper.insert(routingOperationThird);
+						});
+					});
+
+				});
+				//QueryWrapper<ParamJoinTemplate>gen=new QueryWrapper<>();
+				//gen.lambda().eq(ParamJoinTemplate::getParentId,0)
+				//		.eq(ParamJoinTemplate::getTechnologyOperationTemplateId,operationTemplate.getId());
+				//List<ParamJoinTemplate> paramJoinTemplates = paramJoinTemplateMapper.selectList(gen);
+				//paramJoinTemplates.forEach(p->{
+				//	RoutingOperationParam routingOperation = new RoutingOperationParam();
+				//	routingOperation.setRoutingId(op.getRoutingId());
+				//	routingOperation.setOperationId(op.getOperationId());
+				//	routingOperation.setRoutingOperationId(op.getId());
+				//	routingOperation.setOperationTemplateId(newOperationTemplate.getId());
+				//});
+				//閫氳繃宸ュ簭妯℃澘id鑾峰彇宸ュ簭鍙傛暟
+				//List<ParamDTO> paramList = paramMapper.getParam(operationTemplate.getId());
+				////if (paramList != null) {
+				//	for (ParamDTO param : paramList) {
+				//		RoutingOperationParam routingOperation = new RoutingOperationParam();
+				//		routingOperation.setCode(param.getCode());
+				//		routingOperation.setParameterItem(param.getParameterItem());
+				//		routingOperation.setRoutingId(op.getRoutingId());
+				//		routingOperation.setOperationId(op.getOperationId());
+				//		routingOperation.setType(param.getType());
+				//		routingOperation.setUnit(param.getUnit());
+				//		routingOperation.setRoutingOperationId(op.getId());
+				//		routingOperation.setOperationTemplateId(newOperationTemplate.getId());
+				//		routingOperation.setParamValue(param.getDefaultValue());
+				//		routingOperationParamMapper.insert(routingOperation);
+				//	}
+				//}
 			}
 		}
 	}
@@ -992,14 +1073,18 @@
 	}
 
 	@Override
-	public List<RoutingOperationParam> getOperationTemplateParam(RoutingDTO routingDTO) {
+	public List<Map<String, Object>> getOperationTemplateParam(RoutingDTO routingDTO) {
+		System.out.println("========>"+routingDTO);
 		List<RoutingOperationParam> routingOperationParamList = routingOperationParamMapper.selectList(Wrappers.<RoutingOperationParam>lambdaQuery()
-				.eq(RoutingOperationParam::getRoutingOperationId, routingDTO.getRoutingOperationId()).eq(RoutingOperationParam::getOperationTemplateId, routingDTO.getOperationTemplateId())
+				.eq(RoutingOperationParam::getRoutingOperationId, routingDTO.getRoutingOperationId())
+				.eq(RoutingOperationParam::getOperationTemplateId, routingDTO.getOperationTemplateId())
+				.eq(RoutingOperationParam::getParentId,0)
 				.orderByAsc(RoutingOperationParam::getId));
 		if (!CollectionUtil.isNotEmpty(routingOperationParamList)) {
 			routingOperationParamList = new ArrayList<>();
 		}
-		return routingOperationParamList;
+		List<SysDictItem> dict = dictUtils.getDict("technology_param");
+		return getTree(routingOperationParamList,dict);
 	}
 
 	@Override
@@ -1021,10 +1106,10 @@
 	}
 
 	@Override
-	public List<RoutingOperationTemplate> addOperationTemplate(RoutingDTO routingDTO) {
+	public List<Map<String, Object>> addOperationTemplate(RoutingDTO routingDTO) {
+		System.out.println("----------------------->" + routingDTO);
 		List<RoutingOperationTemplate> routingOperationTemplateList = new ArrayList<>();
 		for (Template template : routingDTO.getRoutingOperationTemplateList()) {
-			List<ParamDTO> paramList = paramMapper.getParam(template.getId());
 			RoutingOperationTemplate newRoutingOperationTemplate = new RoutingOperationTemplate();
 			newRoutingOperationTemplate.setSystemNo(newNumberGenerator.generateNumberWithPrefix(RoutingOperationTemplate.DIGIT, RoutingOperationTemplate.PREFIX, RoutingOperationTemplate::getSystemNo));
 			newRoutingOperationTemplate.setRoutingOperationId(routingDTO.getRoutingOperationId());
@@ -1034,25 +1119,93 @@
 			newRoutingOperationTemplate.setDataType(template.getDataType());
 			newRoutingOperationTemplate.setOperationTemplateType(template.getTemplateType());
 			routingOperationTemplateMapper.insert(newRoutingOperationTemplate);
+			List<ParamDTO> templateParamPlus = paramMapper.getTemplateParamPlus(template.getId());
+			//templateParamPlus.forEach(l->{
+			//	System.out.println("寰楀埌鐨勬暟鎹�=======================銆�"+JsonUtil.jsonToString(l));
+			//});
+			//涓�绾�
+			List<ParamDTO> first = templateParamPlus.stream().filter(t -> Objects.equals(t.getTemplateParentId(), 0L)).collect(Collectors.toList());
+			//first.forEach(f->{
+			//	System.out.println("涓�绾ф暟鎹�========================銆�"+JsonUtil.jsonToString(f));
+			//});
+			first.forEach(f -> {
+				Long firstId = f.getId();
+				RoutingOperationParam routingOperation = new RoutingOperationParam();
+				routingOperation.setRoutingId(routingDTO.getId());
+				routingOperation.setOperationId(routingDTO.getOperationId());
+				routingOperation.setRoutingOperationId(routingDTO.getRoutingOperationId());
+				routingOperation.setOperationTemplateId(newRoutingOperationTemplate.getId());
+				routingOperation.setCode(f.getCode());
+				routingOperation.setParameterItem(f.getParameterItem());
+				routingOperation.setType(f.getType());
+				routingOperation.setUnit(f.getUnit());
+				routingOperation.setParamValue(f.getDefaultValue());
+				routingOperation.setParentId(0L);
+				routingOperationParamMapper.insert(routingOperation);
+				List<ParamDTO> second = templateParamPlus.stream()
+						.filter(t -> Objects.equals(firstId, t.getTemplateParentId())).collect(Collectors.toList());
+				//second.forEach(s->{
+				//	System.out.println("寰楀埌鐨勪簩绾�==================銆�"+JsonUtil.jsonToString(second));
+				//});
+				//浜岀骇
+				second.forEach(s -> {
+					long secondId = s.getId();
+					RoutingOperationParam routingOperationSecond = new RoutingOperationParam();
+					routingOperationSecond.setRoutingId(routingDTO.getId());
+					routingOperationSecond.setOperationId(routingDTO.getOperationId());
+					routingOperationSecond.setRoutingOperationId(routingDTO.getRoutingOperationId());
+					routingOperationSecond.setOperationTemplateId(newRoutingOperationTemplate.getId());
+					routingOperationSecond.setCode(s.getCode());
+					routingOperationSecond.setParameterItem(s.getParameterItem());
+					routingOperationSecond.setType(s.getType());
+					routingOperationSecond.setUnit(s.getUnit());
+					routingOperationSecond.setParamValue(s.getDefaultValue());
+					routingOperationSecond.setParentId(routingOperation.getId());
+					routingOperationParamMapper.insert(routingOperationSecond);
+					//涓夌骇
+					List<ParamDTO> third = templateParamPlus.stream()
+							.filter(t -> Objects.equals(secondId, t.getTemplateParentId())).collect(Collectors.toList());
+					//third.forEach(t->{
+					//	System.out.println("寰楀埌鐨勪笁绾�==============銆�"+JsonUtil.jsonToString(t));
+					//});
+					third.forEach(t -> {
+						RoutingOperationParam routingOperationThird = new RoutingOperationParam();
+						routingOperationThird.setRoutingId(routingDTO.getId());
+						routingOperationThird.setOperationId(routingDTO.getOperationId());
+						routingOperationThird.setRoutingOperationId(routingDTO.getRoutingOperationId());
+						routingOperationThird.setOperationTemplateId(newRoutingOperationTemplate.getId());
+						routingOperationThird.setCode(t.getCode());
+						routingOperationThird.setParameterItem(t.getParameterItem());
+						routingOperationThird.setType(t.getType());
+						routingOperationThird.setUnit(t.getUnit());
+						routingOperationThird.setParamValue(t.getDefaultValue());
+						routingOperationThird.setParentId(routingOperationSecond.getId());
+						routingOperationParamMapper.insert(routingOperationThird);
+					});
+				});
+
+			});
 			//閫氳繃宸ュ簭妯℃澘id鑾峰彇宸ュ簭鍙傛暟
-			if (paramList != null) {
-				for (ParamDTO param : paramList) {
-					RoutingOperationParam routingOperation = new RoutingOperationParam();
-					routingOperation.setCode(param.getCode());
-					routingOperation.setParameterItem(param.getParameterItem());
-					routingOperation.setRoutingId(routingDTO.getId());
-					routingOperation.setOperationId(routingDTO.getOperationId());
-					routingOperation.setType(param.getType());
-					routingOperation.setUnit(param.getUnit());
-					routingOperation.setRoutingOperationId(routingDTO.getRoutingOperationId());
-					routingOperation.setOperationTemplateId(newRoutingOperationTemplate.getId());
-					routingOperation.setParamValue(param.getDefaultValue());
-					routingOperationParamMapper.insert(routingOperation);
-				}
-			}
-			routingOperationTemplateList.add(newRoutingOperationTemplate);
+			//if (paramList != null) {
+			//	for (ParamDTO param : paramList) {
+			//		RoutingOperationParam routingOperation = new RoutingOperationParam();
+			//		routingOperation.setCode(param.getCode());
+			//		routingOperation.setParameterItem(param.getParameterItem());
+			//		routingOperation.setRoutingId(routingDTO.getId());
+			//		routingOperation.setOperationId(routingDTO.getOperationId());
+			//		routingOperation.setType(param.getType());
+			//		routingOperation.setUnit(param.getUnit());
+			//		routingOperation.setRoutingOperationId(routingDTO.getRoutingOperationId());
+			//		routingOperation.setOperationTemplateId(newRoutingOperationTemplate.getId());
+			//		routingOperation.setParamValue(param.getDefaultValue());
+			//		routingOperationParamMapper.insert(routingOperation);
+			//	}
+			//}
+			//	routingOperationTemplateList.add(newRoutingOperationTemplate);
+			//}
+			//return routingOperationTemplateList;
 		}
-		return routingOperationTemplateList;
+		return getOperationTemplateParam(routingDTO);
 	}
 
 	@Override
@@ -1070,7 +1223,7 @@
 	}
 
 	@Override
-	public boolean addOperationTemplateParam(RoutingDTO routingDTO) {
+	public List<Map<String,Object>> addOperationTemplateParam(RoutingDTO routingDTO) {
 		System.out.println("DTo++++=======>"+routingDTO);
 		List<RoutingOperationParam> routingOperationParamList = new ArrayList<>();
 		for (RoutingOperationParam routingOperationParam : routingDTO.getRoutingOperationParam()) {
@@ -1100,6 +1253,9 @@
 					secondParam.setRoutingId(routingDTO.getId());
 					secondParam.setOperationId(routingDTO.getOperationId());
 					secondParam.setCode(s.getCode());
+					secondParam.setParameterItem(s.getParameterItem());
+					secondParam.setType(s.getType());
+					secondParam.setUnit(s.getUnit());
 					secondParam.setParentId(routingOperationParam.getId());
 					routingOperationParamMapper.insert(secondParam);
 					QueryWrapper<Param>thirdParamQ = new QueryWrapper<Param>();
@@ -1113,6 +1269,9 @@
 							third.setOperationTemplateId(routingDTO.getOperationTemplateId());
 							third.setRoutingId(routingDTO.getId());
 							third.setCode(t.getCode());
+							third.setParameterItem(t.getParameterItem());
+							third.setType(t.getType());
+							third.setUnit(t.getUnit());
 							third.setOperationId(routingDTO.getOperationId());
 							third.setParentId(secondParam.getId());
 							routingOperationParamMapper.insert(third);
@@ -1120,11 +1279,88 @@
 					}
 				});
 			}
-			//
-			//routingOperationParamList.add(routingOperationParam);
 		}
-		return true;
+		List<SysDictItem> dict = dictUtils.getDict("technology_param");
+
+		QueryWrapper<RoutingOperationParam>queryWrapper=new QueryWrapper<>();
+		queryWrapper.lambda().eq(RoutingOperationParam::getParentId,0)
+				.eq(RoutingOperationParam::getRoutingId,routingDTO.getId())
+				.eq(RoutingOperationParam::getOperationTemplateId,routingDTO.getOperationTemplateId())
+				.eq(RoutingOperationParam::getRoutingOperationId,routingDTO.getRoutingOperationId());
+		List<RoutingOperationParam> list = routingOperationParamMapper.selectList(queryWrapper);
+		return getTree(list,dict);
 	}
+
+	public List<Map<String,Object>> getTree(List records,List<SysDictItem> dict){
+		List<Map<String,Object>> all = new ArrayList<>();
+		records.forEach(l->{
+			System.out.println("涓�绾ф暟鎹�--"+l);
+			Map pojo = JsonUtil.jsonToPojo(JsonUtil.jsonToString(l), 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());
+			});
+			QueryWrapper<RoutingOperationParam>queryWrapper=new QueryWrapper<>();
+			queryWrapper.lambda().eq(RoutingOperationParam::getParentId,pojo.get("id"));
+			List<RoutingOperationParam> secondList = routingOperationParamMapper.selectList(queryWrapper);
+			//娌℃湁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"));
+				oneMap.put("paramValue",pojo.get("paramValue"));
+				all.add(oneMap);
+			}
+			secondList.forEach(s->{
+				System.out.println("浜岀骇鏁版嵁--"+s);
+				Map second = JsonUtil.jsonToPojo(JsonUtil.jsonToString(s), Map.class);
+				Optional.ofNullable(second.get("type")).ifPresent(o->{
+					second.put("type",dict.stream().filter(d-> Objects.equals(String.valueOf(d.getValue()),second.get("type"))).collect(Collectors.toList()).get(0).getLabel());
+				});
+				QueryWrapper<RoutingOperationParam>queryWrapperSecond=new QueryWrapper<>();
+				queryWrapperSecond.lambda().eq(RoutingOperationParam::getParentId,second.get("id"));
+				List<RoutingOperationParam> third = routingOperationParamMapper.selectList(queryWrapperSecond);
+				if(third.isEmpty()){
+					RoutingOperationParam p = new RoutingOperationParam();
+					p.setType(s.getType());
+					//p.setParameterFormat(null);
+					p.setUnit(s.getUnit());
+					p.setParamValue(s.getParamValue());
+					p.setParentId(s.getParentId());
+					third.add(p);
+				}
+				third.forEach(t->{
+					System.out.println("涓夌骇鏁版嵁--"+t);
+					Optional.ofNullable(t.getType()).ifPresent(o->{
+						t.setType(dict.stream().filter(d-> Objects.equals(String.valueOf(d.getValue()),t.getType())).collect(Collectors.toList()).get(0).getLabel());
+					});
+					Map<String,Object> allMap = new HashMap<>();
+					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 deleteOperationTemplateParam(Long id) {
@@ -1133,9 +1369,14 @@
 	}
 
 	@Override
+	@Transactional(rollbackFor = Exception.class)
 	public R updateRoutingTemplateParamById(RoutingDTO routing) {
 		for (RoutingOperationParam routingOperationParam : routing.getRoutingOperationParam()) {
-			routingOperationParamMapper.updateById(routingOperationParam);
+			UpdateWrapper<RoutingOperationParam>updateWrapper=new UpdateWrapper<>();
+			updateWrapper.lambda()
+					.set(RoutingOperationParam::getParamValue,routingOperationParam.getParamValue())
+					.eq(RoutingOperationParam::getId,routingOperationParam.getId());
+			routingOperationParamMapper.update(null,updateWrapper);
 		}
 		return R.ok();
 	}

--
Gitblit v1.9.3