opt:优化点位管理增加点位类型,分上料站点跟普通站点

add:增加WMS跟ACS交互接口
This commit is contained in:
zhangzq
2026-06-30 20:00:58 +08:00
parent 5746e0bb74
commit e989e56af8
15 changed files with 154 additions and 125 deletions

View File

@@ -1,11 +1,9 @@
package org.nl.wms.ext_manage.service.impl; package org.nl.wms.ext_manage.api;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.wms.ext_manage.enums.EXTConstant; import org.nl.wms.ext_manage.enums.EXTConstant;
import org.nl.wms.ext_manage.service.WmsToAcsService;
import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.ext_manage.util.AcsUtil; import org.nl.wms.ext_manage.util.AcsUtil;
import org.nl.wms.sch_manage.service.core.AcsTaskDto; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
@@ -20,10 +18,9 @@ import java.util.List;
*/ */
@Slf4j @Slf4j
@Service @Service
public class WmsToAcsServiceImpl implements WmsToAcsService { public class AcsApi {
@Override public <T> ResponseEntity renotifyAcs(List<T> list) {
public AcsResponse renotifyAcs(List<AcsTaskDto> list) {
return AcsUtil.notifyAcs(EXTConstant.SEND_TASK_ACS_API, list); return AcsUtil.notifyAcs(EXTConstant.SEND_TASK_ACS_API, list);
} }
} }

View File

