opt:西门子项目优化

This commit is contained in:
2026-01-23 09:00:19 +08:00
parent 77706cc835
commit 86ade918c5
14 changed files with 307 additions and 34 deletions

View File

@@ -193,6 +193,13 @@ public class HandheldController {
return new ResponseEntity<>(handheldService.checkTrayInfo(json.getString("vehicle_code")), HttpStatus.OK);
}
@PostMapping("/getGroupByVehicleCode")
@Log("根据托盘查询组盘信息")
@ApiOperation("根据托盘查询组盘信息")
public ResponseEntity<Object> getGroupByVehicleCode(@RequestBody JSONObject json) {
return new ResponseEntity<>(handheldService.getGroupByVehicleCode(json.getString("vehicle_code")), HttpStatus.OK);
}
@PostMapping("/combineMaterials")
@Log("执行合托操作")
@ApiOperation("执行合托操作")
@@ -200,6 +207,13 @@ public class HandheldController {
return new ResponseEntity<>(handheldService.combineMaterials(json), HttpStatus.OK);
}
@PostMapping("/materialUpdate")
@Log("物料信息修改")
@ApiOperation("物料信息修改")
public ResponseEntity<Object> materialUpdate(@RequestBody JSONObject json) {
return new ResponseEntity<>(handheldService.materialUpdate(json), HttpStatus.OK);
}
@Log("查询托盘状态")
@ApiOperation(value = "查询托盘状态", notes = "查询托盘状态,包括是否在货架上、所在位置等信息")
@GetMapping("/queryVehicleStatus/{vehicleCode}")

View File

