物料接口 工艺接口

This commit is contained in:
tzy1042411602 2024-11-25 11:48:55 +08:00
parent df99d4cb3a
commit 2f3f0f5916
4 changed files with 138 additions and 84 deletions

View File

@ -37,8 +37,6 @@ import java.util.*;
/** /**
* 工艺路线 * 工艺路线
*
* @author ruoyi
* @date 2024-10-09 * @date 2024-10-09
*/ */
@Validated @Validated
@ -85,25 +83,7 @@ public class ProcessRouteController extends BaseController {
parent.setMaterialName(processRouteVo.getMaterialName()); parent.setMaterialName(processRouteVo.getMaterialName());
parent.setMaterial(processRouteVo.getMaterial()); parent.setMaterial(processRouteVo.getMaterial());
parent.setDiscWeight(processRouteVo.getDiscWeight()); parent.setDiscWeight(processRouteVo.getDiscWeight());
/*parent.setRawMaterialCode(processRouteVo.getRawMaterialCode());
parent.setRawMaterialName(processRouteVo.getRawMaterialName());
parent.setDiscUsage(processRouteVo.getDiscUsage());
parent.setBomUnit(processRouteVo.getBomUnit());
parent.setBomMaterial(processRouteVo.getBomMaterial());
parent.setProcessNo(processRouteVo.getProcessNo());
parent.setWorkCenter(processRouteVo.getWorkCenter());
parent.setProcessName(processRouteVo.getProcessName());
parent.setProcessDescription(processRouteVo.getProcessDescription());
parent.setProcessControl(processRouteVo.getProcessControl());
parent.setActivityDuration(processRouteVo.getActivityDuration());
parent.setActivityUnit(processRouteVo.getActivityUnit());
parent.setUnitQuantity(processRouteVo.getUnitQuantity());
parent.setBatchQuantity(processRouteVo.getBatchQuantity());
parent.setFirstBatchQuantity(processRouteVo.getFirstBatchQuantity());
parent.setPlanStartTime(processRouteVo.getPlanStartTime());
parent.setPlanEndTime(processRouteVo.getPlanEndTime());
parent.setXuStartTime(processRouteVo.getXuStartTime());
parent.setXuEndTime(processRouteVo.getXuEndTime());*/
// 初始化子节点列表 // 初始化子节点列表
parent.setChildren(new ArrayList<>()); parent.setChildren(new ArrayList<>());
// 将父节点放入Map中 // 将父节点放入Map中
@ -112,7 +92,7 @@ public class ProcessRouteController extends BaseController {
topLevelList.add(parent); topLevelList.add(parent);
} }
// 创建子节点并将其添加到父节点的子集 // 创建子节点并将其添加到父节点的子集
ProcessRouteVo child = createChildVo(processRouteVo, parent.getId()); ProcessRouteVo child = createChildVo(processRouteVo, parent.getId(),parent.getMaterialCode(),parent.getMaterialName());
parent.getChildren().add(child); parent.getChildren().add(child);
} }
@ -133,10 +113,12 @@ public class ProcessRouteController extends BaseController {
* @param processRouteVo 原始数据 * @param processRouteVo 原始数据
* @return ProcessRouteVo 子节点 * @return ProcessRouteVo 子节点
*/ */
private ProcessRouteVo createChildVo(ProcessRouteVo processRouteVo,Long parentId) { private ProcessRouteVo createChildVo(ProcessRouteVo processRouteVo,Long parentId,String materialCode,String materialName) {
ProcessRouteVo child = new ProcessRouteVo(); ProcessRouteVo child = new ProcessRouteVo();
child.setId(processRouteVo.getId()); child.setId(processRouteVo.getId());
child.setParentId(parentId); child.setParentId(parentId);
/* child.setMaterialCode(materialCode);
child.setMaterialName(materialName);*/
/* child.setMaterialCode(processRouteVo.getMaterialCode()); /* child.setMaterialCode(processRouteVo.getMaterialCode());
child.setMaterialName(processRouteVo.getMaterialName()); child.setMaterialName(processRouteVo.getMaterialName());
child.setMaterial(processRouteVo.getMaterial()); child.setMaterial(processRouteVo.getMaterial());
@ -327,8 +309,9 @@ public class ProcessRouteController extends BaseController {
@Log(title = "保存工艺路线", businessType = BusinessType.INSERT) @Log(title = "保存工艺路线", businessType = BusinessType.INSERT)
@RepeatSubmit() @RepeatSubmit()
@PostMapping("/addRoute") @PostMapping("/addRoute")
public R<Void> addRoute( @RequestBody List<ProcessRoute> list) { public R<Void> addRoute( @RequestBody List<ProcessRouteVo> list) {
return toAjax(iProcessRouteService.addRoute(list));
return iProcessRouteService.addRoute(list);
} }
@SaCheckPermission("system:route:add") @SaCheckPermission("system:route:add")

View File

@ -372,6 +372,7 @@ public class JdUtil {
} }
} }
/* /*
材料bom
{ {
"FMATERIALID.FNumber": "001HD24.01.01.017.0", "FMATERIALID.FNumber": "001HD24.01.01.017.0",
"FITEMNAME": "行走原点标定", "FITEMNAME": "行走原点标定",
@ -389,10 +390,10 @@ public class JdUtil {
for (PlanOrderVo planOrder : planOrderList) { for (PlanOrderVo planOrder : planOrderList) {
JsonObject json = new JsonObject(); JsonObject json = new JsonObject();
json.addProperty("FormId", "ENG_BOM"); json.addProperty("FormId", "ENG_BOM");
json.addProperty("FieldKeys", "FMATERIALID.FNumber,FITEMNAME ,FMATERIALIDCHILD.FNumber ,FCHILDITEMNAME ,FNUMERATOR ,FDENOMINATOR,FChildBaseUnitID.FNumbe "); json.addProperty("FieldKeys", "F_HBYT_SCLH,FMaterialID.FNumber,FMaterialID.FNumber2,FMaterialName1,FNumerator,FDenominator,FUnitID2.FName");
JsonArray filterString = new JsonArray(); JsonArray filterString = new JsonArray();
JsonObject filterObject = new JsonObject(); JsonObject filterObject = new JsonObject();
filterObject.addProperty("FieldName", "FMATERIALID.FNumber"); filterObject.addProperty("FieldName", "FMaterialID.FNumber");
filterObject.addProperty("Compare", "="); // 改为等号运算符 filterObject.addProperty("Compare", "="); // 改为等号运算符
filterObject.addProperty("Value", planOrder.getFBillNo()); filterObject.addProperty("Value", planOrder.getFBillNo());
filterObject.addProperty("Left", ""); filterObject.addProperty("Left", "");

View File

@ -1,6 +1,7 @@
package com.ruoyi.system.service; package com.ruoyi.system.service;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.system.domain.MaterialBom; import com.ruoyi.system.domain.MaterialBom;
import com.ruoyi.system.domain.ProcessRoute; import com.ruoyi.system.domain.ProcessRoute;
@ -82,7 +83,7 @@ public interface IProcessRouteService {
List<String> getProcessInfoList(String query); List<String> getProcessInfoList(String query);
boolean addRoute(List<ProcessRoute> list); R<Void> addRoute(List<ProcessRouteVo> list);
List<MaterialBom> getProcessMaterialList(ProcessRoute processRoute); List<MaterialBom> getProcessMaterialList(ProcessRoute processRoute);

View File

@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.cell.CellSetter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -14,6 +15,7 @@ import com.google.gson.JsonObject;
import com.kingdee.bos.webapi.entity.RepoRet; import com.kingdee.bos.webapi.entity.RepoRet;
import com.kingdee.bos.webapi.sdk.K3CloudApi; import com.kingdee.bos.webapi.sdk.K3CloudApi;
import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
@ -28,10 +30,7 @@ import com.ruoyi.system.jdmain.rouplan.FSubEntity;
import com.ruoyi.system.jdmain.rouplan.Model; import com.ruoyi.system.jdmain.rouplan.Model;
import com.ruoyi.system.jdmain.route.ProcessModel; import com.ruoyi.system.jdmain.route.ProcessModel;
import com.ruoyi.system.listener.LoadBomResult; import com.ruoyi.system.listener.LoadBomResult;
import com.ruoyi.system.mapper.MaterialBomMapper; import com.ruoyi.system.mapper.*;
import com.ruoyi.system.mapper.ProcessInfoMapper;
import com.ruoyi.system.mapper.ProcessRouteMapper;
import com.ruoyi.system.mapper.ProductionOrderMapper;
import com.ruoyi.system.runner.PDFGenerator; import com.ruoyi.system.runner.PDFGenerator;
import com.ruoyi.system.service.IBomDetailsService; import com.ruoyi.system.service.IBomDetailsService;
import com.ruoyi.system.service.IMaterialPropertiesService; import com.ruoyi.system.service.IMaterialPropertiesService;
@ -69,6 +68,8 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
@Autowired @Autowired
IBomDetailsService iBomDetailsService; IBomDetailsService iBomDetailsService;
@Autowired @Autowired
BomDetailsMapper bomDetailsMapper;
@Autowired
IMaterialPropertiesService iMaterialPropertiesService; IMaterialPropertiesService iMaterialPropertiesService;
@Autowired @Autowired
ProductionOrderMapper productionOrderMapper; ProductionOrderMapper productionOrderMapper;
@ -187,10 +188,33 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) { List<ProcessRoute> cunList = new ArrayList<>();
//TODO 做一些业务上的校验,判断是否需要校验 // 这里你到时候改成通过ids查询出来 这个ids是你传过来要删除的,你不能通过去排序和查询en
for (Long id : ids) {
//存储删掉的数据
ProcessRoute processRoute = baseMapper.selectById(id);
cunList.add(processRoute);
} }
return baseMapper.deleteBatchIds(ids) > 0; // 批量删除
if (baseMapper.deleteBatchIds(ids) > 0) {
//随便获取一个
ProcessRoute processRoute = cunList.get(0);
//获取删除后其他的 工序,然后更新工序号
LambdaQueryWrapper<ProcessRoute> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(ProcessRoute::getRouteDescription, processRoute.getRouteDescription())
.eq(ProcessRoute::getMaterialCode, processRoute.getMaterialCode())
.eq(ProcessRoute::getMaterialName, processRoute.getMaterialName())
.isNotNull(ProcessRoute::getProcessNo);
List<ProcessRoute> routeList = baseMapper.selectList(wrapper);
//工序号升序排序
routeList.sort(Comparator.comparing(ProcessRoute::getProcessNo));
for (int i = 0; i < routeList.size(); i++) {
routeList.get(i).setProcessNo((long) (i + 1) * 10);
}
return baseMapper.insertOrUpdateBatch(routeList);
}
return false;
} }
@Override @Override
@ -376,9 +400,14 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
// 3. 保存 BOM 详情 // 3. 保存 BOM 详情
saveBomDetails(bomDetailsVos); saveBomDetails(bomDetailsVos);
List<ProcessRoute> routeArrayList = new ArrayList<>();
// 4. 批量插入 ProcessRoute 数据 // 4. 批量插入 ProcessRoute 数据
return baseMapper.insertBatch(processRoutes); for (ProcessRoute processRoute : processRoutes) {
if (processRoute.getProcessNo()!=null||processRoute.getProcessName()!=null){
routeArrayList.add(processRoute);
}
}
return baseMapper.insertBatch(routeArrayList);
} }
private void processMaterialBom(List<ProcessRoute> processRoutes) { private void processMaterialBom(List<ProcessRoute> processRoutes) {
@ -405,19 +434,6 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
materialBom.setUnit(unit); materialBom.setUnit(unit);
materialBom.setMaterialType(materialType); materialBom.setMaterialType(materialType);
materialBom.setQuantity(quantity); materialBom.setQuantity(quantity);
/*
ProductionOrder productionOrder = new ProductionOrder();
productionOrder.setProductionOrderNo(projectNumber);
productionOrder.setDrawingNo(processRoute.getRawMaterialCode());
productionOrder.setDrawingName(processRoute.getRawMaterialName());
productionOrder.setQuantity(processRoute.getUnitQuantity());
productionOrder.setMaterial(materialType);
productionOrder.setSingleWeight(processRoute.getDiscWeight());
// productionOrder.setTotalWeight(processRoute.getDiscWeight() * processRoute.getUnitQuantity());
productionOrder.setParentPart(parentMaterialCode);
productionOrder.setParentPart(parentMaterialName);
// 这里插入 productionOrder 数据
productionOrderMapper.insert(productionOrder);*/
// 这里插入 materialBom 数据 // 这里插入 materialBom 数据
materialBomMapper.insert(materialBom); materialBomMapper.insert(materialBom);
} }
@ -426,29 +442,23 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
private List<BomDetailsVo> processBomDetails(List<ProcessRoute> processRoutes, List<ProductionOrderVo> productionOrderVos) { private List<BomDetailsVo> processBomDetails(List<ProcessRoute> processRoutes, List<ProductionOrderVo> productionOrderVos) {
List<BomDetailsVo> bomDetailsVos = new ArrayList<>(); List<BomDetailsVo> bomDetailsVos = new ArrayList<>();
String zFnumber = null;
String zFname = null;
String zFlinghao = null;
// 1. 处理总装部件 // 1. 处理总装部件
String proMaterials = null;
for (ProcessRoute processRoute : processRoutes) { for (ProcessRoute processRoute : processRoutes) {
if (processRoute.getRawMaterialCode() != null) { if (processRoute != null) {
zFlinghao = processRoute.getProcessDescription(); String zFlinghao = processRoute.getRouteDescription();
BomDetailsVo bomDetails = createBomDetails(processRoute);
if ("总装部件".equals(processRoute.getMaterial())) { if ("总装部件".equals(processRoute.getMaterial())) {
proMaterials = "总装部件"; String zFnumber = processRoute.getMaterialCode();
zFnumber = processRoute.getMaterialCode(); String zFname = processRoute.getMaterialName();
zFname = processRoute.getMaterialName();
// 将装配 BOM 详情填充进 BOM 详情列表 // 将装配 BOM 详情填充进 BOM 详情列表
bomDetailsVos.add(createAssemblyBomDetails(zFlinghao, zFnumber, zFname, productionOrderVos)); createAssemblyBomDetails(zFlinghao, zFnumber, zFname, productionOrderVos);
continue;
} }
if (processRoute.getRawMaterialCode() != null || processRoute.getRawMaterialName() != null || processRoute.getBomMaterial() != null || processRoute.getBomUnit() != null) {
BomDetailsVo bomDetails = createBomDetails(processRoute);
bomDetailsVos.add(bomDetails); bomDetailsVos.add(bomDetails);
} }
} }
}
return bomDetailsVos; return bomDetailsVos;
} }
@ -475,7 +485,7 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
bomDetails.setQuantity(1.0); bomDetails.setQuantity(1.0);
} }
// 根据 RawMaterialCode 判断是否外购 // 根据 RawMaterialCode 判断是否外购
if (isOutsourced(processRoute.getRawMaterialCode())) { if (isOutsourced(processRoute.getMaterialCode())) {
bomDetails.setStats("外购"); bomDetails.setStats("外购");
} else { } else {
bomDetails.setStats("自制"); bomDetails.setStats("自制");
@ -486,14 +496,14 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
return bomDetails; return bomDetails;
} }
private BomDetailsVo createAssemblyBomDetails(String zFlinghao, String zFnumber, String zFname, List<ProductionOrderVo> productionOrderVos) { private void createAssemblyBomDetails(String zFlinghao, String zFnumber, String zFname, List<ProductionOrderVo> productionOrderVos) {
BomDetailsVo bomDetails = null; ArrayList<BomDetailsVo> bomDetailsVos = new ArrayList<>();
for (ProductionOrderVo productionOrderVo : productionOrderVos) { for (ProductionOrderVo productionOrderVo : productionOrderVos) {
bomDetails = new BomDetailsVo(); BomDetailsVo bomDetails = new BomDetailsVo();
bomDetails.setTotalWeight(zFlinghao); bomDetails.setTotalWeight(zFlinghao);
bomDetails.setFNumber(zFnumber); bomDetails.setFNumber(zFnumber);
bomDetails.setFName(zFname); bomDetails.setFName(zFname);
bomDetails.setPartdiagramCode(productionOrderVo.getProductionOrderNo()); bomDetails.setPartdiagramCode(productionOrderVo.getParentDrawingNo());
bomDetails.setPartdiagramName(productionOrderVo.getParentPart()); bomDetails.setPartdiagramName(productionOrderVo.getParentPart());
bomDetails.setPartNumber(productionOrderVo.getDrawingNo()); bomDetails.setPartNumber(productionOrderVo.getDrawingNo());
bomDetails.setName(productionOrderVo.getDrawingName()); bomDetails.setName(productionOrderVo.getDrawingName());
@ -501,14 +511,17 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
bomDetails.setMaterial(productionOrderVo.getMaterial()); bomDetails.setMaterial(productionOrderVo.getMaterial());
// 判断外购或自制 // 判断外购或自制
if (isOutsourced(productionOrderVo.getDrawingNo())) { if (isOutsourced(productionOrderVo.getDrawingNo())|| productionOrderVo.getRemark().contains("外购")) {
bomDetails.setStats("外购"); bomDetails.setStats("外购");
} else { } else {
bomDetails.setStats("自制"); bomDetails.setStats("自制");
} }
// iBomDetailsService.insertByVo(bomDetails);
bomDetailsVos.add(bomDetails);
} }
log.info("总装bom物料添加");
return bomDetails; saveBomDetails(bomDetailsVos);
} }
public int loadMaterialPreservation(BomDetails bomDetails1, String states) { public int loadMaterialPreservation(BomDetails bomDetails1, String states) {
@ -705,9 +718,10 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
} }
private boolean isOutsourced(String code) { private boolean isOutsourced(String code) {
return code.startsWith("009") || code.startsWith("AA") || code.startsWith("AB") || code.startsWith("AC") || code.startsWith("015") || code.contains("(M)"); return code.startsWith("009") || code.startsWith("AA") || code.startsWith("AB(") || code.startsWith("AC(") || code.startsWith("015") || code.contains("(M)") ||code.startsWith("BC(");
} }
//保存到 BomDetails 表中
private void saveBomDetails(List<BomDetailsVo> bomDetailsVos) { private void saveBomDetails(List<BomDetailsVo> bomDetailsVos) {
List<BomDetails> materialsToAdd = new ArrayList<>(); List<BomDetails> materialsToAdd = new ArrayList<>();
for (BomDetailsVo bomDetailsVo : bomDetailsVos) { for (BomDetailsVo bomDetailsVo : bomDetailsVos) {
@ -742,6 +756,40 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
iBomDetailsService.updateByBo(BeanUtil.toBean(material, BomDetailsBo.class)); iBomDetailsService.updateByBo(BeanUtil.toBean(material, BomDetailsBo.class));
} }
} }
private void saveBomDetails1(List<BomDetailsVo> bomDetailsVos) {
List<BomDetails> materialsToAdd = new ArrayList<>();
for (BomDetailsVo bomDetailsVo : bomDetailsVos) {
BomDetails bomDetails = BeanUtil.toBean(bomDetailsVo, BomDetails.class);
// 验证物料是否存在
if (isMaterialVerification(bomDetails.getPartNumber(), bomDetails.getName()) == 1) {
bomDetails.setUnitWeight("");
} else {
bomDetails.setUnitWeight("");
materialsToAdd.add(bomDetails);
}
// 保存 BomDetails 记录
// iBomDetailsService.insertByVo(BeanUtil.toBean(bomDetails, BomDetailsVo.class));
}
// 新增不存在的物料
for (BomDetails material : materialsToAdd) {
String state = determineState(material);
log.info("开始新增不存在的物料 ==> 物料图号: " + material.getPartNumber() + " 物料名称: " + material.getName());
int result = loadMaterialPreservation(material, state);
if (result == 1) {
log.info("新增物料成功 ==> 物料图号: " + material.getPartNumber() + " 物料名称: " + material.getName());
material.setUnitWeight("新增成功");
} else {
log.error("新增物料失败 ==> 物料图号: " + material.getPartNumber() + " 物料名称: " + material.getName());
}
// 更新物料状态
// iBomDetailsService.updateByBo(BeanUtil.toBean(material, BomDetailsBo.class));
}
}
@Override @Override
public List<ProcessRoute> pushGroupWeldments(ProcessRoute Bo) { public List<ProcessRoute> pushGroupWeldments(ProcessRoute Bo) {
@ -1137,19 +1185,40 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
// 过滤掉 null 值并转换为字符串 // 过滤掉 null 值并转换为字符串
return processInfoList.stream() return processInfoList.stream()
.filter(Objects::nonNull) .filter(Objects::nonNull)
.map(ProcessInfo::getProcessName) // 获取 processName 字段 // 获取 processName 字段
.filter(Objects::nonNull) // 过滤掉 null .map(ProcessInfo::getProcessName)
.distinct() // 去重 // 过滤掉 null
.filter(Objects::nonNull)
// 去重
.distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Override @Override
public boolean addRoute(List<ProcessRoute> list) { public R<Void> addRoute(List<ProcessRouteVo> list) {
//根据下标重置工序号 10 20 30 40
for (int i = 0; i < list.size(); i++) { List<ProcessRoute> routeArrayList = new ArrayList<>();
list.get(i).setProcessNo((long) ((i + 1) * 10)); for (ProcessRouteVo vo : list) {
ProcessRoute route = new ProcessRoute();
route.setRouteDescription(vo.getRouteDescription());
route.setMaterialCode(vo.getMaterialCode());
route.setMaterialName(vo.getMaterialName());
route.setProcessNo(vo.getProcessNo());
route.setWorkCenter(vo.getWorkCenter());
route.setDiscWeight(vo.getDiscWeight());
route.setMaterial(vo.getMaterial());
route.setProcessName(vo.getProcessName());
route.setProcessControl(vo.getProcessControl());
route.setProcessDescription(vo.getProcessDescription());
route.setActivityDuration(vo.getActivityDuration());
route.setActivityUnit("");
routeArrayList.add(route);
} }
return baseMapper.insertBatch(list); if (baseMapper.insertBatch(routeArrayList)) {
return R.ok();
}
return null;
} }
/** /**
@ -1158,8 +1227,8 @@ public class ProcessRouteServiceImpl implements IProcessRouteService {
@Override @Override
public List<MaterialBom> getProcessMaterialList(ProcessRoute processRoute) { public List<MaterialBom> getProcessMaterialList(ProcessRoute processRoute) {
if (processRoute == null) { if (processRoute == null) {
logger.error("ProcessRoute is null"); logger.error("做工艺的物料不存在");
throw new IllegalArgumentException("ProcessRoute cannot be null"); throw new IllegalArgumentException("做工艺的物料不能为空");
} }
String materialCode = processRoute.getMaterialCode(); String materialCode = processRoute.getMaterialCode();