@@ -16,7 +16,8 @@ public enum ResultAcsStatus {
/** /**
* 完成 * 完成
*/ */
FINISHED("2", "完成", "完成"); FINISHED("2", "完成", "完成"),
CANCEL("3", "取消", "取消");
ResultAcsStatus(String code, String name, String desc) { ResultAcsStatus(String code, String name, String desc) {

View File

@@ -2,7 +2,6 @@ package org.nl.wms.ext_manage.service;
import org.nl.wms.ext_manage.service.util.AcsResponse; import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.sch_manage.service.core.AcsTaskDto;
import java.util.List; import java.util.List;
@@ -21,5 +20,5 @@ public interface WmsToAcsService {
* @param list 任务集合 * @param list 任务集合
* @return AcsResponse * @return AcsResponse
*/ */
AcsResponse renotifyAcs(List<AcsTaskDto> list); <T> AcsResponse renotifyAcs(List<T> list);
} }

View File

@@ -62,13 +62,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
JSONArray errArr = new JSONArray(); JSONArray errArr = new JSONArray();
for (int i = 0; i < array.size(); i++) { for (int i = 0; i < array.size(); i++) {
JSONObject row = array.getJSONObject(i); JSONObject row = array.getJSONObject(i);
String task_id = row.getString("task_id"); String task_code = row.getString("task_code");
RLock lock = redissonClient.getLock(task_id);
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try { try {
if (tryLock) { SchBaseTask taskObj = iSchBaseTaskService.getByCode(task_code);
SchBaseTask taskObj = iSchBaseTaskService.getById(task_id);
// acs反馈的任务类型
String acs_task_status = row.getString("task_status"); String acs_task_status = row.getString("task_status");
TaskStatus status; TaskStatus status;
if (ResultAcsStatus.EXECUTING.getCode().equals(acs_task_status)) { if (ResultAcsStatus.EXECUTING.getCode().equals(acs_task_status)) {
@@ -79,20 +75,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
status = TaskStatus.FINISHED; status = TaskStatus.FINISHED;
iSchBaseTaskService.updateById(taskObj); iSchBaseTaskService.updateById(taskObj);
} else { } else {
// 取消
status = TaskStatus.CANCELED; status = TaskStatus.CANCELED;
} }
// 根据配置编码执行相关配置内的方法 // 根据配置编码执行相关配置内的方法
AbstractTask task = taskFactory.getTask(taskObj.getConfig_code()); AbstractTask task = taskFactory.getTask(taskObj.getConfig_code());
task.updateTaskStatus(taskObj.getTask_code(),status); task.updateTaskStatus(taskObj.getTask_code(),status);
} else {
throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!");
}
} finally {
if (tryLock) {
lock.unlock();
} }
catch (Exception ex){
ex.getMessage();
} }
} }
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();

View File

@@ -2,16 +2,22 @@ package org.nl.wms.ext_manage.util;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.base.TableDataInfo;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder; import org.nl.config.SpringContextHolder;
import org.nl.wms.system_manage.enums.SysParamConstant; import org.nl.wms.system_manage.enums.SysParamConstant;
import org.nl.wms.system_manage.service.param.dao.Param; import org.nl.wms.system_manage.service.param.dao.Param;
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl; import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.nio.charset.StandardCharsets;
/** /**
* <p> * <p>
* ACS工具类 * ACS工具类
@@ -30,44 +36,46 @@ public class AcsUtil {
* @param param 下发参数 * @param param 下发参数
* @return AcsResponse * @return AcsResponse
*/ */
public static <T> AcsResponse notifyAcs(String api, T param) { public static <T> ResponseEntity notifyAcs(String api, T param) {
log.info("下发ACS任务的输入参数为-------------------" + param.toString()); log.info("下发ACS任务的输入参数为-------------------" + param.toString());
// 返回参数
AcsResponse resultAcs;
// 系统参数类 // 系统参数类
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
//判断是否连接ACS系统 //判断是否连接ACS系统
Param isConnectAcs = sysParamService.findByCode(SysParamConstant.IS_CONNECT_ACS); Param isConnectAcs = sysParamService.findByCode(SysParamConstant.IS_CONNECT_ACS);
if (ObjectUtil.isEmpty(isConnectAcs)) { if (ObjectUtil.isEmpty(isConnectAcs)) {
return AcsResponse.requestError("系统参数表中:" + SysParamConstant.IS_CONNECT_ACS + "不存在"); throw new BadRequestException("系统参数表中:" + SysParamConstant.IS_CONNECT_ACS + "不存在");
} }
if (isConnectAcs.getValue().equals(IOSConstant.IS_DELETE_NO)) { if (isConnectAcs.getValue().equals(IOSConstant.IS_DELETE_NO)) {
return AcsResponse.requestOkMessage("下发成功,未连接ACS系统!"); return new ResponseEntity("sucess未连接ACS系统",HttpStatus.OK);
} }
//ACS地址 //ACS地址
Param acsUrlParam = sysParamService.findByCode(SysParamConstant.ACS_URL); Param acsUrlParam = sysParamService.findByCode(SysParamConstant.ACS_URL);
if (ObjectUtil.isEmpty(acsUrlParam)) { if (ObjectUtil.isEmpty(acsUrlParam)) {
return AcsResponse.requestError("系统参数表中:" + SysParamConstant.ACS_URL + "不存在"); throw new BadRequestException("系统参数表中:" + SysParamConstant.ACS_URL + "不存在");
} }
String url = acsUrlParam.getValue() + api; String url = acsUrlParam.getValue() + api;
try { try {
String resultMsg = HttpRequest.post(url) final HttpResponse execute = HttpRequest.post(url)
.body(String.valueOf(param)) .body(String.valueOf(param))
.execute().body(); .execute();
// 格式转换 if (execute.getStatus() == HttpStatus.OK.value()){
JSONObject result = JSONObject.parseObject(resultMsg); JSONObject result = JSONObject.parseObject(execute.body());
resultAcs = JSONObject.toJavaObject(result, AcsResponse.class); final Integer status = result.getInteger("status");
if (Integer.valueOf(HttpStatus.OK.value()).equals(status)){
log.info("下发ACS任务的输出参数为-------------------" + resultMsg); return new ResponseEntity(HttpStatus.OK);
}else {
JSONObject errorMap = result.getJSONObject("data");
return new ResponseEntity(errorMap,HttpStatus.BAD_REQUEST);
}
}else {
return new ResponseEntity("接口请求异常",HttpStatus.CONFLICT);
}
} catch (Exception e) { } catch (Exception e) {
//网络不通 //网络不通
String msg = e.getMessage(); String msg = e.getMessage();
log.error("连接失败:{}", msg); log.error("连接失败:{}", msg);
return AcsResponse.requestError("网络不通,操作失败!"); return new ResponseEntity("通讯异常,"+e.getMessage(),HttpStatus.GATEWAY_TIMEOUT);
} }
return resultAcs;
} }
} }

