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,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();
   }