@@ -150,6 +150,13 @@ public interface HandheldService {
*/
JSONObject checkTrayInfo(String vehicleCode);
/**
* 查询托盘物料信息用于合托
* @param vehicleCode 托盘编号
* @return 查询结果
*/
JSONObject getGroupByVehicleCode(String vehicleCode);
/**
* 执行合托操作
* @param json 包含源托盘号、目标托盘号、选中的物料信息等
@@ -157,6 +164,13 @@ public interface HandheldService {
*/
JSONObject combineMaterials(JSONObject json);
/**
* 执行合托操作
* @param json 包含源托盘号、目标托盘号、选中的物料信息等
* @return 合托结果,包含是否需要入库等信息
*/
JSONObject materialUpdate(JSONObject json);
/**
* 查询托盘状态
* @param vehicleCode 托盘号

View File

@@ -17,6 +17,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.Synchronized;
import nl.basjes.shaded.org.springframework.util.Assert;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.GoodsEnum;
import org.nl.common.enums.VehicleTypeEnum;
import org.nl.common.enums.region.RegionEnum;
@@ -776,7 +777,22 @@ public class HandheldServiceImpl implements HandheldService {
.eq(SchBasePoint::getPoint_code,pointCode)
.set(SchBasePoint::getPoint_status, "1"));
}
@Override
public JSONObject getGroupByVehicleCode(String vehicleCode) {
// 1. 检查托盘是否存在
MdBaseVehicle vehicle = iMdBaseVehicleService.selectByVehicleCode(vehicleCode);
if (ObjectUtil.isEmpty(vehicle)) {
throw new BadRequestException("托盘不存在");
}
List<Map> materials = iSchBaseVehiclematerialgroupService.selectGroupByVehicleCode(vehicleCode);
JSONObject result = new JSONObject();
result.put("vehicle_code", vehicleCode);
result.put("vehicle_type", vehicle.getVehicle_type());
result.put("vehicle_type_name", vehicle.getVehicle_name());
result.put("materials", materials);
log.info("查询托盘信息成功:托盘编号[{}]", vehicleCode);
return result;
}
@Override
public JSONObject checkTrayInfo(String vehicleCode) {
cn.hutool.core.lang.Assert.notBlank(vehicleCode, "托盘号不能为空");
@@ -818,9 +834,104 @@ public class HandheldServiceImpl implements HandheldService {
throw new BadRequestException("查询托盘信息失败:" + e.getMessage());
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject materialUpdate(JSONObject json) {
String operatorId = SecurityUtils.getCurrentNickName();
cn.hutool.core.lang.Assert.notEmpty(json, "参数不能为空");
String vehicleCode = json.getString("vehicle_code"); // 原始托盘号
JSONArray materials = json.getJSONArray("materials"); // 选中的物料信息
cn.hutool.core.lang.Assert.notEmpty(materials, "没有传入物料信息");
cn.hutool.core.lang.Assert.notBlank(vehicleCode, "托盘号不能为空");
try {
// 1. 检查托盘是否存在并获取托盘信息
MdBaseVehicle sourceVehicle = iMdBaseVehicleService.selectByVehicleCode(vehicleCode);
if (ObjectUtil.isEmpty(sourceVehicle)) {
throw new BadRequestException("托盘不存在");
}
synchronized (this) {
int delete_select_flag_num = 0;
try {
// 4. 查询源托盘的所有物料信息
List<SchBaseVehiclematerialgroup> allSourceMaterials = iSchBaseVehiclematerialgroupService.selectByVehicleCode(vehicleCode);
if (CollectionUtils.isEmpty(allSourceMaterials)) {
throw new BadRequestException("源托盘中不存在物料");
}
// 遍历源托盘物料校验order_code和material_id是否为空为空则直接抛错给前端
for (int j = 0; j < allSourceMaterials.size(); j++) {
SchBaseVehiclematerialgroup materialGroup = allSourceMaterials.get(j);
String groupOrderCode = materialGroup.getOrder_code();
String groupMaterialId = materialGroup.getMaterial_id();
// 订单编号为空,抛明确错误给前端
if (StringUtils.isBlank(groupOrderCode)) {
throw new BadRequestException("源托盘[" + vehicleCode + "]中第" + (j + 1) + "条物料的订单编号(order_code)为空");
}
// 物料编码为空,抛明确错误给前端
if (StringUtils.isBlank(groupMaterialId)) {
throw new BadRequestException("源托盘[" + vehicleCode + "]中第" + (j + 1) + "条物料的物料编码(material_id)为空");
}
}
// 5. 执行操作(遍历选中的物料)
for (int i = 0; i < materials.size(); i++) {
JSONObject selectedMaterial = materials.getJSONObject(i);
// 校验选中物料的order_code和material_code非空
Integer material_qty = selectedMaterial.getInteger("material_qty");
String group_id = selectedMaterial.getString("group_id");
Boolean delete_select_flag = selectedMaterial.getBoolean("delete_select_flag");
// 使用Objects.equals避免空指针双重保障
List<SchBaseVehiclematerialgroup> sourceGroups = allSourceMaterials.stream()
.filter(a -> Objects.equals(a.getGroup_id(), group_id))
.collect(Collectors.toList());
// 更新物料的托盘归属
for (SchBaseVehiclematerialgroup sourceGroup : sourceGroups) {
if (delete_select_flag || material_qty == 0) {
vehiclematerialgroupMapper.deleteById(group_id);
delete_select_flag_num++;
} else {
sourceGroup.setMaterial_qty(material_qty);
sourceGroup.setUpdate_time(DateUtil.now());
sourceGroup.setUpdate_name(operatorId);
sourceGroup.setCreate_name(operatorId);
vehiclematerialgroupMapper.updateById(sourceGroup);
}
}
}
// 6. 更新托盘状态:源托盘若物料全部转移则置为空载具
if (allSourceMaterials.size() == delete_select_flag_num) {
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getVehicle_code, vehicleCode)
.set(SchBasePoint::getPoint_status, "1"));
}
// 8. 组装成功返回结果
JSONObject result = new JSONObject();
result.put("success", true);
result.put("message", "托盘物料信息修改操作成功");
return result;
} catch (Exception e) {
throw e; // 直接抛给上层,最终返回给前端
}
}
} catch (BadRequestException e) {
throw e; // 业务异常直接返回给前端
} catch (Exception e) {
// 兜底处理异常信息,避免返回"null"给前端
String errorMsg = Optional.ofNullable(e.getMessage()).orElse("系统异常,合托操作失败");
throw new BadRequestException(errorMsg);
}
}
@Override
@Transactional
// 核心合托方法(完整可运行)
public JSONObject combineMaterials(JSONObject json) {
String operatorId = SecurityUtils.getCurrentNickName();
cn.hutool.core.lang.Assert.notEmpty(json, "参数不能为空");
@@ -844,12 +955,12 @@ public class HandheldServiceImpl implements HandheldService {
if (ObjectUtil.isEmpty(sourceVehicle)) {
throw new BadRequestException("原始托盘不存在");
}
MdBaseVehicle targetVehicle = iMdBaseVehicleService.selectByVehicleCode(targetVehicleCode);
if (ObjectUtil.isEmpty(targetVehicle)) {
throw new BadRequestException("目标托盘不存在");
}
// 加载不参与校验的点位配置
List<Dict> dictNotPointList = dictService.getDictByName("not_call_point_code");
List<String> notInPointList = new ArrayList<>();
if(!CollectionUtils.isEmpty(dictNotPointList)){
@@ -875,20 +986,44 @@ public class HandheldServiceImpl implements HandheldService {
throw new BadRequestException("源托盘中不存在物料,无法合托");
}
// 7. 执行合托操作
// ========== 核心修复点校验allSourceMaterials中的空值字段 ==========
// 遍历源托盘物料校验order_code和material_id是否为空为空则直接抛错给前端
for (int j = 0; j < allSourceMaterials.size(); j++) {
SchBaseVehiclematerialgroup materialGroup = allSourceMaterials.get(j);
String groupOrderCode = materialGroup.getOrder_code();
String groupMaterialId = materialGroup.getMaterial_id();
// 订单编号为空,抛明确错误给前端
if (StringUtils.isBlank(groupOrderCode)) {
throw new BadRequestException("源托盘[" + sourceVehicleCode + "]中第" + (j+1) + "条物料的订单编号(order_code)为空,无法合托");
}
// 物料编码为空,抛明确错误给前端
if (StringUtils.isBlank(groupMaterialId)) {
throw new BadRequestException("源托盘[" + sourceVehicleCode + "]中第" + (j+1) + "条物料的物料编码(material_id)为空,无法合托");
}
}
// 5. 执行合托操作(遍历选中的物料)
for (int i = 0; i < selectedMaterials.size(); i++) {
JSONObject selectedMaterial = selectedMaterials.getJSONObject(i);
// 校验选中物料的order_code和material_code非空
String order_code = selectedMaterial.getString("order_code");
String material_code = selectedMaterial.getString("material_code");
cn.hutool.core.lang.Assert.notBlank(order_code, "" + (i+1) + "条选中物料的订单编号(order_code)不能为空");
cn.hutool.core.lang.Assert.notBlank(material_code, "" + (i+1) + "条选中物料的物料编码(material_code)不能为空");
// 使用Objects.equals避免空指针双重保障
List<SchBaseVehiclematerialgroup> sourceGroups = allSourceMaterials.stream()
.filter(a -> a.getOrder_code().equals(order_code) && a.getMaterial_id().equals(material_code))
.filter(a -> Objects.equals(a.getOrder_code(), order_code)
&& Objects.equals(a.getMaterial_id(), material_code))
.collect(Collectors.toList());
// 选中的物料在源托盘中不存在,抛错给前端
if(CollectionUtil.isEmpty(sourceGroups)){
throw new BadRequestException("不存在合托的物料编码和订单");
throw new BadRequestException("" + (i+1) + "条物料不存在对应的订单[" + order_code + "]和物料编码[" + material_code + "],无法合托");
}
// 更新物料的托盘归属
for (SchBaseVehiclematerialgroup sourceGroup : sourceGroups) {
sourceGroup.setVehicle_code(targetVehicleCode);
sourceGroup.setUpdate_time(DateUtil.now());
@@ -898,23 +1033,22 @@ public class HandheldServiceImpl implements HandheldService {
}
}
// 6. 更新托盘状态:源托盘若物料全部转移则置为空载具
if(allSourceMaterials.size() == selectedMaterials.size()) {
//源托盘点位变成空载具状态
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getVehicle_code, sourceVehicleCode)
.set(SchBasePoint::getPoint_status, "1"));
}
//目标托盘变成有货状态
// 目标托盘置为有货状态
iSchBasePointService.update(Wrappers.lambdaUpdate(SchBasePoint.class)
.eq(SchBasePoint::getVehicle_code, targetVehicleCode)
.set(SchBasePoint::getPoint_status, "2"));
// 8. 判断是否需要入库:如果两个托盘都不在货架上,则需要入库
// 7. 判断是否需要入库
boolean needStoreIn = ObjectUtil.isEmpty(sourcePoint) && ObjectUtil.isEmpty(targetPoint);
// 9. 组装返回结果
// 8. 组装成功返回结果
JSONObject result = new JSONObject();
result.put("success", true);
result.put("message", "合托操作成功");
@@ -927,14 +1061,16 @@ public class HandheldServiceImpl implements HandheldService {
return result;
} catch (BadRequestException e) {
throw e;
throw e; // 直接抛给上层,最终返回给前端
}
}
} catch (BadRequestException e) {
throw e;
throw e; // 业务异常直接返回给前端
} catch (Exception e) {
log.error("合托操作失败:源托盘[{}] -> 目标托盘[{}]", sourceVehicleCode, targetVehicleCode, e);
throw new BadRequestException("合托操作失败:" + e.getMessage());
// 兜底处理异常信息,避免返回"null"给前端
String errorMsg = Optional.ofNullable(e.getMessage()).orElse("系统异常,合托操作失败");
throw new BadRequestException(errorMsg);
}
}

View File

@@ -84,6 +84,13 @@ public interface ISchBaseVehiclematerialgroupService extends IService<SchBaseVeh
*/
List<Map> selectMaterialByVehicleCode(String vehicle_code);
/**
* 根据载具号查找物料信息
* @param vehicle_code
* @return
*/
List<Map> selectGroupByVehicleCode(String vehicle_code);
/**
* 根据载具号查找物料信息
* @param entity

View File

@@ -27,6 +27,8 @@ public interface SchBaseVehiclematerialgroupMapper extends BaseMapper<SchBaseVeh
List<Map> selectMaterialByVehicleCode(String vehicle_code);
List<Map> selectGroupByVehicleCode(String vehicle_code);
IPage<SchBaseVehiclematerialgroup> selectAllByPage(IPage<SchBaseVehiclematerialgroup> page, @Param("query") SchBaseVehiclematerialgroupQuery query);
List<String> selectMaterialPathByIsEmpty();

View File

@@ -65,6 +65,19 @@
GROUP BY
sbv.order_code
</select>
<select id="selectGroupByVehicleCode" resultType="java.util.Map" parameterType="java.lang.String">
SELECT
group_id,
sbv.order_code,
material_qty AS material_qty,
material_id AS material_code
FROM
sch_base_vehiclematerialgroup sbv
WHERE 1 = 1
<if test="vehicle_code != null">
AND sbv.vehicle_code = #{vehicle_code}
</if>
</select>
<select id="selectAllByPage" resultType="org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup">
WITH RankedVehicles AS (
SELECT

View File

@@ -218,6 +218,12 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
})).collect(Collectors.toList());
return maps;
}
@Override
public List<Map> selectGroupByVehicleCode(String vehicle_code) {
List<Map> maps = vehiclematerialgroupMapper.selectGroupByVehicleCode(vehicle_code);
return maps;
}
@Override
public List<SchBaseVehiclematerialgroup> selectByVehicleCode(JSONObject entity) {
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroups = vehiclematerialgroupMapper.selectList(Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
@@ -228,15 +234,15 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
if (ObjectUtil.isNotEmpty(schBaseVehiclematerialgroups)) {
// 使用Map存储合并后的结果key是合并条件的组合
Map<String, SchBaseVehiclematerialgroup> mergedMap = new HashMap<>();
for (SchBaseVehiclematerialgroup group : schBaseVehiclematerialgroups) {
// 创建合并条件的key
String key = group.getVehicle_code() + ":" +
group.getRegion_code() + ":" +
group.getJob_name() + ":" +
group.getOrder_code() + ":" +
String key = group.getVehicle_code() + ":" +
group.getRegion_code() + ":" +
group.getJob_name() + ":" +
group.getOrder_code() + ":" +
group.getMaterial_id();
if (mergedMap.containsKey(key)) {
// 如果已存在累加material_qty
SchBaseVehiclematerialgroup existingGroup = mergedMap.get(key);
@@ -246,10 +252,10 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
mergedMap.put(key, group);
}
}
// 将Map转换为List
schBaseVehiclematerialgroups = new ArrayList<>(mergedMap.values());
schBaseVehiclematerialgroups.forEach(item -> {
if (StrUtil.isEmpty(item.getRegion_code())) {
item.setRegion_code("未知");

View File

@@ -870,7 +870,7 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
)).values()
.stream()
.collect(Collectors.toList());
collect = collect.stream().sorted(Comparator.comparingLong(order -> StringUtils.isNotBlank(order.getDue_date())?getTime(order.getDue_date()) : getTime(DateUtil.format(DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -10),NORM_DATETIME_PATTERN)))).collect(Collectors.toList());
collect = collect.stream().sorted(Comparator.comparing(OrderMater::getRegion_code, Comparator.nullsLast(Comparator.naturalOrder())).thenComparingLong(order -> StringUtils.isNotBlank(order.getDue_date())?getTime(order.getDue_date()) : getTime(DateUtil.format(DateUtil.offset(new Date(), DateField.HOUR_OF_DAY, -10),NORM_DATETIME_PATTERN)))).collect(Collectors.toList());
return collect;
}

View File

@@ -69,6 +69,12 @@ public class RackTask extends AbstractTask {
}
SchBasePoint schBasePoint = schBasePointService.selectByGroundPoint(regionCode,
GoodsEnum.OUT_OF_STOCK.getValue(), vehicle_type, 1, 0);
// //搜一下有木有满拖点位,有空的,允许放
// if (ObjectUtil.isEmpty(schBasePoint)) {
// schBasePoint = schBasePointService.selectByGroundPoint(regionCode,
// GoodsEnum.OUT_OF_STOCK.getValue(), vehicle_type, 1, 1);
// }
if (ObjectUtil.isEmpty(schBasePoint)) {
task.setRemark("未找到所需点位!");
taskService.updateById(task);

View File

@@ -57,6 +57,8 @@ public class ToStoreHouseTask extends AbstractTask {
// 配置信息
for (SchBaseTask task : tasks) {
SchBasePoint schBasePoint = null;
//这个修改 优先拿在满拖库的
if (task.getVehicle_type().equals(VehicleTypeEnum.FRAME_R02.getVehicleCode()) || task.getVehicle_type().equals(VehicleTypeEnum.FRAME_R01.getVehicleCode())) {
schBasePoint = schBasePointService.selectByEmptyCage(RegionEnum.DDLK.getRegion_code(),
task.getVehicle_type(), GoodsEnum.EMPTY_PALLETS.getValue(), true, task);

View File

@@ -2,6 +2,7 @@ package org.nl.wms.sch.task_manage.task.tasks.pcoperation;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
@@ -40,7 +41,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* sorting将满料放到线边库
@@ -141,22 +145,43 @@ public class PcOperationSMTTask extends AbstractTask {
sendMaterVo.getMaterial_info().forEach(materVo -> {
sendMaterVos.add(BeanUtil.copyProperties(JSONUtil.parseObj(materVo),SendMaterVo.class));
});
List<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroupList = schBaseVehiclematerialgroupService.list((new QueryWrapper<SchBaseVehiclematerialgroup>().eq("vehicle_code", sendMaterVo.getVehicle_code())));
//删除组盘记录生成新的
schBaseVehiclematerialgroupService.remove(new QueryWrapper<SchBaseVehiclematerialgroup>().eq("vehicle_code", sendMaterVo.getVehicle_code()));
Map<String, String> jobNameMap = new HashMap<>();
if(CollectionUtil.isNotEmpty(schBaseVehiclematerialgroupList)){
jobNameMap = schBaseVehiclematerialgroupList.stream()
// 过滤掉null元素和materialId为null的元素避免异常
.filter(item -> item != null && item.getMaterial_id() != null)
// 转换为Mapkey=materialIdvalue=jobName
.collect(Collectors.toMap(
SchBaseVehiclematerialgroup::getMaterial_id, // 生成key的函数
SchBaseVehiclematerialgroup::getJob_name, // 生成value的函数
(oldValue, newValue) -> newValue // 处理重复key的策略保留新值也可改为oldValue保留旧值
));
}
if (CollUtil.isNotEmpty(sendMaterVos)) {
Map<String, String> finalJobNameMap = jobNameMap;
sendMaterVos.forEach(smv -> {
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
schBaseVehiclematerialgroup.setVehicle_code(sendMaterVo.getVehicle_code());
schBaseVehiclematerialgroup.setPoint_code(schBasePoint.getPoint_code());
schBaseVehiclematerialgroup.setMaterial_id(smv.getMaterial_code());
schBaseVehiclematerialgroup.setMaterial_id(StringUtils.isBlank(smv.getMaterial_code()) ? smv.getMaterial_id() : smv.getMaterial_code());
schBaseVehiclematerialgroup.setMaterial_qty(smv.getMaterial_qty());
schBaseVehiclematerialgroup.setRegion_code(sendMaterVo.getRegion_code());
schBaseVehiclematerialgroup.setOrder_code(smv.getOrder_code());
schBaseVehiclematerialgroup.setDue_date(smv.getDue_date());
schBaseVehiclematerialgroup.setPriority(smv.getPriority());
if (CollectionUtil.isNotEmpty(finalJobNameMap)) {
schBaseVehiclematerialgroup.setJob_name(finalJobNameMap.get(schBaseVehiclematerialgroup.getMaterial_id()));
}
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
});
}
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskObj.setRemark(GeneralDefinition.TASK_FINISH);

View File

@@ -37,9 +37,20 @@
<div class="search-wraper">
<el-row class="filter-wraper" type="flex" justify="space-between" align="middle">
<el-col :span="6" class="p-label">搜索关键字</el-col>
<el-col :span="12" class="select-wraper">
<el-col :span="8" class="select-wraper">
<el-input v-model="searchKey" placeholder="请输入800、物料号或零件号" style="width: 100%" @keyup.enter.native="searchOrder" />
</el-col>
<el-col :span="4" class="p-label">工序筛选</el-col>
<el-col :span="8" class="select-wraper">
<el-select v-model="selectedProcess" placeholder="请选择工序" style="width: 100%" filterable clearable @change="searchOrder">
<el-option
v-for="process in processList"
:key="process"
:label="process"
:value="process"
/>
</el-select>
</el-col>
<el-col :span="6">
<button class="search_button" @click="searchOrder">搜索</button>
<button class="search_button search_button_dis" @click="resetSearch">重置</button>
@@ -406,6 +417,9 @@ export default {
imgSrc: '',
alertShow: false,
searchKey: '',
// 工序筛选相关
selectedProcess: '',
processList: [],
// 异常信息相关属性
hasError: false,
errorDetails: [],
@@ -616,13 +630,24 @@ export default {
// 搜索订单
searchOrder() {
crudProduceScreen.regionOrder(this.popData.device_code, this.searchKey).then(res => {
this.popList = [...res.content]
let data = [...res.content]
// 提取去重后的工序列表
this.processList = [...new Set(data.map(item => item.region_code).filter(Boolean))]
// 根据选中的工序进行筛选
if (this.selectedProcess) {
data = data.filter(item => item.region_code === this.selectedProcess)
}
this.popList = data
this.show = true
})
},
// 重置搜索条件
resetSearch() {
this.searchKey = ''
this.selectedProcess = ''
this.searchOrder()
},
// 设置表格行类名