From 09bcb495a79708d831a4396c00e5c1d671c04cab Mon Sep 17 00:00:00 2001
From: hyingbo <1363390067@qq.com>
Date: 星期四, 12 六月 2025 10:10:28 +0800
Subject: [PATCH] 程序呼叫

---
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java         |   15 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java            |   14 ++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/AndonOrderWebSocketVo.java           |   52 +++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java |   89 ++++++++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/AndonOrderController.java    |   44 ++++++
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml         |    5 
 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/AndonOrder.java                  |  164 +++++++++++++++++++++++
 7 files changed, 383 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/AndonOrderController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/AndonOrderController.java
new file mode 100644
index 0000000..a9a33ee
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/AndonOrderController.java
@@ -0,0 +1,44 @@
+package org.jeecg.modules.mdc.controller;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.system.base.controller.JeecgController;
+import org.jeecg.modules.mdc.entity.AndonOrder;
+import org.jeecg.modules.mdc.service.IAndonOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+ /**
+ * @Description: andon_order
+ * @Author: jeecg-boot
+ * @Date:   2025-06-11
+ * @Version: V1.0
+ */
+@Api(tags="andon_order")
+@RestController
+@RequestMapping("/AndonOrder/andonOrder")
+@Slf4j
+public class AndonOrderController extends JeecgController<AndonOrder, IAndonOrderService> {
+	@Autowired
+	private IAndonOrderService andonOrderService;
+
+	 /**
+	  * 绋嬪簭鍛煎彨
+	  *
+	  * @param andonOrder
+	  * @return
+	  */
+	 @AutoLog(value = "瀹夌伅宸ュ崟-绋嬪簭鍛煎彨")
+	 @ApiOperation(value = "瀹夌伅宸ュ崟-绋嬪簭鍛煎彨", notes = "瀹夌伅宸ュ崟-绋嬪簭鍛煎彨")
+	 @PostMapping(value = "/procedureCall")
+	 public Result<?> procedureCall(@RequestBody AndonOrder andonOrder) {
+		 andonOrderService.procedureCall(andonOrder);
+		 return Result.OK("鍛煎彨鎴愬姛锛�");
+	 }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/AndonOrder.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/AndonOrder.java
new file mode 100644
index 0000000..5321b7a
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/AndonOrder.java
@@ -0,0 +1,164 @@
+package org.jeecg.modules.mdc.entity;
+
+import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
+import java.util.Date;
+import java.math.BigDecimal;
+
+import cn.hutool.core.date.DatePattern;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import lombok.Data;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.jeecgframework.poi.excel.annotation.Excel;
+import org.jeecg.common.aspect.annotation.Dict;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * @Description: andon_order
+ * @Author: jeecg-boot
+ * @Date: 2025-06-11
+ * @Version: V1.0
+ */
+@Data
+@TableName("andon_order")
+@Accessors(chain = true)
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "andon_order瀵硅薄", description = "andon_order")
+public class AndonOrder implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭
+     */
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+    /**
+     * 璁惧缂栧彿
+     */
+    @Excel(name = "璁惧缂栧彿", width = 15)
+    @ApiModelProperty(value = "璁惧缂栧彿")
+    private String equipmentId;
+    /**
+     * 鎵�灞炲巶鎴�
+     */
+    @Excel(name = "鎵�灞炲巶鎴�", width = 15)
+    @ApiModelProperty(value = "鎵�灞炲巶鎴�")
+    private String plantName;
+    /**
+     * 瀹夌伅绫诲瀷
+     */
+    @Excel(name = "瀹夌伅绫诲瀷", width = 15)
+    @ApiModelProperty(value = "瀹夌伅绫诲瀷")
+    private String andonType;
+    /**
+     * 瀹夌伅浜�(鍛煎彨浜�)
+     */
+    @Excel(name = "瀹夌伅浜�", width = 15)
+    @ApiModelProperty(value = "瀹夌伅浜�")
+    private String operator;
+    /**
+     * 鍛煎彨鍘熷洜
+     */
+    @Excel(name = "鍛煎彨鍘熷洜", width = 15)
+    @ApiModelProperty(value = "鍛煎彨鍘熷洜")
+    private String callReason;
+    /**
+     * 瀹夌伅鏃堕棿
+     */
+    @Excel(name = "瀹夌伅鏃堕棿", width = 15, format = DatePattern.NORM_DATETIME_PATTERN)
+    @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @ApiModelProperty(value = "瀹夌伅鏃堕棿")
+    private Date operateTime;
+    /**
+     * 鍝嶅簲浜�(璐d换浜�)
+     */
+    @Excel(name = "鍝嶅簲浜�", width = 15)
+    @ApiModelProperty(value = "鍝嶅簲浜�")
+    private String responder;
+    /**
+     * 鍝嶅簲鏃堕棿
+     */
+    @Excel(name = "鍝嶅簲鏃堕棿", width = 15, format = DatePattern.NORM_DATETIME_PATTERN)
+    @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @ApiModelProperty(value = "鍝嶅簲鏃堕棿")
+    private Date responseTime;
+    /**
+     * 澶勭悊浜�
+     */
+    @Excel(name = "澶勭悊浜�", width = 15)
+    @ApiModelProperty(value = "澶勭悊浜�")
+    private String processor;
+    /**
+     * 澶勭悊瀹屾垚鏃堕棿
+     */
+    @Excel(name = "澶勭悊瀹屾垚鏃堕棿", width = 15, format = DatePattern.NORM_DATETIME_PATTERN)
+    @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @ApiModelProperty(value = "澶勭悊瀹屾垚鏃堕棿")
+    private Date processTime;
+    /**
+     * 瀹夌伅鐘舵��;寰呭搷搴斻�佸緟澶勭悊銆佸凡瀹屾垚
+     */
+    @Excel(name = "瀹夌伅鐘舵��;寰呭搷搴斻�佸緟澶勭悊銆佸凡瀹屾垚", width = 15)
+    @ApiModelProperty(value = "瀹夌伅鐘舵��;寰呭搷搴斻�佸緟澶勭悊銆佸凡瀹屾垚")
+    private String orderStatus;
+    /**
+     * 闂鎻忚堪
+     */
+    @Excel(name = "闂鎻忚堪", width = 15)
+    @ApiModelProperty(value = "闂鎻忚堪")
+    private String problemDescreption;
+    /**
+     * 澶勭悊缁撴灉鎻忚堪
+     */
+    @Excel(name = "澶勭悊缁撴灉鎻忚堪", width = 15)
+    @ApiModelProperty(value = "澶勭悊缁撴灉鎻忚堪")
+    private String resolutionDescreption;
+    /**
+     * 澶勭悊缁撴灉鍥剧墖
+     */
+    @Excel(name = "澶勭悊缁撴灉鍥剧墖", width = 15)
+    @ApiModelProperty(value = "澶勭悊缁撴灉鍥剧墖")
+    private String imageFiles;
+    /**
+     * 鍒犻櫎鏍囪
+     */
+    @Excel(name = "鍒犻櫎鏍囪", width = 15)
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag;
+    /**
+     * 鍒涘缓浜�
+     */
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    private Date createTime;
+    /**
+     * 鏇存柊浜�
+     */
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+    /**
+     * 鏇存柊鏃堕棿
+     */
+    @JsonFormat(timezone = "GMT+8", pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @DateTimeFormat(pattern = DatePattern.NORM_DATETIME_PATTERN)
+    @ApiModelProperty(value = "鏇存柊鏃堕棿")
+    private Date updateTime;
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java
new file mode 100644
index 0000000..c624816
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/AndonOrderMapper.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.mdc.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.jeecg.modules.mdc.entity.AndonOrder;
+
+/**
+ * @Description: andon_order
+ * @Author: jeecg-boot
+ * @Date:   2025-06-11
+ * @Version: V1.0
+ */
+public interface AndonOrderMapper extends BaseMapper<AndonOrder> {
+
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml
new file mode 100644
index 0000000..cd37885
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/AndonOrderMapper.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.modules.mdc.mapper.AndonOrderMapper">
+
+</mapper>
\ No newline at end of file
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java
new file mode 100644
index 0000000..c0ae7dd
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IAndonOrderService.java
@@ -0,0 +1,15 @@
+package org.jeecg.modules.mdc.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import org.jeecg.modules.mdc.entity.AndonOrder;
+
+/**
+ * @Description: andon_order
+ * @Author: jeecg-boot
+ * @Date:   2025-06-11
+ * @Version: V1.0
+ */
+public interface IAndonOrderService extends IService<AndonOrder> {
+
+    void procedureCall(AndonOrder andonOrder);
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java
new file mode 100644
index 0000000..813d192
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java
@@ -0,0 +1,89 @@
+package org.jeecg.modules.mdc.service.impl;
+
+import cn.hutool.core.date.DatePattern;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.compress.utils.Lists;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.constant.WebsocketConst;
+import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.mdc.dto.MdcEquProDto;
+import org.jeecg.modules.mdc.entity.AndonOrder;
+import org.jeecg.modules.mdc.mapper.AndonOrderMapper;
+import org.jeecg.modules.mdc.service.IAndonOrderService;
+import org.jeecg.modules.mdc.service.IMdcEquipmentService;
+import org.jeecg.modules.mdc.util.DateUtils;
+import org.jeecg.modules.mdc.vo.AndonOrderWebSocketVo;
+import org.jeecg.modules.message.websocket.WebSocket;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: andon_order
+ * @Author: jeecg-boot
+ * @Date:   2025-06-11
+ * @Version: V1.0
+ */
+@Service
+public class AndonOrderServiceImpl extends ServiceImpl<AndonOrderMapper, AndonOrder> implements IAndonOrderService {
+
+    @Resource
+    private IMdcEquipmentService mdcEquipmentService;
+    @Resource
+    private WebSocket webSocket;
+    @Resource
+    private ISysUserService userService;
+    @Override
+    public void procedureCall(AndonOrder andonOrder) {
+        if (StringUtils.isBlank(andonOrder.getEquipmentId())) {
+            throw new JeecgBootException("璇烽�夋嫨璁惧锛�");
+        }
+        LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        String userId = user.getId();
+        List<String> equipmentIds = Arrays.asList(andonOrder.getEquipmentId().split(StringPool.COMMA));
+
+        List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(equipmentIds);
+        Map<String, MdcEquProDto> equipmentIdToProductionIdMap = equipmentList.stream().collect(Collectors.toMap(MdcEquProDto::getEquipmentId, comRateDto -> comRateDto));
+        List<AndonOrder> list = Lists.newArrayList();
+        for (String equipmentId : equipmentIds) {
+            AndonOrder andonOrderInfo = new AndonOrder();
+            andonOrderInfo.setEquipmentId(equipmentId);
+            andonOrderInfo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(equipmentId) ? equipmentIdToProductionIdMap.get(equipmentId).getId() : null);
+            andonOrderInfo.setAndonType(StringPool.ONE);
+            andonOrderInfo.setOperator(andonOrder.getOperator());
+            andonOrderInfo.setOperateTime(new Date());
+            andonOrderInfo.setResponder(userId);
+            andonOrderInfo.setCallReason(andonOrder.getCallReason());
+            list.add(andonOrderInfo);
+        }
+
+        if (this.saveBatch(list)) {
+            List<AndonOrderWebSocketVo> andonOrderWebSocketVoList = Lists.newArrayList();
+            //璁剧疆websocket璇锋眰娑堟伅鏁版嵁
+            for (AndonOrder order : list) {
+                AndonOrderWebSocketVo andonOrderWebSocketVo = new AndonOrderWebSocketVo();
+                andonOrderWebSocketVo.setEquipmentId(order.getEquipmentId());
+                andonOrderWebSocketVo.setCallPersonnel(userService.getById(order.getOperator()).getRealname());
+                andonOrderWebSocketVo.setCallTime(DateUtils.format(order.getOperateTime(), DatePattern.NORM_DATE_PATTERN));
+                andonOrderWebSocketVo.setCallReason(order.getCallReason());
+                andonOrderWebSocketVo.setAndonType("绋嬪簭鍛煎彨");
+                andonOrderWebSocketVo.setPersonResponsible(user.getRealname());
+                andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(order.getEquipmentId()) ? equipmentIdToProductionIdMap.get(order.getEquipmentId()).getProductionName() : null);
+                andonOrderWebSocketVoList.add(andonOrderWebSocketVo);
+            }
+
+            //鍙戦�亀ebsocket璇锋眰
+            JSONObject jsonObject = new JSONObject();
+            jsonObject.put(WebsocketConst.MSG_CMD, "andon");
+            jsonObject.put("data", andonOrderWebSocketVoList);
+            webSocket.sendMessage(jsonObject.toJSONString());
+        }
+    }
+}
diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/AndonOrderWebSocketVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/AndonOrderWebSocketVo.java
new file mode 100644
index 0000000..411a4ec
--- /dev/null
+++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/AndonOrderWebSocketVo.java
@@ -0,0 +1,52 @@
+package org.jeecg.modules.mdc.vo;
+
+import lombok.Data;
+
+@Data
+public class AndonOrderWebSocketVo {
+
+    /**
+     * 璁惧缂栧彿
+     */
+    private String equipmentId;
+
+    /**
+     * 鍛煎彨浜哄憳
+     */
+    private String callPersonnel;
+
+    /**
+     * 瀹夌伅绫诲瀷
+     */
+    private String andonType;
+
+    /**
+     * 鍛煎彨鏃堕棿
+     */
+    private String callTime;
+
+    /**
+     * 鍛煎彨鍘熷洜
+     */
+    private String callReason;
+
+    /**
+     * 璐d换浜�
+     */
+    private String personResponsible;
+
+    /**
+     * 鎶ヤ慨鏃堕棿
+     */
+    private String repairTime;
+
+    /**
+     * 鏁呴殰鎻忚堪
+     */
+    private String faultInfo;
+
+    /**
+     * 鎵�灞炲巶鎴�
+     */
+    private String plantName;
+}

--
Gitblit v1.9.3