From 1292cf73f7db223f35ab450eabeeedbf8802eb5a Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期四, 14 三月 2024 09:35:32 +0800 Subject: [PATCH] 首页设备状态计数接口 --- lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml | 5 + lxzn-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentStatusVo.java | 27 +++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 16 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcCommonVo.java | 13 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java | 66 +++++++++++++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java | 8 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java | 11 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 76 ++++++++++++++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java | 8 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java | 8 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java | 6 + 13 files changed, 247 insertions(+), 4 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java index b7c0be1..d996096 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java @@ -51,6 +51,10 @@ */ private String orgCode; /** + * 鐢ㄦ埛绫诲瀷 + */ + private Integer userType; + /** * 澶村儚 */ @SensitiveField diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java index afbeb3e..68fcaae 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/constant/MdcConstant.java @@ -75,4 +75,12 @@ public static final String MSG_STATUS_2 = "2"; public static final String MSG_STATUS_3 = "3"; + /** + * 鐢ㄦ埛绫诲瀷(1 鏅�氭垚鍛� 2 宸ユ 3 杞﹂棿 4 鍏徃锛� + */ + public static final Integer USER_TYPE_1 = 1; + public static final Integer USER_TYPE_2 = 2; + public static final Integer USER_TYPE_3 = 3; + public static final Integer USER_TYPE_4 = 4; + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java new file mode 100644 index 0000000..901b846 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcHomeController.java @@ -0,0 +1,66 @@ +package org.jeecg.modules.mdc.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.constant.MdcConstant; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.mdc.vo.MdcCommonVo; +import org.jeecg.modules.system.entity.MdcProduction; +import org.jeecg.modules.system.service.IMdcProductionService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.List; + +/** + * @author Lius + * @Description: MDC棣栭〉鎺ュ彛 + * @date 2024/3/13 14:27 + */ +@Slf4j +@Api(tags = "MDC棣栭〉鎺ュ彛") +@RestController +@RequestMapping("/mdc/home") +public class MdcHomeController { + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Resource + private IMdcProductionService mdcProductionService; + + @ApiOperation(value = "MDC棣栭〉鎺ュ彛-璁惧杩愯鐘舵�佺粺璁�", notes = "MDC棣栭〉鎺ュ彛-璁惧杩愯鐘舵�佺粺璁�") + @GetMapping("/equipmentStatusStatistics") + public Result<?> equipmentStatusStatistics(String productionCode) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + Integer userType = user.getUserType(); + String userId = user.getId(); + String key = ""; + if (StringUtils.isNotBlank(productionCode)) { + //鍘傚尯 + MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getProductionCode, productionCode).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString())); + key = mdcProduction.getId(); + } else { + //鍒ゆ柇鏄叕鍙哥骇杩樻槸鍘傚尯 + MdcProduction mdcProduction = mdcProductionService.getOne(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getParentId, "")); + if (userType.equals(MdcConstant.USER_TYPE_4)) { + //鍏徃 + key = mdcProduction.getId(); + } else if (userType.equals(MdcConstant.USER_TYPE_3)) { + //鍘傚尯 + key = mdcProductionService.findFirstProduction(userId, mdcProduction.getId()); + } + } + List<MdcCommonVo> resultMap = mdcEquipmentService.getEquipmentStatusStatistics(userId, key); + return Result.OK(resultMap); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java index f9a3f07..2c844a6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java @@ -9,6 +9,7 @@ import org.jeecg.modules.mdc.dto.MdcEquDepDto; import org.jeecg.modules.mdc.dto.MdcEquProDto; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; +import org.jeecg.modules.mdc.entity.EquipmentLog; import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; import org.jeecg.modules.mdc.vo.MdcEquipmentDepVo; @@ -116,4 +117,6 @@ */ @InterceptorIgnore(tenantLine = "1") MdcEquipmentDto findWorkLineLast(@Param("tableName") String tableName); + + List<EquipmentLog> getEquipmentStatusList(@Param("equipmentIdList") List<String> equipmentIdList); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 4e0ace6..480d71e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -286,4 +286,20 @@ select top 1 spindlespeed, actualspindlespeed from [${tableName}] order by CollectTime desc </select> + <!--鏌ヨ璁惧鏈�鏂颁竴鏉℃暟鎹�--> + <select id="getEquipmentStatusList" resultType="org.jeecg.modules.mdc.entity.EquipmentLog"> + SELECT + t1.* + FROM + EquipmentLog t1 + INNER JOIN ( SELECT MAX ( CollectTime ) AS CollectTime, EquipmentID FROM EquipmentLog GROUP BY EquipmentID ) t2 ON t1.CollectTime= t2.CollectTime + AND t1.EquipmentID= t2.EquipmentID + <if test="equipmentIdList != null and equipmentIdList.size() > 0"> + AND t1.EquipmentID IN + <foreach collection="equipmentIdList" index="index" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </if> + </select> + </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java index 94628cd..198b5fe 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java @@ -9,6 +9,7 @@ import org.jeecg.modules.mdc.entity.MdcEquipment; import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; import org.jeecg.modules.mdc.model.MdcEquipmentTree; +import org.jeecg.modules.mdc.vo.MdcCommonVo; import org.jeecg.modules.mdc.vo.MdcEquipmentVo; import org.jeecg.modules.mdc.vo.WorkshopEquipmentVo; @@ -202,4 +203,9 @@ * @return */ MdcEquipmentDto getWorkLineLast(String tableName); + + /** + * 璁惧杩愯鐘舵�佺粺璁� + */ + List<MdcCommonVo> getEquipmentStatusStatistics(String userId, String key); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index 83817f6..1e21981 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java @@ -21,10 +21,7 @@ import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.FindsEquipmentDepartUtil; import org.jeecg.modules.mdc.util.FindsEquipmentProductionUtil; -import org.jeecg.modules.mdc.vo.MdcEquipmentDepVo; -import org.jeecg.modules.mdc.vo.MdcEquipmentProVo; -import org.jeecg.modules.mdc.vo.MdcEquipmentVo; -import org.jeecg.modules.mdc.vo.WorkshopEquipmentVo; +import org.jeecg.modules.mdc.vo.*; import org.jeecg.modules.system.entity.MdcEquipmentDepart; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.MdcProductionEquipment; @@ -852,4 +849,75 @@ return this.baseMapper.findWorkLineLast(tableName); } + /** + * 璁惧杩愯鐘舵�佺粺璁� + */ + @Override + public List<MdcCommonVo> getEquipmentStatusStatistics(String userId, String key) { + List<MdcCommonVo> result = new ArrayList<>(); + MdcCommonVo mdcCommonVo1 = new MdcCommonVo(); + mdcCommonVo1.setName("鍏虫満"); + mdcCommonVo1.setValue(0); + result.add(mdcCommonVo1); + MdcCommonVo mdcCommonVo2 = new MdcCommonVo(); + mdcCommonVo2.setName("鎶ヨ"); + mdcCommonVo2.setValue(0); + result.add(mdcCommonVo2); + MdcCommonVo mdcCommonVo3 = new MdcCommonVo(); + mdcCommonVo3.setName("寰呮満"); + mdcCommonVo3.setValue(0); + result.add(mdcCommonVo3); + MdcCommonVo mdcCommonVo4 = new MdcCommonVo(); + mdcCommonVo4.setName("杩愯"); + mdcCommonVo4.setValue(0); + result.add(mdcCommonVo4); + MdcEquipmentStatusVo mdcEquipmentStatusVo = new MdcEquipmentStatusVo(); + List<String> equipmentIdList = this.getEquipmentIdsProduction(userId, key); + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return result; + } + List<EquipmentLog> logList = this.baseMapper.getEquipmentStatusList(equipmentIdList); + if (logList != null && !logList.isEmpty()) { + for (EquipmentLog equipmentLog : logList) { + if (equipmentLog.getOporation() != null) { + switch (equipmentLog.getOporation()) { + case 1: + case 2: + mdcEquipmentStatusVo.setWaitCount(mdcEquipmentStatusVo.getWaitCount() + 1); + break; + case 3: + mdcEquipmentStatusVo.setRunCount(mdcEquipmentStatusVo.getRunCount() + 1); + break; + case 22: + mdcEquipmentStatusVo.setAlarmCount(mdcEquipmentStatusVo.getAlarmCount() + 1); + break; + default: + mdcEquipmentStatusVo.setCloseCount(mdcEquipmentStatusVo.getCloseCount() + 1); + break; + } + } else { + mdcEquipmentStatusVo.setCloseCount(mdcEquipmentStatusVo.getCloseCount() + 1); + } + } + } + result.clear(); + MdcCommonVo mdcCommonVo5 = new MdcCommonVo(); + mdcCommonVo5.setName("鍏虫満"); + mdcCommonVo5.setValue(mdcEquipmentStatusVo.getCloseCount()); + result.add(mdcCommonVo5); + MdcCommonVo mdcCommonVo6 = new MdcCommonVo(); + mdcCommonVo6.setName("鎶ヨ"); + mdcCommonVo6.setValue(mdcEquipmentStatusVo.getAlarmCount()); + result.add(mdcCommonVo6); + MdcCommonVo mdcCommonVo7 = new MdcCommonVo(); + mdcCommonVo7.setName("寰呮満"); + mdcCommonVo7.setValue(mdcEquipmentStatusVo.getWaitCount()); + result.add(mdcCommonVo7); + MdcCommonVo mdcCommonVo8 = new MdcCommonVo(); + mdcCommonVo8.setName("杩愯"); + mdcCommonVo8.setValue(mdcEquipmentStatusVo.getRunCount()); + result.add(mdcCommonVo8); + return result; + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcCommonVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcCommonVo.java new file mode 100644 index 0000000..d37ef5f --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcCommonVo.java @@ -0,0 +1,13 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +/** + * @author Lius + * @date 2024/3/13 18:02 + */ +@Data +public class MdcCommonVo { + private Integer value; + private String name; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentStatusVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentStatusVo.java new file mode 100644 index 0000000..4232a78 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEquipmentStatusVo.java @@ -0,0 +1,27 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +/** + * @author Lius + * @date 2024/3/13 15:43 + */ +@Data +public class MdcEquipmentStatusVo { + /** + * 杩愯 + */ + private Integer runCount = 0; + /** + * 鍏虫満 + */ + private Integer closeCount = 0; + /** + * 鎶ヨ + */ + private Integer alarmCount = 0; + /** + * 寰呮満 + */ + private Integer waitCount = 0; +} diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java index 7f40bfe..0b9f429 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java @@ -26,4 +26,12 @@ * 閫掑綊鏌ヨ鎵�鏈夊瓙鑺傜偣 */ List<String> recursionChildren(@Param("productionId") String productionId); + + /** + * 鏍规嵁鐢ㄦ埛id鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d + * @param userId + * @param productionId + * @return + */ + String findFirstProduction(@Param("userId") String userId, @Param("productionId") String productionId); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml index 2423393..e1cad5c 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml @@ -21,4 +21,9 @@ FROM temp </select> + + <!--鏍规嵁鐢ㄦ埛id鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d--> + <select id="findFirstProduction" resultType="java.lang.String"> + SELECT TOP 1 id FROM mdc_user_production t1 LEFT JOIN mdc_production t2 ON t1.pro_id = t2.id WHERE t1.user_id = #{ userId } AND t2.parent_id = #{productionId} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java index 79ecf8b..8dd86b9 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java @@ -70,4 +70,12 @@ */ List<String> recursionChildren(String productionId); + /** + * 鏍规嵁鐢ㄦ埛id鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d + * @param userId + * @param productionId + * @return + */ + String findFirstProduction(String userId, String productionId); + } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java index 4cfdc6a..d95c890 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java @@ -225,6 +225,17 @@ } /** + * 鏍规嵁鐢ㄦ埛id鍜岃溅闂磇d鑾峰彇鐢ㄦ埛鎷ユ湁鐨勮溅闂磇d + * @param userId + * @param productionId + * @return + */ + @Override + public String findFirstProduction(String userId, String productionId) { + return this.baseMapper.findFirstProduction(userId, productionId); + } + + /** * delete 鏂规硶璋冪敤 閫掑綊鏌ユ壘瀛愰泦id */ private void checkChildrenExists(String id, List<String> idList) { -- Gitblit v1.9.3