From fb5aa087eaf6a68cf7ea8114beb270551016e7dd Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期二, 29 七月 2025 11:27:45 +0800 Subject: [PATCH] 添加定型指派设备 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/AndonOrderServiceImpl.java | 152 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 149 insertions(+), 3 deletions(-) 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 index 93d0b4d..2834fa9 100644 --- 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 @@ -2,14 +2,21 @@ import cn.hutool.core.date.DatePattern; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 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 com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.shiro.SecurityUtils; import org.jeecg.common.constant.WebsocketConst; import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.api.ISysBaseAPI; import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.board.vo.EquAndon; import org.jeecg.modules.mdc.dto.MdcEquProDto; import org.jeecg.modules.mdc.entity.AndonOrder; import org.jeecg.modules.mdc.mapper.AndonOrderMapper; @@ -17,18 +24,22 @@ 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.mdc.vo.MdcDeviceCalendarVo; import org.jeecg.modules.message.websocket.WebSocket; +import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.service.ISysUserService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.*; import java.util.stream.Collectors; /** * @Description: andon_order * @Author: jeecg-boot - * @Date: 2025-06-11 + * @Date: 2025-06-11 * @Version: V1.0 */ @Service @@ -40,7 +51,13 @@ private WebSocket webSocket; @Resource private ISysUserService userService; + @Resource + private ISysDictService sysDictService; + @Resource + private ISysBaseAPI sysBaseApi; + @Override + @Transactional public void procedureCall(AndonOrder andonOrder) { if (StringUtils.isBlank(andonOrder.getEquipmentId())) { throw new JeecgBootException("璇烽�夋嫨璁惧锛�"); @@ -58,9 +75,9 @@ andonOrderInfo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(equipmentId) ? equipmentIdToProductionIdMap.get(equipmentId).getId() : null); andonOrderInfo.setAndonType(StringPool.ONE); andonOrderInfo.setOrderStatus(StringPool.ONE); - andonOrderInfo.setOperator(andonOrder.getOperator()); + andonOrderInfo.setOperator(userId); andonOrderInfo.setOperateTime(new Date()); - andonOrderInfo.setResponder(userId); + andonOrderInfo.setResponder(andonOrder.getOperator()); andonOrderInfo.setCallReason(andonOrder.getCallReason()); list.add(andonOrderInfo); } @@ -76,6 +93,9 @@ andonOrderWebSocketVo.setCallReason(order.getCallReason()); andonOrderWebSocketVo.setAndonType("绋嬪簭鍛煎彨"); andonOrderWebSocketVo.setPersonResponsible(user.getRealname()); + andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY); + andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY); + andonOrderWebSocketVo.setType("open"); andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(order.getEquipmentId()) ? equipmentIdToProductionIdMap.get(order.getEquipmentId()).getProductionName() : null); andonOrderWebSocketVoList.add(andonOrderWebSocketVo); } @@ -87,4 +107,130 @@ webSocket.sendMessage(jsonObject.toJSONString()); } } + + /** + * 瀹夌伅闂鍒楄〃 + */ + @Override + public List<EquAndon> equAndonList(List<String> equipmentIdList) { + List<EquAndon> result = new ArrayList<>(); + List<AndonOrder> andonOrderList = this.baseMapper.equAndonList(equipmentIdList); + if (andonOrderList != null && !andonOrderList.isEmpty()) { + andonOrderList.forEach(andonOrder -> { + EquAndon equAndon = new EquAndon(); + equAndon.setEquipmentId(andonOrder.getEquipmentId()); + StringBuilder infoBuilder = new StringBuilder(); + infoBuilder.append("瀹夌伅绫诲瀷: ").append(sysDictService.queryDictTextByKey("andon_type",andonOrder.getAndonType())).append("\n"); + infoBuilder.append("瀹夌伅浜�: ").append(sysDictService.queryTableDictTextByKey("sys_user", "realname", "id", andonOrder.getOperator())).append("\n"); + infoBuilder.append("瀹夌伅鏃堕棿: ").append(DateUtils.format(andonOrder.getOperateTime(), DateUtils.STR_DATE_TIME_SMALL)).append("\n"); + infoBuilder.append("瀹夌伅鐘舵��: ").append(sysDictService.queryDictTextByKey("order_status",andonOrder.getOrderStatus())).append("\n"); + equAndon.setAndonInfo(infoBuilder.toString()); + result.add(equAndon); + }); + } + return result; + } + + @Override + public List<AndonOrderWebSocketVo> untreatedAndonList() { + List<AndonOrderWebSocketVo> result = new ArrayList<>(); + List<AndonOrder> andonOrderList = this.baseMapper.untreatedAndonList(); + if (andonOrderList != null && !andonOrderList.isEmpty()) { + + List<String> equipmentIds = andonOrderList.stream().map(AndonOrder::getEquipmentId).collect(Collectors.toList()); + List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(equipmentIds); + Map<String, MdcEquProDto> equipmentIdToProductionIdMap = CollectionUtils.isNotEmpty(equipmentList) ? equipmentList.stream().collect(Collectors.toMap(MdcEquProDto::getEquipmentId, comRateDto -> comRateDto)) : new HashMap<>(); + + andonOrderList.forEach(andonOrder -> { + AndonOrderWebSocketVo andonOrderWebSocketVo = new AndonOrderWebSocketVo(); + andonOrderWebSocketVo.setEquipmentId(andonOrder.getEquipmentId()); + andonOrderWebSocketVo.setCallPersonnel(userService.getById(andonOrder.getOperator()).getRealname()); + andonOrderWebSocketVo.setCallTime(DateUtils.format(andonOrder.getOperateTime(), DatePattern.NORM_DATE_PATTERN)); + andonOrderWebSocketVo.setCallReason(andonOrder.getCallReason()); + andonOrderWebSocketVo.setAndonType("绋嬪簭鍛煎彨"); + andonOrderWebSocketVo.setPersonResponsible(userService.getById(andonOrder.getResponder()).getRealname()); + andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY); + andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY); + andonOrderWebSocketVo.setType("open"); + andonOrderWebSocketVo.setPlantName(equipmentIdToProductionIdMap != null && equipmentIdToProductionIdMap.containsKey(andonOrder.getEquipmentId()) ? equipmentIdToProductionIdMap.get(andonOrder.getEquipmentId()).getProductionName() : null); + result.add(andonOrderWebSocketVo); + + }); + } + return result; + } + + @Override + @Transactional + public void responseData(List<String> ids) { + + if (CollectionUtils.isEmpty(ids)) { + throw new JeecgBootException("璇烽�夋嫨瑕佸搷搴旂殑鏁版嵁"); + } + List<AndonOrder> andonOrderList = this.listByIds(ids); + List<AndonOrder> existAlreadyResponsedList = andonOrderList.stream().filter(andonOrder -> !"1".equals(andonOrder.getOrderStatus())).collect(Collectors.toList()); + if (CollectionUtils.isNotEmpty(existAlreadyResponsedList)) { + throw new JeecgBootException("瀛樺湪宸插搷搴旂殑瀹夌伅淇℃伅锛屾棤闇�閲嶅鍝嶅簲"); + } + for (AndonOrder andonOrder : andonOrderList) { + andonOrder.setOrderStatus("2"); + andonOrder.setResponseTime(new Date()); + } + + //鏌ヨ鍘傛埧淇℃伅 + List<String> equipmentIds = andonOrderList.stream().map(AndonOrder::getEquipmentId).collect(Collectors.toList()); + List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(equipmentIds); + Map<String, MdcEquProDto> equipmentIdToProductionIdMap = equipmentList.stream().collect(Collectors.toMap(MdcEquProDto::getEquipmentId, comRateDto -> comRateDto)); + + //淇濆瓨鎴愬姛鍚庤澶囧彂閫亀ebsocket娑堟伅 + if (this.updateBatchById(andonOrderList)) { + List<AndonOrderWebSocketVo> andonOrderWebSocketVoList = Lists.newArrayList(); + //璁剧疆websocket璇锋眰娑堟伅鏁版嵁 + for (AndonOrder order : andonOrderList) { + 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(sysBaseApi.getUserById(order.getOperator()).getRealname()); + andonOrderWebSocketVo.setRepairTime(StringPool.EMPTY); + andonOrderWebSocketVo.setFaultInfo(StringPool.EMPTY); + andonOrderWebSocketVo.setType("close"); + 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()); + } + } + + @Override + @Transactional + public void dealWith(AndonOrder andonOrder) { + if (Objects.isNull(andonOrder)) { + throw new JeecgBootException("璇烽�夋嫨闇�瑕佸鐞嗙殑瀹夌伅淇℃伅"); + } + + if (StringUtils.isBlank(andonOrder.getResolutionDescreption())) { + throw new JeecgBootException("澶勭悊缁撴灉鎻忚堪涓嶈兘涓虹┖"); + } + + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + andonOrder.setProcessor(user.getId()); + andonOrder.setProcessTime(new Date()); + andonOrder.setOrderStatus("3"); + + this.updateById(andonOrder); + } + + @Override + public IPage<AndonOrder> pageList(String userId, AndonOrder andonOrder, Integer pageNo, Integer pageSize, HttpServletRequest req) { + IPage<AndonOrder> pageData = new Page<>(pageNo, pageSize); + return this.baseMapper.pageList(pageData, andonOrder, userId); + } } -- Gitblit v1.9.3