diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls index 78870a96..aa248e2c 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java new file mode 100644 index 00000000..e56eed4f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java @@ -0,0 +1,39 @@ +package org.nl.wms.scheduler_manage.controller.scheduler; + +/* + * @author ZZQ + * @Date 2023/5/22 14:27 + */ + +import cn.dev33.satoken.annotation.SaIgnore; +import org.nl.wms.scheduler_manage.service.scheduler.SchedulerService; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/shceduler") +@SaIgnore +public class SchedulerController { + + @Autowired + SchedulerService schedulerService; + + @GetMapping("/all") + public ResponseEntity allprocess(){ + return new ResponseEntity<>(schedulerService.all(), HttpStatus.OK); + } + @GetMapping("/process") + public ResponseEntity allprocess(String process){ + return new ResponseEntity<>(schedulerService.getProcess(process), HttpStatus.OK); + } + @GetMapping("/processFlow") + public ResponseEntity allprocess(String process,String flow){ + FlowElement element = schedulerService.currentFlow(process, flow); + return new ResponseEntity<>(element, HttpStatus.OK); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java index cd6deaea..33ea146a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/region/impl/SchBaseRegionServiceImpl.java @@ -1,28 +1,21 @@ package org.nl.wms.scheduler_manage.service.region.impl; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; -import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.WqlUtil; -import org.nl.wms.product_manage.sch.service.dto.RegionDto; -import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.region.ISchBaseRegionService; import org.nl.wms.scheduler_manage.service.region.dao.SchBaseRegion; import org.nl.wms.scheduler_manage.service.region.dao.mapper.SchBaseRegionMapper; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.ProcessElement; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; import org.springframework.beans.factory.annotation.Autowired; @@ -31,7 +24,6 @@ import org.springframework.util.Assert; import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -169,4 +161,9 @@ public class SchBaseRegionServiceImpl extends ServiceImpl converterMap =new HashMap<>(); + + + public List all(){ + List readall = XmlReadUtil.readall(); + return readall; + } + + public ProcessElement getProcess(String processId){ + ProcessElement processElement = XmlReadUtil.readProcess(processId); + return processElement; + } + + public FlowElement currentFlow(String processId,String flowId){ + ProcessElement processElement = XmlReadUtil.readProcess(processId); + if (processElement!=null){ + return processElement.flowId(flowId); + } + return null; + } + + static class XmlReadUtil{ + + static FileSystemResourceLoader loader = new FileSystemResourceLoader(); + + @SneakyThrows + public static ProcessElement readProcess(String processId){//生成参数: + Function function = xtr -> { + try { + while (xtr.hasNext()){ + if (XMLStreamConstants.START_ELEMENT == xtr.next()){ + System.out.println(xtr.getLocalName()+"___"+processId); + if (xtr.getLocalName().equals("process") && xtr.getAttributeValue(0).equals(processId)){ + BaseConverter converter = converterMap.get(xtr.getLocalName()); + return (ProcessElement)converter.process(xtr); + } + } + } + }catch (Exception ex){ + throw new BadRequestException(ex.getMessage()); + } + return null; + }; + ProcessElement processElement = readXml("classpath:/scheduler.xml", function); + return processElement; + } + + @SneakyThrows + public static List readall() { + //生成参数: + Function function = xtr -> { + List list = new ArrayList<>(); + try { + while (xtr.hasNext()) { + if (XMLStreamConstants.START_ELEMENT == xtr.next()) { + System.out.println(xtr.getLocalName()); + BaseConverter converter = converterMap.get(xtr.getLocalName()); + if (converter != null) { + list.add(converter.process(xtr)); + } + } + } + }catch (Exception ex){ + throw new BadRequestException(ex.getMessage()); + } + return list; + }; + List baseElements = readXml("classpath:/scheduler.xml", function); + return baseElements; + } + private static T readXml(String path, Function function) throws IOException, XMLStreamException { + FileInputStream inputStream = null; + InputStreamReader streamReader = null; + Resource resource = loader.getResource(path); + try { + inputStream = new FileInputStream(resource.getFile()); + streamReader = new InputStreamReader(inputStream, "UTF-8"); + //TODO:schama校验 + XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(streamReader); + return function.apply(reader); + }finally { + if (streamReader!=null){ + streamReader.close(); + } + if (inputStream!=null){ + inputStream.close(); + } + } + } + } + + + @Override + public Object postProcessAfterInitialization(@NotNull Object bean, String beanName) throws BeansException { + if (bean instanceof BaseConverter){ + converterMap.put(beanName,(BaseConverter)bean); + } + return bean; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseConverter.java new file mode 100644 index 00000000..a1652130 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseConverter.java @@ -0,0 +1,24 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter; + +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import java.util.HashMap; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +public interface BaseConverter { + BaseElement process(XMLStreamReader xtr) throws XMLStreamException; + + default void setBaseLabel(BaseElement element,XMLStreamReader xtr,String...labels){ + Map map = new HashMap<>(); + for (String label : labels) { + map.put(label,xtr.getAttributeValue(null,label)); + } + element.setAttributeValue(map); + element.setId(xtr.getAttributeValue(null,"id")); + element.setName(xtr.getAttributeValue(null,"name")); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseElement.java new file mode 100644 index 00000000..3fa3e924 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/BaseElement.java @@ -0,0 +1,61 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter; + +import lombok.Data; + +import javax.xml.stream.XMLStreamReader; +import java.io.Serializable; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class BaseElement implements Serializable { + private String id; + private String name; + private int xmlRowNumber; + private int xmlColumnNumber; + private Map attributeValue; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getXmlRowNumber() { + return xmlRowNumber; + } + + public void setXmlRowNumber(int xmlRowNumber) { + this.xmlRowNumber = xmlRowNumber; + } + + public int getXmlColumnNumber() { + return xmlColumnNumber; + } + + public void setXmlColumnNumber(int xmlColumnNumber) { + this.xmlColumnNumber = xmlColumnNumber; + } + + public Map getAttributeValue() { + return attributeValue; + } + + public void setAttributeValue(Map attributeValue) { + this.attributeValue = attributeValue; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndConverter.java new file mode 100644 index 00000000..48a7bea6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndConverter.java @@ -0,0 +1,24 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamReader; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("end") +public class EndConverter implements BaseConverter { + String[] labels = new String[]{"id","name","sourceRef"}; + @Override + public BaseElement process(XMLStreamReader xtr) { + EndElement element = new EndElement(); + setBaseLabel(element,xtr,labels); + element.setSourceRefId(xtr.getAttributeValue(null,"sourceRef")); + element.setTargetRefId(xtr.getAttributeValue(null,"targetRef")); + return element; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndElement.java new file mode 100644 index 00000000..d3c705b9 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/EndElement.java @@ -0,0 +1,9 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class EndElement extends FlowElement { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java new file mode 100644 index 00000000..7b46ef69 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java @@ -0,0 +1,49 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import lombok.SneakyThrows; +import org.apache.commons.lang3.StringUtils; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamReader; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("flow") +public class FlowConverter implements BaseConverter { + String[] labels = new String[]{"id","name","sourceRef","targetRef"}; + @Override + @SneakyThrows + public BaseElement process(XMLStreamReader xtr) { + FlowElement element = new FlowElement(); + setBaseLabel(element,xtr,labels); + element.setSourceRefId(xtr.getAttributeValue(null,"sourceRef")); + element.setTargetRefId(xtr.getAttributeValue(null,"targetRef")); + String has = xtr.getAttributeValue(null, "has"); + if (StringUtils.isNotEmpty(has)){ + int i = 0; + while (true){ + if (i == Integer.valueOf(has)){ + break; + } + if (XMLStreamConstants.START_ELEMENT == xtr.next()){ + System.out.println(xtr.getLocalName()); + Map param = new HashMap(); + param.put(xtr.getAttributeValue(null,"id"),xtr.getAttributeValue(null,"value")); + element.getParams().add(param); + i++; + } + } + } + return element; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java new file mode 100644 index 00000000..2877451d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java @@ -0,0 +1,64 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class FlowElement extends BaseElement { + + private FlowElement sourceRef; + private FlowElement targetRef; + private String sourceRefId; + private String targetRefId; + private List> params = new ArrayList<>(); + + + + public FlowElement pre() { + return sourceRef; + } + + public FlowElement next() { + return targetRef; + } + + + protected void setSourceRef(FlowElement sourceRef) { + this.sourceRef = sourceRef; + } + + + protected void setTargetRef(FlowElement targetRef) { + this.targetRef = targetRef; + } + + protected String getSourceRefId() { + return sourceRefId; + } + + protected void setSourceRefId(String sourceRefId) { + this.sourceRefId = sourceRefId; + } + + protected String getTargetRefId() { + return targetRefId; + } + + protected void setTargetRefId(String targetRefId) { + this.targetRefId = targetRefId; + } + + public List> getParams() { + return params; + } + + public void setParams(List> params) { + this.params = params; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/GatwayConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/GatwayConverter.java new file mode 100644 index 00000000..d69ae9ba --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/GatwayConverter.java @@ -0,0 +1,20 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamReader; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("gatway") +public class GatwayConverter implements BaseConverter { + + @Override + public BaseElement process(XMLStreamReader xtr) { + return null; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessConverter.java new file mode 100644 index 00000000..c643d91b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessConverter.java @@ -0,0 +1,46 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import com.alibaba.fastjson.JSON; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamConstants; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import java.util.HashMap; +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("process") +public class ProcessConverter implements BaseConverter { + String[] labels = new String[]{"id","name"}; + @Autowired + private Map converterMap; + + @Override + public BaseElement process(XMLStreamReader xtr) throws XMLStreamException { + ProcessElement element = new ProcessElement(); + setBaseLabel(element,xtr,labels); + while (xtr.hasNext()){ + if (XMLStreamConstants.START_ELEMENT == xtr.next()){ + String localName = xtr.getLocalName(); + element.getFlowElements().add((FlowElement) converterMap.get(localName).process(xtr)); + if (localName.equals("end")){ + break; + } + } + } + Map eleMap = element.getFlowElements().stream().collect(HashMap::new, (k, v) -> k.put(v.getId(), v), HashMap::putAll); + for (FlowElement flowElement : element.getFlowElements()) { + flowElement.setTargetRef(eleMap.get(flowElement.getTargetRefId())); + flowElement.setSourceRef(eleMap.get(flowElement.getSourceRefId())); + } + element.setStartElement(eleMap.get("start")); + return element; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessElement.java new file mode 100644 index 00000000..4174ddb4 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/ProcessElement.java @@ -0,0 +1,43 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; + +import java.util.ArrayList; +import java.util.List; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class ProcessElement extends BaseElement { + + private StartElement startElement; + + private List flowElements = new ArrayList<>(); + + public List getFlowElements() { + return flowElements; + } + + public FlowElement flowId(String flowId){ + for (FlowElement flowElement : flowElements) { + if (flowElement.getId().equals(flowId)){ + return flowElement; + } + } + return null; + } + + public void setFlowElements(List flowElements) { + this.flowElements = flowElements; + } + + public StartElement getStartElement() { + return startElement; + } + + + public void setStartElement(BaseElement startElement) { + this.startElement = (StartElement)startElement; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartConverter.java new file mode 100644 index 00000000..fc47259f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartConverter.java @@ -0,0 +1,25 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseConverter; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; +import org.springframework.stereotype.Service; + +import javax.xml.stream.XMLStreamReader; + +/* + * @author ZZQ + * @Date 2023/5/19 11:00 + */ +@Service("start") +public class StartConverter implements BaseConverter { + String[] labels = new String[]{"id","name","targetRef"}; + @Override + public BaseElement process(XMLStreamReader xtr) { + StartElement element = new StartElement(); + setBaseLabel(element,xtr,labels); + element.setSourceRefId(xtr.getAttributeValue(null,"sourceRef")); + element.setTargetRefId(xtr.getAttributeValue(null,"targetRef")); + return element; + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartElement.java new file mode 100644 index 00000000..72804de5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/StartElement.java @@ -0,0 +1,9 @@ +package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; + +/* + * @author ZZQ + * @Date 2023/5/21 18:03 + */ +public class StartElement extends FlowElement { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index 26bbbcb5..a204117e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -321,6 +321,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtStructattr::getStruct_id,struct_id) - ); + attrDao = iStIvtStructattrService.getById(struct_id); } if (ObjectUtil.isEmpty(attrDao.getStruct_code())) throw new BadRequestException("未找到仓位!"); @@ -346,7 +344,18 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl