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