Fixiaobai
2023-11-10 af389156a78401b1e51807efe90b7310fc4c20f6
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,23 +35,26 @@
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.*;
import com.chinaztt.mes.technology.excel.RoutingData;
import com.chinaztt.mes.technology.excel.RoutingExcelData;
import com.chinaztt.mes.technology.excel.StructureData;
import com.chinaztt.mes.technology.mapper.*;
import com.chinaztt.mes.technology.service.RoutingService;
import com.chinaztt.mes.technology.state.bom.constant.BomStateStringValues;
import com.chinaztt.mes.technology.state.routing.RoutingStateMachineConfig;
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) {
@@ -168,6 +172,10 @@
      int noCount = baseMapper.selectCount(Wrappers.<Routing>lambdaQuery().eq(Routing::getRoutingNo, routingDTO.getRoutingNo()));
      if (noCount > 0) {
         throw new RuntimeException("编号重复");
      }
      Bom bom = bomMapper.selectById(routingDTO.getBomId());
      if(Objects.equals(BomStateStringValues.DRAFT,bom.getState())){
         throw new RuntimeException("BOM状态未通过!");
      }
      //主表中【零件号】、【工艺版本】、【替代】值的组合须唯一。
      noCount = baseMapper.selectCount(Wrappers.<Routing>lambdaQuery().eq(Routing::getPartId, routingDTO.getPartId())
@@ -312,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);
            //   }
            //}
         }
      }
   }
@@ -988,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
@@ -1017,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());
@@ -1030,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
@@ -1066,23 +1223,144 @@
   }
   @Override
   public List<RoutingOperationParam> 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()) {
         System.out.println("========================>"+routingOperationParam);
         long firstId=routingOperationParam.getId();
         int count = routingOperationParamMapper.selectCount(Wrappers.<RoutingOperationParam>lambdaQuery().eq(RoutingOperationParam::getRoutingOperationId, routingDTO.getRoutingOperationId())
               .eq(RoutingOperationParam::getOperationTemplateId, routingDTO.getOperationTemplateId()).eq(RoutingOperationParam::getCode, routingOperationParam.getCode()));
         if (count > 0) {
            continue;
         }
         //第一级别
         routingOperationParam.setRoutingOperationId(routingDTO.getRoutingOperationId());
         routingOperationParam.setOperationTemplateId(routingDTO.getOperationTemplateId());
         routingOperationParam.setRoutingId(routingDTO.getId());
         routingOperationParam.setOperationId(routingDTO.getOperationId());
         routingOperationParamMapper.insert(routingOperationParam);
         routingOperationParamList.add(routingOperationParam);
         QueryWrapper<Param>secondParamQ = new QueryWrapper<Param>();
         System.out.println("二级==============》");
         secondParamQ.lambda().eq(Param::getParentId,firstId);
         List<Param> second=paramMapper.selectList(secondParamQ);
         //二级
         if(second.size()>0){
            second.forEach(s->{
               RoutingOperationParam secondParam=new RoutingOperationParam();
               secondParam.setRoutingOperationId(routingDTO.getRoutingOperationId());
               secondParam.setOperationTemplateId(routingDTO.getOperationTemplateId());
               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>();
               thirdParamQ.lambda().eq(Param::getParentId,s.getId());
               List<Param> thirdList = paramMapper.selectList(thirdParamQ);
               //三级
               if(thirdList.size()>0){
                  thirdList.forEach(t->{
                     RoutingOperationParam third=new RoutingOperationParam();
                     third.setRoutingOperationId(routingDTO.getRoutingOperationId());
                     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);
                  });
               }
            });
         }
      }
      return routingOperationParamList;
      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) {
@@ -1091,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();
   }
@@ -1264,11 +1547,11 @@
      //结构类型
      batchinfoJsonObj.put("BOM_TYPE_DB", routingDTO.getBomTypeDb());
      //启用时间
      batchinfoJsonObj.put("PHASE_IN_DATE", DateTimeFormatter.ofPattern("yyyyMMdd").format(routingDTO.getPhaseInDate()));
      if (routingDTO.getPhaseOutDate() != null) {
         //弃用时间
         batchinfoJsonObj.put("PHASE_OUT_DATE", DateTimeFormatter.ofPattern("yyyyMMdd").format(routingDTO.getPhaseOutDate()));
      }
      //batchinfoJsonObj.put("PHASE_IN_DATE", DateTimeFormatter.ofPattern("yyyyMMdd").format(routingDTO.getPhaseInDate()));
      //if (routingDTO.getPhaseOutDate() != null) {
      //   //弃用时间
      //   batchinfoJsonObj.put("PHASE_OUT_DATE", DateTimeFormatter.ofPattern("yyyyMMdd").format(routingDTO.getPhaseOutDate()));
      //}
      JSONArray alternateInfo = new JSONArray();
      JSONObject alobj = new JSONObject()
            .fluentPut("ALTERNATIVE_NO", routingDTO.getAlternativeNo())