From a06e93e518a3b1633870282bb9c598fd06176a88 Mon Sep 17 00:00:00 2001 From: xins Date: Fri, 12 Apr 2024 16:27:28 +0800 Subject: [PATCH] =?UTF-8?q?2.0.7=20=E4=BA=94=E6=A5=BC=E6=9F=9C=E4=BD=93?= =?UTF-8?q?=E6=8B=86=E5=88=86=E5=8C=BA=E5=9F=9F=E4=B8=8B=E5=8F=91=E6=9F=9C?= =?UTF-8?q?=E4=BD=93=E5=88=B0=E5=B7=A5=E4=BD=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hw/common/core/constant/MesConstants.java | 2 + .../com/hw/common/core/utils/SocketUtils.java | 73 ++++++++++++++ .../main/java/com/hw/mes/SocketClient.java | 86 +++++++++++++++++ .../java/com/hw/mes/config/MesConfig.java | 55 +++++++++++ .../hw/mes/controller/MesApiController.java | 5 +- .../hw/mes/domain/MesMaterialAssignInfo.java | 67 +++++++++++++ .../com/hw/mes/domain/vo/MesAssignTaskVo.java | 6 +- .../mapper/MesMaterialAssignInfoMapper.java | 61 ++++++++++++ .../mes/service/IMesProductPlanService.java | 2 +- .../impl/MesProductPlanServiceImpl.java | 96 +++++++++++++++++-- .../mes/MesMaterialAssignInfoMapper.xml | 69 +++++++++++++ hw-ui/src/api/board/index.js | 10 ++ hw-ui/src/views/board/fifthFloor/index.vue | 73 +++++++++++--- 13 files changed, 576 insertions(+), 29 deletions(-) create mode 100644 hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/SocketUtils.java create mode 100644 hw-modules/hw-mes/src/main/java/com/hw/mes/SocketClient.java create mode 100644 hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java create mode 100644 hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialAssignInfo.java create mode 100644 hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialAssignInfoMapper.java create mode 100644 hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialAssignInfoMapper.xml diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java index d5ba9d1e..e6d9b4d5 100644 --- a/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/constant/MesConstants.java @@ -87,4 +87,6 @@ public class MesConstants { public static final String MES_ASSIGN_TASK_KEY = "fifth_floor_assign_task";//五楼分配柜体任务到具体工位的key public static final String MES_ASSIGN_TASK_RESULT_KEY = "fifth_floor_assign_task_result";//五楼分配柜体任务到具体工位返库key + + } diff --git a/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/SocketUtils.java b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/SocketUtils.java new file mode 100644 index 00000000..6f960109 --- /dev/null +++ b/hw-common/hw-common-core/src/main/java/com/hw/common/core/utils/SocketUtils.java @@ -0,0 +1,73 @@ +package com.hw.common.core.utils; + +import com.alibaba.fastjson2.JSONObject; + +import java.io.*; +import java.net.Socket; +import java.net.SocketTimeoutException; +import java.nio.charset.StandardCharsets; + +/** + * @Description: + * @ProjectName:HwMes + * @Author:xins + * @Date:2024-04-12 13:43 + * @Version:1.0 + */ +public class SocketUtils { + + public static String sendAndReceive(String host,int port,int readTimeout,String sendMessage) { + + Socket socket = null; + try { + socket = new Socket(host, port); + OutputStream outToServer = socket.getOutputStream(); + byte[] sendMessageBytes = sendMessage.getBytes(); + outToServer.write(sendMessageBytes); + outToServer.flush(); + socket.setSoTimeout(readTimeout); + + try { + // 获取Socket的输入流 + InputStream inFromServer = socket.getInputStream(); + + // 创建一个足够大的缓冲区来接收数据 + byte[] buffer = new byte[1024]; + + // 从输入流中读取数据 + int bytesRead; + while ((bytesRead = inFromServer.read(buffer)) != -1) { + // 处理接收到的数据 + String receivedMessage = new String(buffer, 0, bytesRead, StandardCharsets.UTF_8); + System.out.println("Received feedback from server: " + receivedMessage); + return receivedMessage; + } + } catch (SocketTimeoutException e) { + System.err.println("Reading from the socket timed out."); + } + } catch (IOException e) { + System.err.println("An I/O error occurred: " + e.getMessage()); + } finally { + if (socket != null) { + try { + socket.close(); // 在异常情况下也尝试关闭 + } catch (IOException e) { + System.err.println("Failed to close the socket: " + e.getMessage()); + } + } + } + + return ""; + } + + public static void main(String[] args) { + JSONObject assignTaskMessageJson = new JSONObject(); + assignTaskMessageJson.put("stationNo", 3); + assignTaskMessageJson.put("time", System.currentTimeMillis()); + assignTaskMessageJson.put("materialBarcode", "1111"); + String host = "10.11.41.121"; + int port = 5000; + int readTimeout = 5000; // 读取超时时间,单位:毫秒 + sendAndReceive(host, port, readTimeout,assignTaskMessageJson.toString()); + } +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/SocketClient.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/SocketClient.java new file mode 100644 index 00000000..b3b5cbfe --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/SocketClient.java @@ -0,0 +1,86 @@ +//package com.hw.mes; +// +//import org.springframework.stereotype.Component; +// +//import javax.annotation.PostConstruct; +//import javax.annotation.PreDestroy; +//import java.io.IOException; +//import java.io.InputStream; +//import java.io.OutputStream; +//import java.net.Socket; +// +///** +// * @Description: Scoket客户端长连接 +// * @ClassName: SocketClient +// * @Author : xins +// * @Date :2024-04-12 15:03 +// * @Version :1.0 +// */ +//@Component +//public class SocketClient { +// +// private static final String SERVER_HOST = "10.11.41.121"; +// private static final int SERVER_PORT = 5000; +// private Socket socket; +// private InputStream inFromServer; +// private OutputStream outToServer; +// +// @PostConstruct +// public void init() { +// try { +// System.out.println("ddddddssss"); +// socket = new Socket(SERVER_HOST, SERVER_PORT); +// socket.setSoTimeout(5000); // 设置读取超时(例如:5秒) +// socket.setKeepAlive(true); // 开启TCP KeepAlive,有助于检测连接状态 +// +// inFromServer = socket.getInputStream(); +// outToServer = socket.getOutputStream(); +// } catch (IOException e) { +// System.err.println("Error initializing socket client: " + e.getMessage()); +// } +// } +// +// public String callApi(String request) { +// try { +// // 发送请求信息 +// outToServer.write(request.getBytes()); +// outToServer.flush(); +// +// // 接收反馈信息 +// byte[] buffer = new byte[1024]; +// int bytesRead = inFromServer.read(buffer); +// if (bytesRead == -1) { +// throw new IOException("Connection closed while waiting for feedback"); +// } +// +// String feedback = new String(buffer, 0, bytesRead); +// System.out.println("Received feedback from server: " + feedback); +// +// // 处理接收到的反馈信息 +// handleServerFeedback(feedback); +// +// return feedback; // 返回接收到的反馈信息 +// } catch (IOException e) { +// System.err.println("Error calling API: " + e.getMessage()); +// // 根据实际情况处理异常,如重试、通知用户等 +// return null; // 或返回一个默认值、错误信息等 +// } +// } +// +// private void handleServerFeedback(String feedback) { +// // TODO: 实现处理服务器反馈的逻辑 +// System.out.println("Handling server feedback: " + feedback); +// } +// +// //重连 +// @PreDestroy +// public void cleanup() { +// try { +// if (socket != null && !socket.isClosed()) { +// socket.close(); +// } +// } catch (IOException e) { +// System.err.println("Error closing socket: " + e.getMessage()); +// } +// } +//} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java new file mode 100644 index 00000000..755f895e --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/config/MesConfig.java @@ -0,0 +1,55 @@ +package com.hw.mes.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +/** + * @Description: 位置信息编码 + * @ClassName: StationConfig + * @Author : xins + * @Date :2024-03-25 8:53 + * @Version :1.0 + */ +@Configuration +@ConfigurationProperties(prefix = "mes") +public class MesConfig +{ + /** + * 五楼拆分区域发送socket server host + */ + private String socketServerHost; + + /** + * 五楼拆分区域发送socket server port + */ + private int socketServerPort; + + /** + * 反馈信息超时时间(单位:毫秒) + */ + private int socketServerReadTimeOut; + + public String getSocketServerHost() { + return socketServerHost; + } + + public void setSocketServerHost(String socketServerHost) { + this.socketServerHost = socketServerHost; + } + + public int getSocketServerPort() { + return socketServerPort; + } + + public void setSocketServerPort(int socketServerPort) { + this.socketServerPort = socketServerPort; + } + + public int getSocketServerReadTimeOut() { + return socketServerReadTimeOut; + } + + public void setSocketServerReadTimeOut(int socketServerReadTimeOut) { + this.socketServerReadTimeOut = socketServerReadTimeOut; + } +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesApiController.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesApiController.java index d9b33958..94b3bef4 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesApiController.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/controller/MesApiController.java @@ -192,9 +192,8 @@ public class MesApiController extends BaseController { */ @Log(title = "柜体分配任务", businessType = BusinessType.ALLOCATE) @PostMapping(("/assignTask")) - public AjaxResult assignTask(@RequestBody MesAssignTaskVo mesAssignTaskVo) { - productPlanService.assignTask(mesAssignTaskVo); - return success(); + public AjaxResult assignTask(@RequestBody @Validated MesAssignTaskVo mesAssignTaskVo) { + return success(productPlanService.assignTask(mesAssignTaskVo)); } } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialAssignInfo.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialAssignInfo.java new file mode 100644 index 00000000..50d1b307 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/MesMaterialAssignInfo.java @@ -0,0 +1,67 @@ +package com.hw.mes.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.hw.common.core.annotation.Excel; +import com.hw.common.core.web.domain.BaseEntity; + +/** + * 柜体分配任务信息对象 mes_material_assign_info + * + * @author xins + * @date 2024-04-12 + */ +public class MesMaterialAssignInfo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键标识 */ + private Long materialAssignInfoId; + + /** 物料条码 */ + @Excel(name = "物料条码") + private String materialBarcode; + + /** 下发工位ID */ + @Excel(name = "下发工位ID") + private Long stationId; + + public void setMaterialAssignInfoId(Long materialAssignInfoId) + { + this.materialAssignInfoId = materialAssignInfoId; + } + + public Long getMaterialAssignInfoId() + { + return materialAssignInfoId; + } + public void setMaterialBarcode(String materialBarcode) + { + this.materialBarcode = materialBarcode; + } + + public String getMaterialBarcode() + { + return materialBarcode; + } + public void setStationId(Long stationId) + { + this.stationId = stationId; + } + + public Long getStationId() + { + return stationId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("materialAssignInfoId", getMaterialAssignInfoId()) + .append("materialBarcode", getMaterialBarcode()) + .append("stationId", getStationId()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .toString(); + } +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesAssignTaskVo.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesAssignTaskVo.java index bc486d4b..f2511c98 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesAssignTaskVo.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/domain/vo/MesAssignTaskVo.java @@ -16,9 +16,9 @@ import java.math.BigDecimal; @Data public class MesAssignTaskVo { - //工位序号,代表第几个工位 - @NotNull(message = "工位序号必须输入") - private Integer stationNo; + //工位ID + @NotNull(message = "工位Id必须输入") + private Long stationId; //物料条码 @NotBlank(message = "物料条码必须输入") diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialAssignInfoMapper.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialAssignInfoMapper.java new file mode 100644 index 00000000..ddade141 --- /dev/null +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/mapper/MesMaterialAssignInfoMapper.java @@ -0,0 +1,61 @@ +package com.hw.mes.mapper; + +import java.util.List; +import com.hw.mes.domain.MesMaterialAssignInfo; + +/** + * 柜体分配任务信息Mapper接口 + * + * @author xins + * @date 2024-04-12 + */ +public interface MesMaterialAssignInfoMapper +{ + /** + * 查询柜体分配任务信息 + * + * @param materialAssignInfoId 柜体分配任务信息主键 + * @return 柜体分配任务信息 + */ + public MesMaterialAssignInfo selectMesMaterialAssignInfoByMaterialAssignInfoId(Long materialAssignInfoId); + + /** + * 查询柜体分配任务信息列表 + * + * @param mesMaterialAssignInfo 柜体分配任务信息 + * @return 柜体分配任务信息集合 + */ + public List selectMesMaterialAssignInfoList(MesMaterialAssignInfo mesMaterialAssignInfo); + + /** + * 新增柜体分配任务信息 + * + * @param mesMaterialAssignInfo 柜体分配任务信息 + * @return 结果 + */ + public int insertMesMaterialAssignInfo(MesMaterialAssignInfo mesMaterialAssignInfo); + + /** + * 修改柜体分配任务信息 + * + * @param mesMaterialAssignInfo 柜体分配任务信息 + * @return 结果 + */ + public int updateMesMaterialAssignInfo(MesMaterialAssignInfo mesMaterialAssignInfo); + + /** + * 删除柜体分配任务信息 + * + * @param materialAssignInfoId 柜体分配任务信息主键 + * @return 结果 + */ + public int deleteMesMaterialAssignInfoByMaterialAssignInfoId(Long materialAssignInfoId); + + /** + * 批量删除柜体分配任务信息 + * + * @param materialAssignInfoIds 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteMesMaterialAssignInfoByMaterialAssignInfoIds(Long[] materialAssignInfoIds); +} diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java index 39399c43..94e59a8d 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/IMesProductPlanService.java @@ -127,6 +127,6 @@ public interface IMesProductPlanService * 在五楼柜体拆分区拆分完柜体将门板下发给工位装配 * @param mesAssignTaskVo */ - public void assignTask(MesAssignTaskVo mesAssignTaskVo); + public int assignTask(MesAssignTaskVo mesAssignTaskVo); } diff --git a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java index c817da1b..7c227f84 100644 --- a/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java +++ b/hw-modules/hw-mes/src/main/java/com/hw/mes/service/impl/MesProductPlanServiceImpl.java @@ -9,9 +9,12 @@ import com.alibaba.fastjson.JSONObject; import com.hw.common.core.constant.MesConstants; import com.hw.common.core.exception.ServiceException; import com.hw.common.core.utils.DateUtils; +import com.hw.common.core.utils.SocketUtils; import com.hw.common.core.utils.uuid.Seq; import com.hw.common.security.utils.SecurityUtils; + import com.hw.mes.api.domain.MesBaseBarcodeInfo; +import com.hw.mes.config.MesConfig; import com.hw.mes.domain.*; import com.hw.mes.domain.vo.MesAssignTaskVo; import com.hw.mes.domain.vo.MesMaterialScanVo; @@ -61,7 +64,10 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { private MesBaseBarcodeInfoMapper mesBaseBarcodeInfoMapper; @Autowired - private StringRedisTemplate redisTemplate; + private MesMaterialAssignInfoMapper mesMaterialAssignInfoMapper; + + @Autowired + private MesConfig mesConfig; /** * 查询生产派工 @@ -373,16 +379,92 @@ public class MesProductPlanServiceImpl implements IMesProductPlanService { /** * 在五楼柜体拆分区拆分完柜体将门板下发给工位装配 + * * @param mesAssignTaskVo */ @Override - public void assignTask(MesAssignTaskVo mesAssignTaskVo) { - //1、先发布信息,设置超时时间,如果超时需要删除此key,避免重复读取 - redisTemplate.convertAndSend(MesConstants.MES_ASSIGN_TASK_KEY, mesAssignTaskVo.getStationNo()); - //2、订阅者读取此条信息后会给出反馈,需要在程序已开始订阅此条反馈信息,如果在10s内返回,则成功,如果10s内失败则失败 + @Transactional(rollbackFor = Exception.class) + public int assignTask(MesAssignTaskVo mesAssignTaskVo) { + String materialBarcode = mesAssignTaskVo.getMaterialBarcode(); + MesBaseBarcodeInfo mesBaseBarcodeInfo = mesBaseBarcodeInfoMapper.selectMesBaseBarcodeInfoByBarcodeInfo(materialBarcode); + if (mesBaseBarcodeInfo == null) { + throw new ServiceException("成品条码有误"); + } + if (StringUtils.isEmpty(mesBaseBarcodeInfo.getBindBarcode())) { + throw new ServiceException("此成品条码未绑定柜体,不能下发"); + } - System.out.println(redisTemplate.opsForValue().get(MesConstants.MES_ASSIGN_TASK_KEY)); + MesMaterialAssignInfo queryMesMaterialAssignInfo = new MesMaterialAssignInfo(); + queryMesMaterialAssignInfo.setMaterialBarcode(materialBarcode); + List mesMaterialAssignInfos = mesMaterialAssignInfoMapper.selectMesMaterialAssignInfoList(queryMesMaterialAssignInfo); + if (mesMaterialAssignInfos != null && !mesMaterialAssignInfos.isEmpty()) { + throw new ServiceException("此物料条码已经下发,无需重复下发"); + } + + + Long stationId = mesAssignTaskVo.getStationId(); + Date currentDate = new Date(); + MesMaterialAssignInfo mesMaterialAssignInfo = new MesMaterialAssignInfo(); + mesMaterialAssignInfo.setMaterialBarcode(materialBarcode); + mesMaterialAssignInfo.setStationId(stationId); + mesMaterialAssignInfo.setCreateBy(SecurityUtils.getUsername()); + mesMaterialAssignInfo.setCreateTime(currentDate); + + mesMaterialAssignInfoMapper.insertMesMaterialAssignInfo(mesMaterialAssignInfo); + + Long stationNo = stationId % 10; + JSONObject assignTaskMessageJson = new JSONObject(); + assignTaskMessageJson.put("stationNo", stationNo); + assignTaskMessageJson.put("time", currentDate.getTime()); + assignTaskMessageJson.put("materialBarcode", materialBarcode); + //2、订阅者读取此条信息后会给出反馈,直接写入redis,如果在10s内返回,则成功,如果10s内失败则失败 + + String returnMsg = SocketUtils. + sendAndReceive(mesConfig.getSocketServerHost(), mesConfig.getSocketServerPort(), mesConfig.getSocketServerReadTimeOut(), assignTaskMessageJson.toString()); + if (StringUtils.isEmpty(returnMsg)) { + throw new ServiceException("下发超时,请重试"); + } + + JSONObject returnMsgJson = JSONObject.parseObject(returnMsg); + boolean isFlag = returnMsgJson.getBoolean("isFlag"); + if (!isFlag) { + String tipMessage = returnMsgJson.getString("message"); + throw new ServiceException(tipMessage); + } + + return 1; -// redisTemplate.c } + + +// public String executeAssignTaskResultTask() { +// ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); +// boolean running = true; +// AtomicInteger i = new AtomicInteger(); +// Callable task = () -> { +// String result = ""; +// while (running) { +// i.getAndIncrement(); +// result = redisTemplate.opsForValue().getAndDelete(MesConstants.MES_ASSIGN_TASK_RESULT_KEY); +// System.out.println("no:" + i.get()); +// if (StringUtils.isNotEmpty(result)) { +// break; +// } +// } +// return result; +// }; +// +// +// try { +// // 安排任务每秒执行一次 +// ScheduledFuture result = executor.schedule(task, 1, TimeUnit.SECONDS); +// executor.shutdown(); +// executor.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS); +// return result.get(); +// } catch (InterruptedException e) { +// throw new RuntimeException(e); +// } catch (ExecutionException e) { +// throw new RuntimeException(e); +// } +// } } diff --git a/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialAssignInfoMapper.xml b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialAssignInfoMapper.xml new file mode 100644 index 00000000..7ad10f82 --- /dev/null +++ b/hw-modules/hw-mes/src/main/resources/mapper/mes/MesMaterialAssignInfoMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + select material_assign_info_id, material_barcode, station_id, create_by, create_time from mes_material_assign_info + + + + + + + + insert into mes_material_assign_info + + material_barcode, + station_id, + create_by, + create_time, + + + #{materialBarcode}, + #{stationId}, + #{createBy}, + #{createTime}, + + + + + update mes_material_assign_info + + material_barcode = #{materialBarcode}, + station_id = #{stationId}, + create_by = #{createBy}, + create_time = #{createTime}, + + where material_assign_info_id = #{materialAssignInfoId} + + + + delete from mes_material_assign_info where material_assign_info_id = #{materialAssignInfoId} + + + + delete from mes_material_assign_info where material_assign_info_id in + + #{materialAssignInfoId} + + + diff --git a/hw-ui/src/api/board/index.js b/hw-ui/src/api/board/index.js index 685dfb87..d244058b 100644 --- a/hw-ui/src/api/board/index.js +++ b/hw-ui/src/api/board/index.js @@ -201,3 +201,13 @@ export function applyRawBack(data) { data: data }) } + + +// 下发柜体到具体工位 +export function assignTask(data) { + return request({ + url: '/mes/api/assignTask', + method: 'post', + data: data + }) +} diff --git a/hw-ui/src/views/board/fifthFloor/index.vue b/hw-ui/src/views/board/fifthFloor/index.vue index 1138ca53..873a0b46 100644 --- a/hw-ui/src/views/board/fifthFloor/index.vue +++ b/hw-ui/src/views/board/fifthFloor/index.vue @@ -36,18 +36,18 @@ style="margin-left: 10px" trigger="click" width="400"> - - - + + + - - - + + + {{i.stationName}}
- 确 定 + 确 定
下发 @@ -383,7 +383,8 @@ import { getStockTotal, getWarehouses, bindBarcode, - applyRawBack + applyRawBack, + assignTask } from "@/api/board"; const setState = (e) => { @@ -415,7 +416,20 @@ export default { dialogVisible: false, form: {}, form1: {}, - form2: {}, + assignTaskForm: { + materialBarcode: null, + stationId: null + }, + assignTaskRules: { + materialBarcode: [ + { required: true, message: "物料条码不能为空", trigger: "blur" } + ], + stationId: [ + { required: true, message: "工位不能为空", trigger: "change" } + ], + }, + submitAssignLoading: false, + tableData: [], nowStation: null, stationData: [ @@ -702,11 +716,42 @@ export default { stationChange(val) { this.nowStation = val }, - completeStation() { - alert(JSON.stringify(this.nowStation)) - console.log(this.form2) - this.assignModel = false + + + // 下发柜体任务表单重置 + resetAssignTask() { + this.assignTaskForm = { + materialBarcode: null, + stationNo:null + }; + this.resetForm("assignTaskForm"); }, + + cancelAssignTask(){ + this.assignModel = false; + this.submitAssignLoading = false; + this.resetAssignTask(); + }, + + + + completeStation() { + this.submitAssignLoading = true; + this.$refs["assignTaskForm"].validate(valid => { + if (valid) { + assignTask(this.assignTaskForm).then(response => { + this.$modal.msgSuccess("下发成功"); + this.cancelAssignTask(); + }).catch(() => { + this.submitAssignLoading = false; + }); + } + }); + + }, + + + getInfo(e) { this.$refs.chart1_1.setData({ series: [ @@ -1171,8 +1216,6 @@ export default { }, - - // 表单重置 resetRawBack() { this.rawBackForm = {