View File

@@ -1,7 +1,6 @@
package org.nl.wms.pda_manage.sch_manage.service.impl; package org.nl.wms.pda_manage.sch_manage.service.impl;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -23,6 +22,8 @@ import org.nl.wms.sch_manage.service.core.tasks.PdaPointTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.nl.wms.warehouse_manage.enums.IOSEnum;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -98,9 +99,9 @@ public class PdaSchTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
); );
// 根据任务配置编码获取所属任务类抽象类 // 根据任务配置编码获取所属任务类抽象类
AbstractTask task = taskFactory.getTask(taskDao.getConfig_code()); AbstractTask task = taskFactory.getTask(taskDao.getConfig_code());
AcsResponse acsResponse = task.sendTaskOne(taskDao.getTask_id()); ResponseEntity acsResponse = task.sendTaskOne(taskDao.getTask_id());
if (acsResponse.getCode() != HttpStatus.HTTP_OK) { if (acsResponse.getStatusCode().equals(HttpStatus.OK)) {
throw new BadRequestException(acsResponse.getMessage()); throw new BadRequestException(acsResponse.getBody().toString());
} }
return PdaResponse.requestOk(); return PdaResponse.requestOk();
} }

View File

@@ -2,13 +2,14 @@ package org.nl.wms.sch_manage.service.core;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
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.conditions.update.LambdaUpdateWrapper;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.wms.ext_manage.api.AcsApi;
import org.nl.wms.ext_manage.service.WmsToAcsService; import org.nl.wms.ext_manage.service.WmsToAcsService;
import org.nl.wms.ext_manage.service.util.AcsResponse; import org.nl.wms.ext_manage.service.util.AcsResponse;
import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.enums.TaskStatus;
@@ -16,10 +17,14 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSConstant;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -41,7 +46,7 @@ public abstract class AbstractTask {
* wms调用acs接口服务 * wms调用acs接口服务
*/ */
@Autowired @Autowired
private WmsToAcsService wmsToAcsService; private AcsApi acsApi;
/** /**
* 任务创建 * 任务创建
@@ -87,10 +92,27 @@ public abstract class AbstractTask {
* 下发当前任务 * 下发当前任务
* @param task_id 任务标识 * @param task_id 任务标识
*/ */
public AcsResponse sendTaskOne(String task_id) { public ResponseEntity sendTaskOne(String task_id) {
List<AcsTaskDto> taskDtoList = new ArrayList<>(); List<AcsTaskDto> taskDtoList = new ArrayList<>();
taskDtoList.add(this.sendAcsParam(task_id)); taskDtoList.add(this.sendAcsParam(task_id));
return this.renotifyAcs(taskDtoList); ResponseEntity response = this.renotifyAcs(taskDtoList);
if (response.getStatusCode().equals(HttpStatus.OK)) {
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
.set(SchBaseTask::getTask_status,TaskStatus.ISSUED.getCode())
.set(SchBaseTask::getUpdate_time,DateUtil.now())
.set(SchBaseTask::getRemark,"")
.in(SchBaseTask::getTask_code,taskDtoList.stream().map(AcsTaskDto::getTask_code).collect(Collectors.toList())));
}else {
JSONObject body = (JSONObject) response.getBody();
for (String code : body.keySet()) {
taskService.update(new LambdaUpdateWrapper<SchBaseTask>()
.set(SchBaseTask::getRemark,body.getString(code))
.set(SchBaseTask::getUpdate_time,DateUtil.now())
.eq(SchBaseTask::getTask_code,code));
}
}
return response;
} }
/** /**
@@ -99,47 +121,53 @@ public abstract class AbstractTask {
* @return AcsResponse * @return AcsResponse
*/ */
@SneakyThrows @SneakyThrows
protected AcsResponse renotifyAcs(List<AcsTaskDto> taskDtoList) { protected ResponseEntity renotifyAcs(List<AcsTaskDto> taskDtoList) {
AcsResponse resultForAcs = AcsResponse.requestOk(); ResponseEntity response = acsApi.renotifyAcs(convertToCreateTaskRequest(taskDtoList));
try {
// 创建下发对象
resultForAcs = wmsToAcsService.renotifyAcs(taskDtoList);
} catch (Exception e) {
log.error("任务下发异常: {}", e.getMessage());
resultForAcs.setResponseDate(DateUtil.now());
resultForAcs.setCode(HttpStatus.HTTP_BAD_REQUEST);
resultForAcs.setMessage(e.getMessage());
}
// 如果下发完毕,就修改状态 // 如果下发完毕,就修改状态
if (resultForAcs.getCode() == HttpStatus.HTTP_OK) { return response;
// 查询所有任务 }
List<SchBaseTask> taskList = taskService.list(
new QueryWrapper<SchBaseTask>().lambda()
.in(SchBaseTask::getTask_code, taskDtoList.stream()
.map(AcsTaskDto::getTask_code)
.collect(Collectors.toList())
)
);
// 解析并备注 private List<JSONObject> convertToCreateTaskRequest(List<AcsTaskDto> taskDtoList) {
JSONArray errArr = resultForAcs.getErrArr(); return taskDtoList.stream()
for (SchBaseTask schBaseTask : taskList) { .map(this::convertToCreateTaskRequest)
schBaseTask.setTask_status(TaskStatus.ISSUED.getCode()); .collect(Collectors.toList());
// 判断是否是出错的任务
for (int i = 0; ObjectUtil.isNotEmpty(errArr) && i < errArr.size(); i++) {
JSONObject errObj = errArr.getJSONObject(i);
String taskCode = errObj.getString("task_code");
if (taskCode.equals(schBaseTask.getTask_code())) {
// 出错的任务就设置出错信息为备注,不是出错就设置下发
schBaseTask.setTask_status(TaskStatus.CREATED.getCode());
schBaseTask.setRemark(errObj.getString("message"));
break;
} }
private JSONObject convertToCreateTaskRequest(AcsTaskDto taskDto) {
JSONObject request = new JSONObject();
request.put("task_code", taskDto.getTask_code());
request.put("start_device_code", taskDto.getStart_device_code());
request.put("next_device_code", taskDto.getNext_device_code());
request.put("priority", ObjectUtil.isNotEmpty(taskDto.getPriority()) ? taskDto.getPriority() : "1");
request.put("vehicle_code", taskDto.getVehicle_code());
request.put("vehicle_type", taskDto.getVehicle_type());
request.put("task_type", taskDto.getTask_type());
request.put("remark", taskDto.getRemark());
Map<String, String> params = new HashMap<>();
if (ObjectUtil.isNotEmpty(taskDto.getParams())) {
params.putAll(taskDto.getParams());
} }
putIfNotEmpty(params, "ext_task_uuid", taskDto.getExt_task_uuid());
putIfNotEmpty(params, "start_device_code2", taskDto.getStart_device_code2());
putIfNotEmpty(params, "next_device_code2", taskDto.getNext_device_code2());
putIfNotEmpty(params, "put_device_code", taskDto.getPut_device_code());
putIfNotEmpty(params, "route_plan_code", taskDto.getRoute_plan_code());
putIfNotEmpty(params, "dtl_type", taskDto.getDtl_type());
putIfNotEmpty(params, "agv_system_type", taskDto.getAgv_system_type());
putIfNotEmpty(params, "oven_time", taskDto.getOven_time());
putIfNotEmpty(params, "temperature", taskDto.getTemperature());
putIfNotEmpty(params, "start_height", taskDto.getStart_height());
putIfNotEmpty(params, "next_height", taskDto.getNext_height());
putIfNotEmpty(params, "direction", taskDto.getDirection());
request.put("params", params);
return request;
} }
taskService.updateBatchById(taskList);
private void putIfNotEmpty(Map<String, String> params, String key, String value) {
if (ObjectUtil.isNotEmpty(value)) {
params.put(key, value);
} }
return resultForAcs;
} }
/** /**

View File

@@ -39,18 +39,8 @@ public class AutoTask {
//定时任务 //定时任务
@SneakyThrows @SneakyThrows
public void run() { public void run() {
RLock lock = redissonClient.getLock(this.getClass().getName());
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
try {
if (tryLock) {
sendTask(); sendTask();
} }
} catch (Exception e) {
if (tryLock) {
lock.unlock();
}
}
}
/** /**
* 定时下发任务 * 定时下发任务

View File

@@ -67,6 +67,7 @@
SELECT p.* SELECT p.*
FROM sch_base_point p FROM sch_base_point p
WHERE p.is_used = 1 WHERE p.is_used = 1
AND p.point_type = '1'
<if test="regions != null and regions.size() > 0"> <if test="regions != null and regions.size() > 0">
AND p.region_code IN AND p.region_code IN
<foreach collection="regions" item="region" open="(" separator="," close=")"> <foreach collection="regions" item="region" open="(" separator="," close=")">

View File

@@ -104,12 +104,6 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
// 获取region_name // 获取region_name
SchBaseRegion baseRegion = regionMapper.selectById(entity.getRegion_code()); SchBaseRegion baseRegion = regionMapper.selectById(entity.getRegion_code());
entity.setRegion_name(baseRegion.getRegion_name()); entity.setRegion_name(baseRegion.getRegion_name());
String pointStatus = entity.getPoint_status();
// 根据点位状态来判断更新内容
if (ObjectUtil.isNotEmpty(pointStatus) && pointStatus.equals(PointStatusEnum.EMPTY_POINT.getCode())) {
entity.setVehicle_type("");
entity.setVehicle_code("");
}
pointMapper.updateById(entity); pointMapper.updateById(entity);
} }

View File

@@ -51,9 +51,9 @@ spring:
master: master:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms_nlwq}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true # url: jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:wms_nlwq}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true
url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:wms_standardv2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3307}/${DB_NAME:wms_standardv2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
username: ${DB_USER:root} username: ${DB_USER:root}
password: ${DB_PWD:5XXX/3GEgdUnRZd4cbVnDL6BA6P9YToc} password: ${DB_PWD:123456}
# password: ${DB_PWD:123456} # password: ${DB_PWD:123456}
druid: druid:
# 基础连接池配置 # 基础连接池配置

View File

@@ -156,6 +156,7 @@
<el-table-column prop="status" label="状态" :formatter="formattStatus" :min-width="flexWidth('status',crud.data,'状态')" /> <el-table-column prop="status" label="状态" :formatter="formattStatus" :min-width="flexWidth('status',crud.data,'状态')" />
<el-table-column prop="qty" label="组盘数量" :formatter="crud.formatNum3" :min-width="100" /> <el-table-column prop="qty" label="组盘数量" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" /> <el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="load_port" label="用料位置" :min-width="flexWidth('load_port',crud.data,'用料位置')" />
<el-table-column prop="create_name" label="组盘人" :min-width="flexWidth('create_name',crud.data,'组盘人')" /> <el-table-column prop="create_name" label="组盘人" :min-width="flexWidth('create_name',crud.data,'组盘人')" />
<el-table-column prop="create_time" label="组盘时间" :min-width="flexWidth('create_time',crud.data,'组盘时间')" /> <el-table-column prop="create_time" label="组盘时间" :min-width="flexWidth('create_time',crud.data,'组盘时间')" />
<el-table-column <el-table-column

View File

@@ -58,7 +58,7 @@
<el-table-column prop="point_name" label="点位编码" width="180" show-overflow-tooltip /> <el-table-column prop="point_name" label="点位编码" width="180" show-overflow-tooltip />
<el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" /> <el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" />
<el-table-column prop="region_name" label="区域名称" :min-width="flexWidth('region_name',crud.data,'区域名称')" /> <el-table-column prop="region_name" label="区域名称" :min-width="flexWidth('region_name',crud.data,'区域名称')" />
<el-table-column prop="point_type_name" label="点位类型" :min-width="flexWidth('point_type_name',crud.data,'点位类型')"/> <el-table-column prop="point_type" label="点位类型" :min-width="flexWidth('point_type',crud.data,'点位类型')"/>
<el-table-column prop="point_status_name" label="点位状态" :min-width="flexWidth('point_status_name',crud.data,'点位类型')"/> <el-table-column prop="point_status_name" label="点位状态" :min-width="flexWidth('point_status_name',crud.data,'点位类型')"/>
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" /> <el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="is_used" label="是否启用" :min-width="flexWidth('is_used',crud.data,'是否启用')"> <el-table-column prop="is_used" label="是否启用" :min-width="flexWidth('is_used',crud.data,'是否启用')">

View File

@@ -26,7 +26,7 @@
<el-input v-model="form.point_name" style="width: 200px;"/> <el-input v-model="form.point_name" style="width: 200px;"/>
</el-form-item> </el-form-item>
<el-form-item label="点位类型"> <el-form-item label="点位类型">
<el-input v-model="form.point_type_name" style="width: 200px;"/> <el-input v-model="form.point_type" style="width: 200px;"/>
</el-form-item> </el-form-item>
<el-form-item label="点位状态"> <el-form-item label="点位状态">
<el-input v-model="form.point_status_name" style="width: 200px;"/> <el-input v-model="form.point_status_name" style="width: 200px;"/>

View File

@@ -193,11 +193,24 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="点位编码" prop="point_code"> <el-form-item label="点位编码" prop="point_code">
<el-input v-model="form.point_code" style="width: 370px;" /> <el-input v-model="form.point_code" style="width: 370px;" :disabled="crud.status.edit === 1" />
</el-form-item> </el-form-item>
<el-form-item label="点位名称" prop="point_name"> <el-form-item label="点位名称" prop="point_name">
<el-input v-model="form.point_name" style="width: 370px;" /> <el-input v-model="form.point_name" style="width: 370px;" />
</el-form-item> </el-form-item>
<el-form-item label="点位类型" prop="point_type">
<el-select
v-model="form.point_type"
placeholder="请选择"
style="width: 370px;"
>
<el-option
v-for="item in pointTypesList"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="pointStatusDialogList.length > 0" label="点位状态" prop="point_status"> <el-form-item v-if="pointStatusDialogList.length > 0" label="点位状态" prop="point_status">
<el-select <el-select
v-model="form.point_status" v-model="form.point_status"
@@ -218,7 +231,7 @@
<el-select <el-select
v-model="form.point_type" v-model="form.point_type"
size="mini" size="mini"
placeholder="设备点位类型" placeholder="点位类型"
class="filter-item" class="filter-item"
style="width: 370px;" style="width: 370px;"
> >
@@ -232,10 +245,10 @@
<el-form-item label="父类编码" prop="vehicle_code"> <el-form-item label="父类编码" prop="vehicle_code">
<el-input v-model="form.parent_point_code" clearable style="width: 370px;" @focus="getParentPoint"/> <el-input v-model="form.parent_point_code" clearable style="width: 370px;" @focus="getParentPoint"/>
</el-form-item> </el-form-item>
<el-form-item v-if="form.point_status !== '1'" label="载具编码" prop="vehicle_code"> <el-form-item label="载具编码" prop="vehicle_code">
<el-input v-model="form.vehicle_code" clearable style="width: 370px;" /> <el-input v-model="form.vehicle_code" clearable style="width: 370px;" />
</el-form-item> </el-form-item>
<el-form-item v-if="form.point_status !== '1'" label="载具类型" prop="vehicle_code"> <el-form-item label="载具类型" prop="vehicle_code">
<el-select v-model="form.vehicle_type" placeholder="请选择" clearable style="width: 370px;"> <el-select v-model="form.vehicle_type" placeholder="请选择" clearable style="width: 370px;">
<el-option <el-option
v-for="item in dict.vehicle_type" v-for="item in dict.vehicle_type"
@@ -281,10 +294,8 @@
<el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')" /> <el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')" />
<el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" /> <el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" />
<el-table-column prop="region_name" label="区域名称" :min-width="flexWidth('region_name',crud.data,'区域名称')" /> <el-table-column prop="region_name" label="区域名称" :min-width="flexWidth('region_name',crud.data,'区域名称')" />
<el-table-column prop="point_type_name" label="点位类型" :min-width="flexWidth('point_type_name',crud.data,'点位类型')"/> <el-table-column prop="point_type" label="点位类型" :formatter="formatPointType" :min-width="flexWidth('point_type',crud.data,'点位类型')"/>
<el-table-column prop="point_status_name" label="点位状态" :min-width="flexWidth('point_status_name',crud.data,'点位类型')"/> <el-table-column prop="point_status_name" label="点位状态" :min-width="flexWidth('point_status_name',crud.data,'点位类型')"/>
<!-- <el-table-column prop="point_type" label="点位类型" :min-width="flexWidth('point_type',crud.data,'点位类型')" />-->
<!-- <el-table-column prop="point_status" label="点位状态" :min-width="flexWidth('point_status',crud.data,'点位状态')" />-->
<el-table-column prop="vehicle_type" label="载具类型" :min-width="flexWidth('vehicle_type',crud.data,'载具类型', 30)"> <el-table-column prop="vehicle_type" label="载具类型" :min-width="flexWidth('vehicle_type',crud.data,'载具类型', 30)">
<template slot-scope="scope"> <template slot-scope="scope">
{{ dict.label.vehicle_type[scope.row.vehicle_type] }} {{ dict.label.vehicle_type[scope.row.vehicle_type] }}
@@ -439,7 +450,20 @@ export default {
{ 'name': '第一车间', 'code': 'A1' } { 'name': '第一车间', 'code': 'A1' }
], ],
regionList: [], regionList: [],
pointTypesList: [], pointTypesList: [
{
'value': '1',
'label': '普通站点'
},
{
'value': '2',
'label': '产线站点'
},
{
'value': null,
'label': '其他'
}
],
pointStatusList: [], pointStatusList: [],
pointStatusDialogList: [], pointStatusDialogList: [],
pointTypesDialogList: [], pointTypesDialogList: [],
@@ -474,7 +498,6 @@ export default {
getPointStatusAndTypeList(id, flag) { getPointStatusAndTypeList(id, flag) {
if (id) { if (id) {
this.getPointStatusList(id, flag) this.getPointStatusList(id, flag)
this.getPointTypeList(id, flag)
} }
if (flag === 1) { if (flag === 1) {
this.crud.toQuery() this.crud.toQuery()
@@ -489,14 +512,9 @@ export default {
} }
}) })
}, },
getPointTypeList(id, flag) { formatPointType(row, column, cellValue) {
crudSchBaseRegion.getPointTypeSelectById(id).then(res => { const found = this.pointTypesList.find(item => item.value === cellValue);
if (flag === 1) { return found ? found.label : '-';
this.pointTypesList = res
} else {
this.pointTypesDialogList = res
}
})
}, },
changeUsed(data, flag) { // 更改启用状态 changeUsed(data, flag) { // 更改启用状态
const param = {} const param = {}