From cd00884c3db8fa6808b3b5949ab1a2b1459d6bdc Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期三, 11 六月 2025 10:36:55 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocRelativeController.java | 3 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java | 23 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java | 171 ++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml | 30 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java | 23 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/BaseTools.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java | 3 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java | 0 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRate.java | 20 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderQuery.java | 0 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java | 0 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamRepairOrderService.java | 0 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java | 13 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml | 14 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java | 1 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrderDetail.java | 0 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java | 13 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcAlarmInfoServiceImpl.java | 4 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java | 4 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceOrderDetail.java | 0 lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquStatus.java | 15 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebsocketPushEquStatusJob.java | 108 + lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrderDetail.java | 0 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java | 5 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrderDetail.java | 0 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java | 0 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java | 9 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java | 0 lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml | 14 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java | 10 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java | 70 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java | 10 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java | 85 + lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java | 340 +++++ lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 33 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java | 81 - lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentMapper.xml | 18 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java | 23 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java | 3 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/MultiPathMonitor.java | 66 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java | 99 + lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/WeekMaintenanceStandardImport.java | 0 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java | 8 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java | 39 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml | 6 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderResponse.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/DirectoryValidator.java | 22 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderRequest.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java | 13 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 29 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml | 13 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupServiceImpl.java | 23 lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOeeMonth.java | 20 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java | 2 lxzn-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java | 25 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamRepairOrderMapper.xml | 0 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/IMdcProductionService.java | 10 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java | 2 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/MdcProductionMapper.java | 4 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/ThirdMaintenanceStandardImport.java | 0 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcAlarmInfoMapper.xml | 9 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/mapper/xml/MdcProductionMapper.xml | 63 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml | 1 lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java | 12 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorBootstrap.java | 53 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportRepairQuery.java | 0 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java | 5 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java | 11 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java | 8 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcAlarmInfoService.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOperation.java | 16 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java | 6 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java | 0 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java | 135 + lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java | 30 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml | 0 lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java | 14 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquDowntimeInfo.java | 23 lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcAlarmInfoMapper.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRateMonth.java | 20 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java | 0 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml | 20 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamController.java | 10 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java | 3 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java | 3 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java | 3 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorConfig.java | 19 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java | 95 + lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/util/DateUtils.java | 1089 ++++++++++++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquRunInfo.java | 24 /dev/null | 74 - lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java | 23 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java | 9 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/SecondMaintenanceStandardImport.java | 0 lxzn-module-mdc/pom.xml | 5 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/MdcProductionServiceImpl.java | 10 lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java | 115 + lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAlarm.java | 21 112 files changed, 3,249 insertions(+), 270 deletions(-) diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java index 2343268..a258837 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java @@ -598,6 +598,11 @@ String DICT_MDC_STAFF_TEAM = "mdc_staff_team"; /** + * 椹卞姩鍙傛暟鍗曚綅瀛楀吀缂栧彿 + */ + String DICT_EQUIPMENT_RUN_UNIT = "equipment_run_unit"; + + /** * 鍔犵彮鏁版嵁 鑷姩璁$畻鏍囪瘑 1(鏄�) 2(鍚�) */ Integer AUTO_FLAG_Y = 1; @@ -612,8 +617,11 @@ */ String CLOSE_TYPE_0 = "0"; String CLOSE_TYPE_1 = "1"; - - String ORG_TYPE = "3"; + /** + * 浜х嚎绫诲瀷 1涓�绾ч儴闂� 2瀛愰儴闂� 3瀛愰儴闂� + */ + String ORG_TYPE_2 = "2"; + String ORG_TYPE_3 = "3"; Integer SHIFT_TYPE_1 = 1; Integer SHIFT_TYPE_2 = 2; diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java b/lxzn-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java index 55417e1..bfbd96a 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/config/filter/WebsocketFilter.java @@ -14,6 +14,7 @@ /** * websocket 鍓嶇灏唗oken鏀惧埌瀛愬崗璁噷浼犲叆 涓庡悗绔缓绔嬭繛鎺ユ椂闇�瑕佺敤鍒癶ttp鍗忚锛屾澶勭敤浜庢牎楠宼oken鐨勬湁鏁堟�� + * * @Author taoYan * @Date 2022/4/21 17:01 **/ @@ -34,20 +35,22 @@ if (redisUtil == null) { redisUtil = SpringContextUtils.getBean(RedisUtil.class); } - HttpServletRequest request = (HttpServletRequest)servletRequest; - String token = request.getHeader(TOKEN_KEY); + HttpServletRequest request = (HttpServletRequest) servletRequest; + if (request.getHeader(TOKEN_KEY) != null) { + String token = request.getHeader(TOKEN_KEY); - log.debug("Websocket杩炴帴 Token瀹夊叏鏍¢獙锛孭ath = {}锛宼oken:{}", request.getRequestURI(), token); + log.debug("Websocket杩炴帴 Token瀹夊叏鏍¢獙锛孭ath = {}锛宼oken:{}", request.getRequestURI(), token); - try { - TokenUtils.verifyToken(token, commonApi, redisUtil); - } catch (Exception exception) { - //log.error("Websocket杩炴帴 Token瀹夊叏鏍¢獙澶辫触锛孖P:{}, Token:{}, Path = {}锛屽紓甯革細{}", oConvertUtils.getIpAddrByRequest(request), token, request.getRequestURI(), exception.getMessage()); - log.debug("Websocket杩炴帴 Token瀹夊叏鏍¢獙澶辫触锛孖P:{}, Token:{}, Path = {}锛屽紓甯革細{}", oConvertUtils.getIpAddrByRequest(request), token, request.getRequestURI(), exception.getMessage()); - return; + try { + TokenUtils.verifyToken(token, commonApi, redisUtil); + } catch (Exception exception) { + //log.error("Websocket杩炴帴 Token瀹夊叏鏍¢獙澶辫触锛孖P:{}, Token:{}, Path = {}锛屽紓甯革細{}", oConvertUtils.getIpAddrByRequest(request), token, request.getRequestURI(), exception.getMessage()); + log.debug("Websocket杩炴帴 Token瀹夊叏鏍¢獙澶辫触锛孖P:{}, Token:{}, Path = {}锛屽紓甯革細{}", oConvertUtils.getIpAddrByRequest(request), token, request.getRequestURI(), exception.getMessage()); + return; + } + HttpServletResponse response = (HttpServletResponse) servletResponse; + response.setHeader(TOKEN_KEY, token); } - HttpServletResponse response = (HttpServletResponse)servletResponse; - response.setHeader(TOKEN_KEY, token); filterChain.doFilter(servletRequest, servletResponse); } diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java b/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java index 982587e..93a33b0 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java @@ -99,6 +99,7 @@ filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //鐩戝惉鎵爜 filterChainDefinitionMap.put("/sys/checkAuth", "anon"); //鎺堟潈鎺ュ彛鎺掗櫎 filterChainDefinitionMap.put("/msi/**", "anon"); //闆嗘垚鎺ュ彛 + filterChainDefinitionMap.put("/board/dtBoard/**", "anon"); //鏁板瓧瀛敓鐪嬫澘鎺ュ彛鎺掗櫎 filterChainDefinitionMap.put("/", "anon"); filterChainDefinitionMap.put("/doc.html", "anon"); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocRelativeController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocRelativeController.java index 8b77545..177f4b2 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocRelativeController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/controller/DocRelativeController.java @@ -5,7 +5,6 @@ import lombok.extern.slf4j.Slf4j; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; -import org.jeecg.modules.dnc.entity.DeviceInfo; import org.jeecg.modules.dnc.entity.DocRelative; import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.response.QueryListResponseResult; @@ -30,7 +29,7 @@ @ApiOperation(value = "璁惧鍏宠仈鏂囨。琛�-鍒犻櫎璁惧涓嬬殑鏂囨。鎺ュ彛", notes = "璁惧鍏宠仈鏂囨。琛�-鍒犻櫎璁惧涓嬬殑鏂囨。鎺ュ彛") @DeleteMapping("/delete/device/{docId}/{deviceId}") public ResponseResult deleteDocByDeviceId(@PathVariable("docId") String docId, @PathVariable("deviceId") String deviceId) { - boolean b = relativeService.deleteDocByAttr(docId, 4, deviceId); + boolean b = relativeService.deleteDocByAttr(docId, 7, deviceId); if(b) return new ResponseResult(CommonCode.SUCCESS); return new ResponseResult(CommonCode.FAIL); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/DirectoryValidator.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/DirectoryValidator.java new file mode 100644 index 0000000..d81e2ea --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/DirectoryValidator.java @@ -0,0 +1,22 @@ +package org.jeecg.modules.dnc.listener; +import java.io.File; +import java.util.List; + +public class DirectoryValidator { + public static void validatePaths(List<String> paths) { + //鏍规嵁閰嶇疆鐨勭洰褰曡繘琛屾牎楠岋紝鍙互淇敼yml鏂囦欢瀵瑰簲鐨勭洃鎺х洰褰曟潵鏀瑰彉鏍¢獙鏁伴噺 + if (paths == null || paths.size() < 3) { + throw new IllegalArgumentException("蹇呴』閰嶇疆涓変釜鐩戞帶鐩綍"); + } + + for (String path : paths) { + File dir = new File(path); + if (!dir.exists() || !dir.isDirectory()) { + throw new IllegalArgumentException("鏃犳晥鐨勭洃鎺х洰褰�: " + path); + } + if (!dir.canRead()) { + throw new SecurityException("鐩綍涓嶅彲璇�: " + path); + } + } + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java new file mode 100644 index 0000000..59eb0af --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileListener.java @@ -0,0 +1,115 @@ +package org.jeecg.modules.dnc.listener; +import org.apache.commons.io.monitor.FileAlterationListener; +import org.apache.commons.io.monitor.FileAlterationObserver; +import org.jeecg.common.util.FileUtil; +import org.jeecg.modules.dnc.service.IDocInfoService; +import org.jeecg.modules.dnc.utils.file.FileUtilS; +import org.jeecg.modules.message.enums.DeployEnum; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import java.io.File; +import java.util.Objects; + +@Component +public class FileListener implements FileAlterationListener { + private static final Logger log = LoggerFactory.getLogger(FileListener.class); + + @Value("${deploy.deployType}") + private String deployType; //宸ユ帶缃�/娑夊瘑缃戦儴缃� 0涓哄伐鎺х綉 1涓烘秹瀵嗙綉 + + @Autowired + private IDocInfoService docInfoService; // 鏂囨。鏈嶅姟 + + @Override + public void onStart(FileAlterationObserver observer) { + log.info("寮�濮嬬洃鍚洰褰�: {}", observer.getDirectory().getAbsolutePath()); + } + + @Override + public void onDirectoryCreate(File directory) { + log.info("[鐩綍鍒涘缓]: {}", directory.getAbsolutePath()); + } + + @Override + public void onDirectoryChange(File directory) { + log.info("[鐩綍淇敼]: {}", directory.getAbsolutePath()); + } + + @Override + public void onDirectoryDelete(File directory) { + log.info("[鐩綍鍒犻櫎]: {}", directory.getAbsolutePath()); + } + + @Override + public void onFileCreate(File file) { + String filePath = file.getAbsolutePath(); + log.info("[鏂板缓]: {}", filePath); + if (DeployEnum.GW.getCode().equals(deployType)) { + //宸ユ帶缃戣В鏋愭秹瀵嗙綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽 + if (filePath.startsWith("D:\\hy_test\\ncFile")) { + handleIndustrialDocFile(file); + } + }else { + //娑夊瘑缃戣В鏋愬伐鎺х綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽锛堢▼搴忓洖浼狅級 + if (filePath.startsWith("D:\\hy_test\\ncFile")) { + handleSecretDocFile(file); + } + } + } + @Override + public void onFileChange(File file) { + log.info("[淇敼]: {}", file.getAbsolutePath()); + } + + @Override + public void onFileDelete(File file) { + log.info("[鍒犻櫎]: {}", file.getAbsolutePath()); + } + + @Override + public void onStop(FileAlterationObserver observer) { + log.info("缁撴潫鐩戝惉鐩綍: {}", observer.getDirectory().getAbsolutePath()); + } + + /** + * 宸ユ帶缃戣В鏋愭秹瀵嗙綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽 + * @param file + */ + private void handleIndustrialDocFile(File file) { + log.info("宸ユ帶缃戣В鏋愭秹瀵嗙綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", file.getAbsolutePath()); + try { + if (Objects.equals(FileUtil.getFileSuffix(file.getName()), "nc")) { + boolean success = docInfoService.addDocInfoAnalysisGwNcService(file.getAbsolutePath(), file); + if (success) { + FileUtilS.copyFileRec(file.getAbsolutePath()); + FileUtilS.fileRecDelete(file.getAbsolutePath()); + } + }else if (Objects.equals(FileUtil.getFileSuffix(file.getName()), "txt")) { + //todo 鏄惁瑙f瀽宸ヤ綔娴佹搷浣� + + } + } catch (Exception e) { + log.error("宸ユ帶缃戣В鏋愭秹瀵嗙綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", e.getMessage()); + } + } + + /** + * 娑夊瘑缃戣В鏋愬伐鎺х綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽锛堢▼搴忓洖浼狅級 + * @param file + */ + private void handleSecretDocFile(File file) { + log.info("娑夊瘑缃戣В鏋愬伐鎺х綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", file.getAbsolutePath()); + try { + boolean b= docInfoService.addDocInfoAnalysisSmwNcService(file.getAbsolutePath(), file); + + }catch (Exception e) { + log.error("娑夊瘑缃戣В鏋愬伐鎺х綉浼犺繃鏉ョ殑NC鏂囦欢涓巒c鏂囦欢杩涜瑙f瀽: {}", e.getMessage()); + } + } + + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorBootstrap.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorBootstrap.java new file mode 100644 index 0000000..e6b3d86 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorBootstrap.java @@ -0,0 +1,53 @@ +package org.jeecg.modules.dnc.listener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.web.servlet.ServletContextInitializer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class FileMonitorBootstrap implements ApplicationRunner { + + private MultiPathMonitor monitor; + + @Autowired + private FileMonitorConfig config; + + @Autowired + private FileListener listener; + + @Bean + public MultiPathMonitor fileMonitor() { + return new MultiPathMonitor( + config.getPaths(), + config.getInterval(), + listener + ); + } + + @Override + public void run(ApplicationArguments args) throws Exception { + monitor = fileMonitor(); + monitor.start(); + } + + // 鍦ㄥ簲鐢ㄥ叧闂椂鍋滄鐩戞帶 + @Bean + public ServletContextInitializer stopMonitorOnShutdown() { + return servletContext -> { + servletContext.addListener(new javax.servlet.ServletContextListener() { + @Override + public void contextDestroyed(javax.servlet.ServletContextEvent sce) { + try { + if (monitor != null) { + monitor.stop(); + } + } catch (Exception e) { + System.err.println("鍋滄鐩戞帶鏃跺嚭閿�: " + e.getMessage()); + } + } + }); + }; + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorConfig.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorConfig.java new file mode 100644 index 0000000..8be5968 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/FileMonitorConfig.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.dnc.listener; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; + +@Setter +@Getter +@Component +@ConfigurationProperties(prefix = "file.monitor") +public class FileMonitorConfig { + private List<String> paths = new ArrayList<>(); + private long interval = 10000L; // 榛樿10绉� + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/MultiPathMonitor.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/MultiPathMonitor.java new file mode 100644 index 0000000..267dfc8 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/listener/MultiPathMonitor.java @@ -0,0 +1,66 @@ +package org.jeecg.modules.dnc.listener; +import org.apache.commons.io.monitor.FileAlterationMonitor; +import org.apache.commons.io.monitor.FileAlterationObserver; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.File; +import java.util.List; + +public class MultiPathMonitor { + private static final Logger log = LoggerFactory.getLogger(MultiPathMonitor.class); + + private final List<String> paths; + private final FileListener listener; + private final long interval; + private final FileAlterationMonitor monitor; + + public MultiPathMonitor(List<String> paths, long interval, FileListener listener) { + // 楠岃瘉鐩綍 + DirectoryValidator.validatePaths(paths); + this.paths = paths; + this.interval = interval; + this.listener = listener; + this.monitor = new FileAlterationMonitor(interval); + } + + public void start() { + // 涓烘瘡涓矾寰勫垱寤虹嫭绔嬬殑瑙傚療鑰� + paths.forEach(path -> { + FileAlterationObserver observer = new FileAlterationObserver(new File(path)); + observer.addListener(listener); + monitor.addObserver(observer); + log.info("寮�濮嬬洃鎺х洰褰�: {}", path); + }); + + try { + monitor.start(); + log.info("鏂囦欢鐩戞帶鍣ㄥ凡鍚姩锛岀洃鎺х洰褰曟暟閲�: {}", paths.size()); + } catch (Exception e) { + log.error("鐩戞帶鍚姩澶辫触", e); + throw new RuntimeException("鐩戞帶鍚姩澶辫触", e); + } + } + + public void stop() throws Exception { + if (monitor != null) { + monitor.stop(); + log.info("鏂囦欢鐩戞帶鍣ㄥ凡鍋滄"); + } + } + + // 鍔ㄦ�佹坊鍔犳柊鐩綍 + public void addMonitorPath(String newPath) { + File dir = new File(newPath); + if (!dir.exists() || !dir.isDirectory() || !dir.canRead()) { + log.error("鏃犳硶娣诲姞鏃犳晥鐩綍: {}", newPath); + return; + } + + FileAlterationObserver newObserver = new FileAlterationObserver(dir); + newObserver.addListener(listener); + monitor.addObserver(newObserver); + paths.add(newPath); + log.info("鏂板鐩戞帶鐩綍: {}", newPath); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml index 751da89..f725e8d 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/mapper/xml/DocInfoMapper.xml @@ -66,6 +66,7 @@ ,u.doc_status ,u.publish_file_id ,u.publish_version + ,u.doc_dispatch_status ,u.description ,u.CREATE_TIME ,u.create_by diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java index 6696d49..15990e5 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/IDocInfoService.java @@ -14,6 +14,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.FileNotFoundException; import java.util.List; public interface IDocInfoService extends IService<DocInfo> { @@ -47,6 +48,28 @@ */ boolean addDocInfoRec(String pathFile,File fileRec); + /** + * 瑙f瀽NC鏂囨。閫氱敤鏂规硶锛堝伐鎺цВ鏋愭秹瀵嗭級 + * @param pathFile,fileRec + * @return + */ + boolean addDocInfoAnalysisGwNcService(String pathFile,File fileRec) throws FileNotFoundException; + + /** + * 绋嬪簭鍥炰紶锛堟秹瀵嗚В鏋愬伐鎺э級 + * @param pathFile + */ + boolean addDocInfoAnalysisSmwNcService(String pathFile,File fileRec); + + /** + * 鏂囨。瑙f瀽 + * @param equipmentId + * @param fileRec + * @param fileNameSuffix + * @param fileNameNew + * @param filePath + * @return + */ boolean addDocInfoRecService(String equipmentId,File fileRec,String fileNameSuffix,String fileNameNew,String filePath ); /** * 鍏ュ簱鎿嶄綔 鏂囨。瀵瑰簲鏂囦欢鍗囩増 diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java index 07d23d7..2d1c271 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/CutterServiceImpl.java @@ -182,7 +182,18 @@ List<Cutter> cutterList = extractToolAfterM6(docInfo,list); // 淇濆瓨鍒�鍏� if (!cutterList.isEmpty()) { - this.saveBatch(cutterList); + List<Cutter> newCutterList = new ArrayList<>(); + //楠岃瘉鍒�鍏锋槸鍚﹀凡缁忓瓨鍦� + cutterList.forEach(item -> { + List<Cutter> otherCuttersWithSameNo = checkCutterNo(item); + if (otherCuttersWithSameNo == null || otherCuttersWithSameNo.isEmpty()) { + newCutterList.add(item); + } + }); + if (newCutterList.isEmpty()) { + return Result.error("鏈彂鐜板垁鍏风殑鍙傛暟淇℃伅娉ㄩ噴锛屾棤娉曟彁鍙栧垁鍏蜂俊鎭�"); + } + this.saveBatch(newCutterList); //TODO鍙戦�佸垁鍏风鐞嗘暟鎹� return Result.OK("鎻愬彇鍒�鍏蜂俊鎭垚鍔�"); }else { diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupServiceImpl.java index 539911d..b6cf3d5 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DeviceGroupServiceImpl.java @@ -1,27 +1,21 @@ package org.jeecg.modules.dnc.service.impl; -import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.apache.shiro.SecurityUtils; -import org.jeecg.common.system.vo.LoginUser; +import org.apache.commons.lang3.StringUtils; import org.jeecg.modules.dnc.dto.DeviceGroupExt; - +import org.jeecg.modules.dnc.entity.DeviceGroup; +import org.jeecg.modules.dnc.entity.DeviceGroupPermission; +import org.jeecg.modules.dnc.entity.DevicePermissionStream; import org.jeecg.modules.dnc.exception.ExceptionCast; import org.jeecg.modules.dnc.mapper.DeviceGroupMapper; import org.jeecg.modules.dnc.response.CommonCode; import org.jeecg.modules.dnc.response.DeviceGroupCode; -import org.jeecg.modules.dnc.response.UcenterCode; - -import org.jeecg.modules.dnc.service.*; -import org.jeecg.modules.dnc.ucenter.Department; +import org.jeecg.modules.dnc.service.IDeviceGroupPermissionService; +import org.jeecg.modules.dnc.service.IDeviceGroupService; +import org.jeecg.modules.dnc.service.IDevicePermissionStreamService; import org.jeecg.modules.dnc.utils.ValidateUtil; -import org.jeecg.modules.dnc.entity.*; import org.jeecg.modules.system.entity.SysUser; -import org.jeecg.modules.dnc.utils.file.FileUtilS; -import org.apache.commons.lang3.StringUtils; - import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -36,9 +30,6 @@ private IDeviceGroupPermissionService groupPermissionService; @Autowired private IDevicePermissionStreamService devicePermissionStreamService; - @Autowired - @Lazy - private IDeviceInfoService deviceInfoService; // 鏌ヨ鎵�浠ョ埗鑺傜偣 diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java index d6de4b9..a32370c 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocInfoServiceImpl.java @@ -16,6 +16,8 @@ import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.dnc.entity.*; import org.jeecg.modules.dnc.exception.ExceptionCast; +import org.jeecg.modules.dnc.ext.NcTxtFilePathInfo; +import org.jeecg.modules.dnc.listener.FileMonitorConfig; import org.jeecg.modules.dnc.mapper.DocInfoMapper; import org.jeecg.modules.dnc.request.DocInfoQueryRequest; import org.jeecg.modules.dnc.request.DocInfoUploadRequest; @@ -27,7 +29,9 @@ import org.jeecg.modules.dncFlow.entity.DispatchFile; import org.jeecg.modules.dncFlow.service.IDispatchFileService; import org.jeecg.modules.mdc.entity.MdcEquipment; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.system.entity.SysParams; +import org.jeecg.modules.system.service.IMdcProductionService; import org.jeecg.modules.system.service.ISysParamsService; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -39,13 +43,22 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Scanner; import java.util.stream.Collectors; @Service public class DocInfoServiceImpl extends ServiceImpl<DocInfoMapper, DocInfo> implements IDocInfoService { + @Autowired + private FileMonitorConfig config; + @Autowired + private IMdcEquipmentService iMdcEquipmentService; + @Autowired + private IMdcProductionService iMdcProductionService; @Autowired private IDocClassificationService docClassificationService; @Autowired @@ -55,11 +68,6 @@ @Autowired @Lazy private IDocRelativeService docRelativeService; - @Autowired - @Lazy - private IDeviceInfoService deviceInfoService; - @Autowired - private IDeviceGroupService deviceGroupService; @Autowired private IDispatchFileService dispatchFileService; @Autowired @@ -134,28 +142,28 @@ docInfo.setPublishVersion(docFile.getDocVersion()); docInfo.setPublishFileId(docFile.getFileId()); //COPY - DeviceInfo deviceInfo= deviceInfoService.getById(uploadRequest.getAttributionId()); - if (deviceInfo != null) { - List<String> strings = deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId()); + MdcEquipment mdcEquipment= iMdcEquipmentService.getById(uploadRequest.getAttributionId()); + if (mdcEquipment != null) { + List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getId()); boolean copyFileNc = false; if (strings != null && !strings.isEmpty()) { String path = org.apache.commons.lang3.StringUtils.join(strings.toArray(), "/"); copyFileNc = FileUtilS.copyFile(fileUploadResult.getFilePath()+"/" + fileUploadResult.getFileEncodeName(), - path+ "/" + deviceInfo.getDeviceNo() ,fileNameAll); + path+ "/" + mdcEquipment.getEquipmentId() ,fileNameAll); if (!copyFileNc) { ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); } else { - FileUtilS.deleteZipFromToSend(path + "/"+ deviceInfo.getDeviceNo(), + FileUtilS.deleteZipFromToSend(path + "/"+ mdcEquipment.getEquipmentId(), docFile.getFileName(),docFile.getFileSuffix()); } } else { copyFileNc =FileUtilS.copyFile(fileUploadResult.getFilePath()+"/" + fileUploadResult.getFileEncodeName(), - deviceInfo.getDeviceNo() ,fileNameAll); + mdcEquipment.getEquipmentId() ,fileNameAll); if (!copyFileNc) { ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); } else { - FileUtilS.deleteZipFromToSend(fileUploadResult.getFilePath()+"/" + fileUploadResult.getFileEncodeName() + "/"+ deviceInfo.getDeviceNo(), + FileUtilS.deleteZipFromToSend(fileUploadResult.getFilePath()+"/" + fileUploadResult.getFileEncodeName() + "/"+ mdcEquipment.getEquipmentId(), docFile.getFileName(),docFile.getFileSuffix()); } @@ -212,8 +220,8 @@ if (StringUtils.isEmpty(deviceNo)) { return false; } - DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(deviceNo); - if (deviceInfo == null) { + MdcEquipment mdcEquipment = iMdcEquipmentService.findEquipmentNameByEquipmentId(deviceNo); + if (mdcEquipment == null) { return false; } String fileName = FileUtilS.getFilenameNonSuffix(file.getOriginalFilename()); @@ -222,7 +230,7 @@ if(fileUploadResult == null) { return false; } - DocInfo en = findByAttrAndDocName(fileName, 4, deviceInfo.getDeviceId()); + DocInfo en = findByAttrAndDocName(fileName, 7, mdcEquipment.getId()); if(en != null) { return false; } @@ -235,9 +243,9 @@ docInfo.setDocStatus(1); docInfo.setSyncStatus(2); DocRelative docRelative = new DocRelative(); - docRelative.setAttributionId(deviceInfo.getDeviceId()); + docRelative.setAttributionId(mdcEquipment.getId()); docRelative.setDocId(docInfo.getDocId()); - docRelative.setAttributionType(4); + docRelative.setAttributionType(7); docRelative.setClassificationId(docClass.getClassificationId()); boolean b = docRelativeService.save(docRelative); if(!b) { @@ -260,6 +268,84 @@ return saveBool; } + /** + * 瑙f瀽NC鏂囨。閫氱敤鏂规硶 + * @param pathFile,fileRec + * @return + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean addDocInfoAnalysisGwNcService(String pathFile,File file) throws FileNotFoundException { + String line; + int count = 0; + String loFilePath = config.getPaths().get(0)+"/" + file.getName(); + FileInputStream fis = new FileInputStream(loFilePath); + NcTxtFilePathInfo result = new NcTxtFilePathInfo(); + Scanner sc = new Scanner(fis, "UTF-8"); + while (count < 8 && sc.hasNext()) { + line = sc.nextLine(); + if (count ==0) { + result.setFileTxtName(line.trim()); + } else if (count ==1) { + result.setFileNcName(line.trim()); + }else if (count ==2) { + result.setOrigFileName(line.trim()); + }else if (count ==3) { + result.setOrigFileSuffix(line.trim()); + }else if (count ==4) { + result.setFilePath(line.trim()); + }else if (count ==5) { + result.setEquipmentId(line.trim()); + }else if (count ==6) { + result.setFileAddOrDelete(Integer.valueOf(line.trim())); + }else if (count == 7) { + result.setFileSize(line.trim()); + } + count++; + } + sc.close(); + if (result.getFileAddOrDelete() != null ) { + if ( result.getFileAddOrDelete()==1) { + String path = config.getPaths().get(0) +"/" + result.getFileNcName()+ ".NC"; + if (org.apache.commons.lang3.StringUtils.isNotBlank(result.getFileNcName()) && + result.getFileNcName().equals("null")) { + //鏂囦欢寰呭鐞� + //澶囦唤鏁版嵁 + FileUtilS.deleteFileNewRec(loFilePath); + } + File ncFile = new File(path); + //宸茬粡瀛樺湪鏂囦欢闇�瑕佸浠� + String size = String.valueOf(ncFile.length()); + if (!size.equals(result.getFileSize())) { + return false; + } + boolean bool = this.addDocInfoRecService(result.getEquipmentId(), + ncFile,result.getOrigFileSuffix(), + FileUtilS.getFilenameNonSuffix(result.getOrigFileName()) + ,result.getFilePath()); + if (bool) { + FileUtilS.deleteFileNewRec(path); + FileUtilS.deleteFileNewRec(loFilePath); + }else { + return false; + } + } + } + return true; + } + + + /** + * 绋嬪簭鍥炰紶锛堟秹瀵嗚В鏋愬伐鎺э級 + * @param pathFile + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public boolean addDocInfoAnalysisSmwNcService(String pathFile,File fileRec){ + //todo 绋嬪簭鍥炰紶 + return true; + } + @Override @Transactional(rollbackFor = {Exception.class}) public boolean addDocInfoRecService(String equipmentId,File fileRec,String fileNameSuffix,String fileNameNew,String filePath ) { @@ -272,12 +358,11 @@ ExceptionCast.cast(DocumentCode.DOC_CLASS_ERROR); } //鏍规嵁璁惧缂栧彿鏌ヨ鏁版嵁 - String deviceNo = equipmentId; - if (StringUtils.isEmpty(deviceNo)) { + if (StringUtils.isEmpty(equipmentId)) { return false; } - DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(deviceNo); - if (deviceInfo == null) { + MdcEquipment mdcEquipment = iMdcEquipmentService.findEquipmentNameByEquipmentId(equipmentId); + if (mdcEquipment == null) { return false; } String fileName = FileUtilS.getFilenameNonSuffix(file.getOriginalFilename()); @@ -286,7 +371,7 @@ if(fileUploadResult == null) { return false; } - DocInfo en = findByAttrAndDocName(fileName, 4, deviceInfo.getDeviceId()); + DocInfo en = findByAttrAndDocName(fileName, 7, mdcEquipment.getId()); if(en != null) { return false; } @@ -299,9 +384,9 @@ docInfo.setDocStatus(1); docInfo.setSyncStatus(2); DocRelative docRelative = new DocRelative(); - docRelative.setAttributionId(deviceInfo.getDeviceId()); + docRelative.setAttributionId(mdcEquipment.getId()); docRelative.setDocId(docInfo.getDocId()); - docRelative.setAttributionType(4); + docRelative.setAttributionType(7); docRelative.setClassificationId(docClass.getClassificationId()); boolean b = docRelativeService.save(docRelative); if(!b) { @@ -678,7 +763,7 @@ public boolean deleteByDeviceId(String deviceId) { if(!ValidateUtil.validateString(deviceId)) ExceptionCast.cast(CommonCode.INVALID_PARAM); - Integer attrType = 4; + Integer attrType = 7; /*boolean b = docFileService.deleteByDocAttr(attrType, deviceId); if(!b) ExceptionCast.cast(CommonCode.FAIL); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java index 0661d61..768e547 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/DocRelativeServiceImpl.java @@ -11,8 +11,6 @@ import org.jeecg.modules.dnc.mapper.DocInfoMapper; import org.jeecg.modules.dnc.mapper.DocRelativeMapper; import org.jeecg.modules.dnc.response.CommonCode; -import org.jeecg.modules.dnc.service.IDeviceGroupService; -import org.jeecg.modules.dnc.service.IDeviceInfoService; import org.jeecg.modules.dnc.service.IDocRelativeService; import org.jeecg.modules.dnc.utils.ValidateUtil; import org.jeecg.modules.dnc.utils.date.DateUtil; @@ -31,12 +29,6 @@ @Autowired private DocInfoMapper docInfoMapper; - @Autowired - private IDeviceInfoService deviceInfoService; - @Autowired - private IDeviceGroupService deviceGroupService; -// @Value("${securedoc.localFilePath}") -// private String localFilePath; @Autowired private IMdcEquipmentService iMdcEquipmentService; @Autowired diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java index 1061927..183133e 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/GuideCardBatchServiceImpl.java @@ -83,7 +83,7 @@ } // 鎷兼帴瀹屾暣缂栧彿 - return yearSuffix + code + user.getUsername() + serialSuffix; + return yearSuffix+"-"+ code+"-"+ user.getUsername()+"-"+ serialSuffix; } /** diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java index f033e30..82587b2 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dnc/service/impl/ProcessStreamServiceImpl.java @@ -19,6 +19,8 @@ import org.jeecg.modules.dnc.response.*; import org.jeecg.modules.dnc.service.*; import org.jeecg.modules.dnc.utils.ValidateUtil; +import org.jeecg.modules.mdc.entity.MdcEquipment; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.SysUser; import org.springframework.beans.factory.annotation.Autowired; @@ -39,8 +41,7 @@ @Autowired private IProcessSpecVersionService processSpecVersionService; @Autowired - @Lazy - private IDeviceInfoService deviceInfoService; + private IMdcEquipmentService mdcEquipmentService; @Autowired private IPermissionStreamNewService permissionStreamNewService; @Autowired @@ -259,8 +260,8 @@ public List<ProcessStream> validateDeviceProcessInfo(String pnCode, String deviceNo) { if(!ValidateUtil.validateString(pnCode) || !ValidateUtil.validateString(deviceNo)) ExceptionCast.cast(CommonCode.INVALID_PARAM); - DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(deviceNo); - if(deviceInfo == null) + MdcEquipment mdcEquipment = mdcEquipmentService.findEquipmentNameByEquipmentId(deviceNo); + if(mdcEquipment == null) ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST); PermissionStream stream = componentInfoService.validateComponentOrPartsPnCode(pnCode); if(stream == null) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamController.java index 5b8d49b..26ae973 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/AssignFileStreamController.java @@ -88,16 +88,6 @@ return new DataResponseResult<>(CommonCode.SUCCESS, b); } - @AutoLog(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊") - @ApiOperation(value = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊", notes = "DNC鎸囨淳璁惧娴佺▼鎿嶄綔-鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊") - @PostMapping("/transfer/doc") - public ResponseResult transferDocFile(String pnCode, String deviceNo) { - boolean b = assignFileStreamService.transferDocFile(pnCode, deviceNo); - if(b) - return new ResponseResult(CommonCode.SUCCESS); - return new ResponseResult(CommonCode.FAIL); - } - @GetMapping(value = "/selectVoById") public Result<AssignFileStream> selectVoById(@RequestParam(name="id") String id){ return Result.OK(assignFileStreamService.getAssignFileStreamDetail(id)); diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java index 28cb20d..dc0ef87 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/IAssignFileStreamService.java @@ -84,12 +84,4 @@ * @return */ Boolean getFlowableEnable(); - - /** - * 鎵爜浼犺緭绋嬪簭 涓嶇粡杩囧鎵� 鏂囦欢瀛樺湪閲囩敤瑕嗙洊 - * @param pnCode - * @param deviceNo - * @return - */ - boolean transferDocFile(String pnCode, String deviceNo); } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java index a287e73..70ab35e 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/service/impl/AssignFileStreamServiceImpl.java @@ -25,7 +25,6 @@ import org.jeecg.modules.dnc.utils.date.DateUtil; import org.jeecg.modules.dnc.utils.file.FileUtilS; import org.jeecg.modules.dncFlow.entity.AssignFileStream; -import org.jeecg.modules.dncFlow.entity.ToEquipmentTask; import org.jeecg.modules.dncFlow.ext.AssignFileStreamExt; import org.jeecg.modules.dncFlow.mapper.AssignFileStreamMapper; import org.jeecg.modules.dncFlow.request.ApproveBatchRequest; @@ -33,7 +32,6 @@ import org.jeecg.modules.dncFlow.request.AssignFileStreamQueryRequest; import org.jeecg.modules.dncFlow.request.TaskRequest; import org.jeecg.modules.dncFlow.service.IAssignFileStreamService; -import org.jeecg.modules.dncFlow.service.IToEquipmentTaskService; import org.jeecg.modules.dncFlow.vo.AssignFlowTaskVo; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; @@ -73,13 +71,7 @@ @Autowired private IDocInfoService docInfoService; @Autowired - private IProcessStreamService processStreamService; - @Autowired private IDocClassificationService classificationService; - @Autowired - private IToEquipmentTaskService equipmentTaskService; - @Autowired - private IDeviceInfoService deviceInfoService; @Autowired private IDocFileService docFileService; @Autowired @@ -107,11 +99,9 @@ @Autowired private IDncPassLogService dncPassLogService; @Value("${deploy.deployType}") - //宸ユ帶缃�/娑夊瘑缃戦儴缃� 0涓哄伐鎺х綉 1涓烘秹瀵嗙綉 - private String deployType; + private String deployType; //宸ユ帶缃�/娑夊瘑缃戦儴缃� 0涓哄伐鎺х綉 1涓烘秹瀵嗙綉 @Value("${deploy.secretFolder}") - //娑夊瘑缃戜紶杈搉c鏂囦欢澶� - private String secretFolder; + private String secretFolder; //娑夊瘑缃戜紶杈搉c鏂囦欢澶� @Override @Transactional(rollbackFor = {Exception.class}) @@ -138,7 +128,6 @@ */ public String getDeviceSpecialChar(String deviceId, String fileId){ //鏇挎崲涓簃dc璁惧琛� -// DeviceInfo deviceInfo = deviceInfoService.getById(deviceId); MdcEquipment mdcEquipment = iMdcEquipmentService.getById(deviceId); if(mdcEquipment == null) ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); @@ -232,6 +221,9 @@ //鏉冮檺鏍¢獙 validateParams(stream); DocInfo docInfo = getDocInfo(stream); + //淇敼鍘熸湁鐘舵�� + docInfo.setDocDispatchStatus(4); + docInfoService.updateById(docInfo); MdcEquipment mdcEquipment = getMdcEquipment(stream); DocFile docFile = getDocFile(stream); DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(stream.getDocId(), 7, stream.getDeviceId()); @@ -344,6 +336,9 @@ DocFile docFile = docFileService.getById(en.getFileId()); if(docFile == null) ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); + //淇敼鍘熸湁鐘舵�� + docInfo.setDocDispatchStatus(4); + docInfoService.updateById(docInfo); DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(en.getDocId(),7, en.getDeviceId()); if(deviceDoc != null) { // 鍒犻櫎 澶囦唤 瑕嗙洊 鍘熸湁鐨� @@ -487,64 +482,6 @@ return false; } - @Override - @Transactional(rollbackFor = {Exception.class}) - public boolean transferDocFile(String pnCode, String deviceNo) { - List<ProcessStream> streams = processStreamService.validateDeviceProcessInfo(pnCode, deviceNo); - DeviceInfo deviceInfo = deviceInfoService.getByDeviceNo(deviceNo); - if(deviceInfo == null) - ExceptionCast.cast(DeviceCode.DEVICE_NOT_EXIST); - //鍒犻櫎鍘熸潵璁惧涓嬬殑鎵�鏈夋枃妗� - docRelativeService.deleteByDocAttr(7, deviceInfo.getDeviceId()); - List<DocInfo> docInfoList = docInfoService.getByProcessIds(streams); - if(docInfoList == null || docInfoList.isEmpty()) - ExceptionCast.cast(DocumentCode.DOC_NOT_EXIST); - LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - String userId = user.getId(); - if(!ValidateUtil.validateString(userId)) - ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); - for(DocInfo docInfo : docInfoList) { - DocFile docFile = docFileService.getById(docInfo.getPublishFileId()); - if(docFile == null) - ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); - //鎻掑叆鏂囨。鍒拌澶囧彂閫佹枃妗� - DocClassification classification = classificationService.getByCode(SEND_CODE); - if(classification == null) - ExceptionCast.cast(DocumentCode.DOC_CLASS_ERROR); - DocRelative docRelative = new DocRelative(); - docRelative.setDocId(docInfo.getDocId()); - docRelative.setClassificationId(classification.getClassificationId()); - docRelative.setAttributionType(7); - docRelative.setAttributionId(deviceInfo.getDeviceId()); - boolean b = docRelativeService.save(docRelative); - if(!b) - ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); - //鎻掑叆鏂囦欢浼犺緭浠诲姟琛� - ToEquipmentTask equipmentTask = new ToEquipmentTask(); - //涓嶈兘鐩存帴浠巇oc涓嬁fileId 鍜寁ersion 鍙兘浼氬瓨鍦ㄦ枌鏇� - //equipmentTask.setFileId(docInfo.getPublishFileId()); - //equipmentTask.setDocVersion(docInfo.getPublishVersion()); - equipmentTask.setDocId(docInfo.getDocId()); - equipmentTask.setSyncFlag(1); - equipmentTask.setDeviceNo(deviceInfo.getDeviceNo()); - equipmentTask.setDeviceId(deviceInfo.getDeviceId()); - equipmentTask.setDepartId(deviceInfo.getDepartId()); - //鏂囦欢鐩稿叧淇℃伅 - equipmentTask.setFileId(docFile.getFileId()); - equipmentTask.setDocVersion(docFile.getDocVersion()); - equipmentTask.setFileName(docInfo.getDocName()); - equipmentTask.setFileEncodeName(docFile.getFileEncodeName()); - equipmentTask.setFilePath(docFile.getFilePath()); - equipmentTask.setFileSuffix(docFile.getFileSuffix()); - equipmentTask.setFileSize(docFile.getFileSize()); - b = equipmentTaskService.save(equipmentTask); - if(!b) { - ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); - } - } - return synchronizedFlagService.updateFlag(1); - } - //浼犲弬楠岃瘉 private void validateParams(AssignFileStream stream) { if (stream == null) { @@ -575,7 +512,7 @@ //鑾峰彇鏂囦欢 private void handleExistingDeviceDoc(DocFile docFile, MdcEquipment mdcEquipment, String deviceId) { - List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getEquipmentId()); + List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getId()); if (strings != null && !strings.isEmpty()) { String path = StringUtils.join(strings.toArray(), "/"); boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/" + mdcEquipment.getEquipmentId(), diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/MaintenanceStandardImport.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/SecondMaintenanceStandardImport.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/SecondMaintenanceStandardImport.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/SecondMaintenanceStandardImport.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/SecondMaintenanceStandardImport.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/ThirdMaintenanceStandardImport.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/ThirdMaintenanceStandardImport.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/ThirdMaintenanceStandardImport.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/ThirdMaintenanceStandardImport.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/WeekMaintenanceStandardImport.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/WeekMaintenanceStandardImport.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/dto/WeekMaintenanceStandardImport.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/WeekMaintenanceStandardImport.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrderDetail.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrderDetail.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrderDetail.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrderDetail.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamMaintenanceStandardDetail.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrderDetail.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrderDetail.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrderDetail.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamSecondMaintenanceOrderDetail.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceOrderDetail.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceOrderDetail.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceOrderDetail.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamThirdMaintenanceOrderDetail.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrderDetail.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrderDetail.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrderDetail.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamWeekMaintenanceOrderDetail.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamReportRepairMapper.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamRepairOrderMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamRepairOrderMapper.xml similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamRepairOrderMapper.xml rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamRepairOrderMapper.xml diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamReportRepairMapper.xml diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderQuery.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderQuery.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderQuery.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderQuery.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderRequest.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderRequest.java similarity index 94% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderRequest.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderRequest.java index d3616d8..922934e 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderRequest.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderRequest.java @@ -5,9 +5,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import org.jeecg.common.api.vo.FileUploadResult; -import org.jeecg.common.aspect.annotation.Dict; import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; -import org.jeecgframework.poi.excel.annotation.Excel; import java.io.Serializable; import java.util.List; diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderResponse.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderResponse.java similarity index 95% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderResponse.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderResponse.java index 15b0dd3..2bf13c2 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderResponse.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamRepairOrderResponse.java @@ -8,9 +8,7 @@ import lombok.experimental.Accessors; import org.jeecg.common.aspect.annotation.Dict; import org.jeecg.modules.eam.entity.EamRepairOrder; -import org.jeecg.modules.eam.entity.EamReportRepair; import org.jeecgframework.poi.excel.annotation.Excel; -import org.springframework.beans.BeanUtils; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamReportRepairQuery.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportRepairQuery.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamReportRepairQuery.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/request/EamReportRepairQuery.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamRepairOrderService.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamRepairOrderService.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamRepairOrderService.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamRepairOrderService.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamReportRepairService.java diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java similarity index 99% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java index a44565e..6045e70 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java @@ -33,13 +33,13 @@ import org.jeecg.modules.eam.service.IEamEquipmentService; import org.jeecg.modules.eam.service.IEamRepairOrderService; import org.jeecg.modules.eam.service.IEamReportRepairService; +import org.jeecg.modules.eam.util.DateUtils; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.FlowCommonService; import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; -import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.vo.UserSelector; diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java similarity index 100% rename from lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java rename to lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamReportRepairServiceImpl.java diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/util/DateUtils.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/util/DateUtils.java new file mode 100644 index 0000000..fd0d32f --- /dev/null +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/util/DateUtils.java @@ -0,0 +1,1089 @@ +package org.jeecg.modules.eam.util; + + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.ZoneId; +import java.time.temporal.ChronoField; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class DateUtils { + + private final static long DAYTIMESUNSET = 86400; + + /** + * @return 寰楀埌鏄庡ぉ + */ + public static Date getNextDay(Date d1) { + long d2 = d1.getTime() + 86400 * 1000; + return new Date(d2); + } + + /** + * @return 寰楀埌鏄ㄥぉ + */ + public static Date getPreviousDay(Date d1) { + long d2 = d1.getTime() - 86400 * 1000; + return new Date(d2); + } + + /** + * @return 杩斿洖鏃堕棿宸殑璇█鎻忚堪 濡�1澶�2灏忔椂5鍒�6绉� + */ + public static String different(Date d1, Date d2) { + if (d1 == null || d2 == null) { + return ""; + } + StringBuilder strB = new StringBuilder(); + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + try { + //姣ms + long diff = d2.getTime() - d1.getTime(); + long diffSeconds = diff / 1000 % 60; + long diffMinutes = diff / (60 * 1000) % 60; + long diffHours = diff / (60 * 60 * 1000) % 24; + long diffDays = diff / (24 * 60 * 60 * 1000); + if (diffDays > 0) { + strB.append(diffDays + " 澶� "); + strB.append(diffHours + " 灏忔椂 "); + strB.append(diffMinutes + " 鍒嗛挓 "); + strB.append(diffSeconds + " 绉� "); + } else if (diffHours > 0) { + strB.append(diffHours + " 灏忔椂 "); + strB.append(diffMinutes + " 鍒嗛挓 "); + strB.append(diffSeconds + " 绉� "); + } else if (diffMinutes > 0) { + strB.append(diffMinutes + " 鍒嗛挓 "); + strB.append(diffSeconds + " 绉� "); + } else { + strB.append(diffSeconds + " 绉� "); + } + } catch (Exception e) { + e.printStackTrace(); + } + return strB.toString(); + } + + /** + * @return 鑾峰彇涓や釜date鐨勬椂闂村樊锛岀粨鏋滀负绉� 闄� + */ + public static long differentSecond(Date startDate, Date endDate) { + return new BigDecimal(endDate.getTime() - startDate.getTime()).divide(new BigDecimal("1000"), 0, BigDecimal.ROUND_HALF_UP).longValue(); +// return (endDate.getTime() - startDate.getTime()) / 1000; + } + + /** + * @return 鑾峰彇涓や釜date鐨勬椂闂村樊锛岀粨鏋滀负鍒嗛挓 + */ + public static Integer differentMinutes(Date startDate, Date endDate) { + return new BigDecimal(endDate.getTime() - startDate.getTime()).divide(new BigDecimal("60000"), 0, RoundingMode.HALF_UP).intValue(); + } + + /** + * @return 杩斿洖浼犲叆鏃堕棿鐨�0鐐�0鍒�0绉� + */ + public static Date getTodayZero(Date d) { + Calendar cal = Calendar.getInstance(); + cal.setTime(d); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + return cal.getTime(); + } + + /** + * @return 杩斿洖浼犲叆鏃堕棿鐨�0鐐�0鍒�0绉� + */ + public static Date getTomorrowZero(Date d) { + Calendar cal = Calendar.getInstance(); + cal.setTime(d); + cal.set(Calendar.HOUR_OF_DAY, 0); + cal.set(Calendar.MINUTE, 0); + cal.set(Calendar.SECOND, 0); + cal.add(Calendar.DAY_OF_MONTH, 1); + return cal.getTime(); + } + + /** + * @return 鍒ゆ柇鏃堕棿鏄惁鏄綋澶� + */ + public static boolean isTaday(Date date) { + Date now = new Date(); + SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd"); + String nowDay = sf.format(now); + String day = sf.format(date); + return day.equals(nowDay); + } + + /** + * @return 鍒ゆ柇涓や釜鏃堕棿鏄惁涓哄悓涓�澶� + */ + public static boolean isOneDay(Date d1, Date d2) { + SimpleDateFormat sf = new SimpleDateFormat("yyyyMMdd"); + String d1Str = sf.format(d1); + String d2Str = sf.format(d2); + return d1Str.equals(d2Str); + } + + /** + * @return 鍒ゆ柇涓や釜鏃堕棿鏄惁涓哄悓涓�骞� + */ + public static boolean isOneYear(Date d1, Date d2) { + SimpleDateFormat sf = new SimpleDateFormat("yyyy"); + String d1Str = sf.format(d1); + String d2Str = sf.format(d2); + return d1Str.equals(d2Str); + } + + public static String dateProportion(Date start, Date end) { + float differentSecond = DateUtils.differentSecond(start, end); + float f = differentSecond / DAYTIMESUNSET * 100; + return String.format("%.2f", f) + "%"; + } + + public static Date strToDate(String dateStr, String format) { + SimpleDateFormat sf = new SimpleDateFormat(format); + Date result = null; + try { + result = sf.parse(dateStr); + } catch (ParseException e) { + e.printStackTrace(); + } + return result; + } + + public static final String STR_DATE = "yyyy-MM-dd"; + public static final String STRDATE = "yyyyMMdd"; + public static final String STR_YEAR_MONTH = "yyyy-MM"; + public static final String STRYEARMONTH = "yyyyMM"; + public static final String STR_DATE_TIME = "yyyy-MM-dd HH:mm:ss.SSS"; + public static final String STR_DATE_TIME_SMALL = "yyyy-MM-dd HH:mm:ss"; + public static final String STR_DATE_TIME_MIN = "yyyy-MM-dd HH:mm"; + public static final String STR_DATE_TIME_HOUR = "yyyy-MM-dd HH"; + public static final String STR_DATE_TIME_FULL = "yyyyMMddHHmmssSSS"; + public static final String STR_HHMMSS = "HH:mm:ss"; + public static final String STR_HHMM = "HH:mm"; + public static final String STR_MMDD = "MM-dd"; + + /** + * <p> + * Description: 瀹為檯鎶曟爣鏈堜唤 + * </p> + * + * @param startDate + * @param endDate + * @return obj [0] 瀹為檯鎶曟爣鏈堜唤 渚嬪瀹為檯鎶曟爣鏈堜唤锛�3.86锛夋剰涔夋槸3涓湀鍙�26澶� obj[1] 瀹為檯鍙栨暣鏈堜唤 锛�3锛� + */ + public static Integer getRealMonth(Date startDate, Date endDate) { + Integer month = 0; + Calendar start = Calendar.getInstance(); + start.setTime(startDate); + + Calendar end = Calendar.getInstance(); + end.setTime(endDate); + int year = start.get(Calendar.YEAR); + int year2 = end.get(Calendar.YEAR); + int month2 = start.get(Calendar.MONTH); + int month3 = end.get(Calendar.MONTH); + try { + while (start.before(end)) { + start.add(Calendar.MONTH, 1); + month++; + } + } catch (Exception e) { + e.printStackTrace(); + } + int day2 = start.get(Calendar.DAY_OF_MONTH); + int day3 = end.get(Calendar.DAY_OF_MONTH); + int tmpYear = year2 - year; + if (day2 == day3) { + return (tmpYear * 12) + (month3 - month2); + } + return month == 0 ? month : (month - 1); + } + + public static Date getNow() { + return new Date(System.currentTimeMillis()); + } + + public static int getDayOfMonth() { + Calendar aCalendar = Calendar.getInstance(Locale.CHINA); + int day = aCalendar.getActualMaximum(Calendar.DATE); + return day; + } + + /** + * <p> + * Description: 淇敼鏃堕棿涓烘寚瀹氭椂闂村綋澶╃殑23:59:59.000 + * </p> + * + * @param date 闇�瑕佷慨鏀圭殑鏃堕棿 + * @return 淇敼鍚庣殑鏃堕棿 + */ + public static Date fillTime(Date date) { + Date result = removeTime(date); + result.setTime(result.getTime() + 24 * 60 * 60 * 1000 - 1000); // 鍔犱竴澶� + return result; + } + + /** + * @param date 褰撳墠鏃堕棿 + * @param i 寰�鍓嶅嚑澶� + * @return + */ + public static Date fillBeforeTime(Date date, Integer i) { + Date result = removeTime(date); + Calendar calendar = Calendar.getInstance(); // 寰楀埌鏃ュ巻 + calendar.setTime(result);// 鎶婂綋鍓嶆椂闂磋祴缁欐棩鍘� + calendar.add(Calendar.DAY_OF_MONTH, i); // 璁剧疆涓哄墠涓�澶� + result.setTime(calendar.getTime().getTime() + 24 * 60 * 60 * 1000 + - 1000); // 鍔犱竴澶� + return result; + } + + /** + * <p> + * Description: 淇敼鏃堕棿涓烘寚瀹氭椂闂村墠涓�澶╃殑00:00:00 + * </p> + * + * @param date 闇�瑕佷慨鏀圭殑鏃堕棿 + * @return 淇敼鍚庣殑鏃堕棿 + */ + public static Date plusTime(Date date, Integer i) { + Date result = removeTime(date); + Calendar calendar = Calendar.getInstance(); // 寰楀埌鏃ュ巻 + calendar.setTime(result);// 鎶婂綋鍓嶆椂闂磋祴缁欐棩鍘� + calendar.add(Calendar.DAY_OF_MONTH, i); // 璁剧疆涓哄墠涓�澶� + return calendar.getTime(); + } + + /** + * <p> + * Description: 鍘绘帀鏃ユ湡鏃堕棿涓殑鏃堕棿閮ㄥ垎 + * </p> + * 濡�: 2013-11-11 18:56:33 ---> 2013-11-11 00:00:00 + * + * @param date 闇�瑕佷慨鏀圭殑鏃堕棿 + * @return 淇敼鍚庣殑鏃堕棿 + */ + public static Date removeTime(Date date) { + Date result = null; + try { + SimpleDateFormat df = new SimpleDateFormat(STR_DATE); + String dateStr = df.format(date); + result = df.parse(dateStr); + } catch (ParseException e) { + e.printStackTrace(); + } + return result; + } + + /** + * <p> + * Description: 鎸夐粯璁ゆ牸寮�(yyyy-MM-dd HH:mm:ss.SSS)鑾峰彇鏃堕棿瀛楃涓� + * </p> + * + * @param date 瑕佽浆鎹㈢殑鏃ユ湡 + * @return 杞崲鍚庣殑鏃堕棿瀛楃涓� + */ + public static String format(Date date) { + SimpleDateFormat df = new SimpleDateFormat(STR_DATE_TIME); + return df.format(date); + } + + public static Date parseDate(Date date, String format) { + SimpleDateFormat df = new SimpleDateFormat(format); + try { + date = df.parse(df.format(date)); + } catch (ParseException e) { + e.printStackTrace(); + } + return date; + } + + public static Date getDelayedYear() { + Calendar curr = Calendar.getInstance(); + curr.set(Calendar.YEAR, curr.get(Calendar.YEAR) + 1); + Date date = curr.getTime(); + return date; + } + + /** + * <p> + * Description: 鎸夋寚瀹氭牸寮忚幏鍙栨椂闂村瓧绗︿覆 + * </p> + * + * @param date 瑕佽浆鎹㈢殑鏃ユ湡 + * @param format 鏍煎紡,渚嬪:yyyy-MM-dd HH:mm:ss.SSS + * @return 杞崲鍚庣殑鏃堕棿瀛楃涓� + */ + public static String format(Date date, String format) { + SimpleDateFormat df = new SimpleDateFormat(format); + return df.format(date); + } + + /** + * <p> + * Description: 鍔犳湀鍑芥暟 + * </p> + * + * @param month 鏈堜唤鏁� + * @return + */ + public static Date addMonth(Integer month, Date time) { + Calendar c = Calendar.getInstance(); + c.setTime(time); + c.add(Calendar.MONTH, month); + return c.getTime(); + } + + public static Boolean greater(Date startTime, Date endTime) { + return startTime.getTime() > endTime.getTime(); + } + + public static Boolean less(Date startTime, Date endTime) { + return startTime.getTime() < endTime.getTime(); + } + + public static Boolean equals(Date startTime, Date endTime) { + return startTime.getTime() == endTime.getTime(); + } + + public static Integer getDiffMonth(Calendar c, Calendar c1) { + return (c.get(Calendar.YEAR) - c1.get(Calendar.YEAR)) * 12 + + (c.get(Calendar.MONTH) - c1.get(Calendar.MONTH)); + } + + /** + * 鏄惁涓哄悓涓�澶� + */ + public static boolean equalsDay(Date a, Date b) { + return removeTime(a).getTime() == removeTime(b).getTime(); + } + + public static Integer getDays(Date startTime, Date endTime) { + Calendar c = Calendar.getInstance(); + c.setTime(startTime); + Calendar c1 = Calendar.getInstance(); + c1.setTime(endTime); + long t1 = c.getTimeInMillis(); + long t2 = c1.getTimeInMillis(); + // 璁$畻澶╂暟 + Long days = (t2 - t1) / (24 * 60 * 60 * 1000); + return days.intValue(); + } + + public static Integer getSeconds(Date startTime, Date endTime) { + try { + Calendar c = Calendar.getInstance(); + c.setTime(startTime); + Calendar c1 = Calendar.getInstance(); + c1.setTime(endTime); + long t1 = c.getTimeInMillis(); + long t2 = c1.getTimeInMillis(); + // 璁$畻绉掓暟 + Long days = (t2 - t1) / (1000); + return days.intValue(); + } catch (Exception e) { + return 0; + } + + } + + //鑾峰彇灏忔椂宸� + public static double subHours(Date startTime, Date endTime) { + Calendar c = Calendar.getInstance(); + c.setTime(startTime); + Calendar c1 = Calendar.getInstance(); + c1.setTime(endTime); + double t1 = c.getTimeInMillis(); + double t2 = c1.getTimeInMillis(); + // 璁$畻澶╂暟 + double hours = (t2 - t1) / (1000 * 60 * 60); + return Double.valueOf(new DecimalFormat("#.00").format(hours)); + } + + //鏍规嵁褰撳墠鏃堕棿鍜屽嚭鐢熸棩鏈熻幏鍙栧勾榫� + public static int getAge(Date birthDay) { + Calendar cal = Calendar.getInstance(); + // 鍙栧嚭绯荤粺褰撳墠鏃堕棿鐨勫勾銆佹湀銆佹棩閮ㄥ垎 + int yearNow = cal.get(Calendar.YEAR); + int monthNow = cal.get(Calendar.MONTH); + int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); + cal.setTime(birthDay); + // 鍙栧嚭鍑虹敓鏃ユ湡鐨勫勾銆佹湀銆佹棩閮ㄥ垎 + int yearBirth = cal.get(Calendar.YEAR); + int monthBirth = cal.get(Calendar.MONTH); + int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); + // 褰撳墠骞翠唤涓庡嚭鐢熷勾浠界浉鍑忥紝鍒濇璁$畻骞撮緞 + int age = yearNow - yearBirth; + // 褰撳墠鏈堜唤涓庡嚭鐢熸棩鏈熺殑鏈堜唤鐩告瘮锛屽鏋滄湀浠藉皬浜庡嚭鐢熸湀浠斤紝鍒欏勾榫勪笂鍑�1锛岃〃绀轰笉婊″灏戝懆宀� + if (monthNow <= monthBirth) { + // 濡傛灉鏈堜唤鐩哥瓑锛屽湪姣旇緝鏃ユ湡锛屽鏋滃綋鍓嶆棩锛屽皬浜庡嚭鐢熸棩锛屼篃鍑�1锛岃〃绀轰笉婊″灏戝懆宀� + if (monthNow == monthBirth) { + if (dayOfMonthNow < dayOfMonthBirth) { + age--; + } + } else { + age--; + } + + } + return age; + } + + public static Date subDays(Date startTime, Integer day) { + Calendar c = Calendar.getInstance(); + c.setTime(startTime); + c.add(Calendar.DATE, day * -1); + return c.getTime(); + } + + public static Date addDays(Date startTime, Integer day) { + Calendar c = Calendar.getInstance(); + c.setTime(startTime); + c.add(Calendar.DATE, day); + return c.getTime(); + } + /*public static Date addHours(Date startTime, Integer hours) { + Calendar c = Calendar.getInstance(); + c.setTime(startTime); + c.add(Calendar.HOUR, hours ); + return c.getTime(); + }*/ + + public static Date toDate(String date, String format) { + SimpleDateFormat df = new SimpleDateFormat(format); + try { + return df.parse(date); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + public static Date toDateFull(String date) { + SimpleDateFormat df = new SimpleDateFormat(STR_DATE_TIME); + try { + return df.parse(date); + } catch (ParseException e) { + e.printStackTrace(); + } + return null; + } + + public static Date toDateMedium(String date) { + SimpleDateFormat df = new SimpleDateFormat(STR_DATE_TIME_SMALL); + try { + Date dd = df.parse(date); + return dd; + } catch (ParseException e) { + return null; + } + } + + public static Integer getDate(Date date) { + if (date != null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int day = calendar.get(Calendar.DATE); + return day; + } + return null; + } + + public static Integer getYear() { + return getYear(new Date()); + } + + public static Integer getYear(Date date) { + if (date != null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int year = calendar.get(Calendar.YEAR); + return year; + } + return null; + } + + public static Integer getMonth() { + return getMonth(new Date()); + } + + public static Integer getMonth(Date date) { + if (date != null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int month = calendar.get(Calendar.MONTH); + return month + 1; + } + return null; + } + + public static Integer getDay() { + return getDay(new Date()); + } + + public static Integer getDay(Date date) { + if (date != null) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int day = calendar.get(Calendar.DAY_OF_MONTH); + return day; + } + return null; + } + + + public static Date[] getMonthStartTimeAndEndTime(Integer month) { + Calendar calendar = Calendar.getInstance(); + Date[] dates = new Date[2]; + Date startTime = null; + Date endsTime = null; + if (month != null) { + calendar.set(Calendar.MONTH, month); + //鑾峰緱鍒版湰鏈堢殑绗竴澶� + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); + startTime = calendar.getTime(); + startTime = DateUtils.removeTime(startTime); + //鑾峰緱鍒版湰鏈堢殑鏈�鍚庝竴澶� + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); + endsTime = calendar.getTime(); + endsTime = DateUtils.fillTime(endsTime); + } + dates[0] = startTime; + dates[1] = endsTime; + return dates; + } + + public static Date[] getMonthStartTimeAndEndTime(Date date) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + Integer month = calendar.get(Calendar.MONTH); + Date[] dates = new Date[2]; + Date startTime = null; + Date endsTime = null; + if (month != null) { + calendar.set(Calendar.MONTH, month); + //鑾峰緱鍒版湰鏈堢殑绗竴澶� + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); + startTime = calendar.getTime(); + startTime = DateUtils.removeTime(startTime); + //鑾峰緱鍒版湰鏈堢殑鏈�鍚庝竴澶� + calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); + endsTime = calendar.getTime(); + endsTime = DateUtils.fillTime(endsTime); + } + dates[0] = startTime; + dates[1] = endsTime; + return dates; + } + + /** + * 鑾峰彇days澶╃殑鏃堕棿鍖洪棿锛宔ndTime 涓哄綋澶╃殑鍚庝竴澶�0鐐癸紝 + * startTime 涓篹ndTime鍓峝ays澶� + * + * @param days + * @return + */ + public static Date[] getDaysStartTimeAndEndTime(Integer days) { + Date[] dates = new Date[2]; + Date endDate = plusTime(removeTime(getNow()), 1); + Date startDate = subDays(endDate, days); + dates[0] = startDate; + dates[1] = endDate; + return dates; + } + + /** + * 鏍规嵁鏌愪竴骞磋幏鍙栨渶鍚庝竴澶╃殑鏃堕棿 + * 2013 ---> 2013-12-31 23:59:59.000 + * + * @param year + * @return + */ + public static Date getYearEndDay(Integer year) { + Calendar calendar = Calendar.getInstance(); + calendar.clear(); + calendar.set(Calendar.YEAR, year); + calendar.roll(Calendar.DAY_OF_YEAR, -1); + Date yearLast = calendar.getTime(); + Date lastYear = DateUtils.fillTime(yearLast); + return lastYear; + } + + /** + * 鑾峰彇start/end鐨勬墍鏈夋棩鏈熷瓧绗︿覆 鏍煎紡yyyy-MM-dd + * + * @param start + * @param end + * @return + */ + public static List<String> getDatesStringList(Date start, Date end, String strDate) { + List<String> list = new ArrayList<>(); + int i = getDays(start, end); + for (int j = 0; j <= i; j++) { + if (j == 0) { + list.add(format(start, strDate)); + } else { + list.add(format(plusTime(start, j), strDate)); + } + } + return list; + } + + /** + * 鑾峰彇start/end鐨勬墍鏈夋棩鏈熷瓧绗︿覆 鏍煎紡yyyy-MM-dd + * + * @param start + * @param end + * @return + */ + public static List<String> getDatesStringList(Date start, Date end) { + List<String> list = new ArrayList<>(); + int i = getDays(start, end); + for (int j = 0; j <= i; j++) { + if (j == 0) { + list.add(format(start, STR_DATE)); + } else { + list.add(format(plusTime(start, j), STR_DATE)); + } + } + return list; + } + + /** + * 鑾峰彇start/end鐨勬墍鏈夋棩鏈熷瓧绗︿覆 鏍煎紡yyyyMMdd + * + * @param start + * @param end + * @return + */ + public static List<String> getDatesStringList2(Date start, Date end) { + List<String> list = new ArrayList<>(); + int i = getDays(start, end); + for (int j = 0; j <= i; j++) { + if (j == 0) { + list.add(format(start, STRDATE)); + } else { + list.add(format(plusTime(start, j), STRDATE)); + } + } + return list; + } + + /** + * 鑾峰彇start/end鐨勬墍鏈夋棩鏈熷瓧绗︿覆 鏍煎紡MM-dd + * + * @param start + * @param end + * @return + */ + public static List<String> getDatesStringLists(Date start, Date end) { + List<String> list = new ArrayList<>(); + int i = getDays(start, end); + for (int j = 0; j <= i; j++) { + if (j == 0) { + list.add(format(start, STR_MMDD)); + } else { + list.add(format(plusTime(start, j), STR_MMDD)); + } + } + return list; + } + + public static List<String> getMonthBetween(Date start, Date end) { + List<String> list = new ArrayList<>(); + Calendar min = Calendar.getInstance(); + Calendar max = Calendar.getInstance(); + min.setTime(start); + min.set(min.get(Calendar.YEAR), min.get(Calendar.MONTH), 1); + max.setTime(end); + max.set(max.get(Calendar.YEAR), max.get(Calendar.MONTH), 2); + Calendar curr = min; + while (curr.before(max)) { + list.add(format(curr.getTime(), STR_YEAR_MONTH)); + curr.add(Calendar.MONTH, 1); + } + return list; + } + + /** + * 鑾峰彇dateStr鐨勬棩鏈熸牸寮弝yyy-MM-dd + * + * @param dateStr + * @return + */ + public static Date getShortDate(String dateStr) { + SimpleDateFormat sdf = new SimpleDateFormat(STR_DATE); + Date startTime = null; + try { + startTime = sdf.parse(dateStr); + } catch (ParseException e) { + } + return startTime == null ? removeTime(new Date()) : startTime; + } + + /** + * 鑾峰彇dateStr鐨勬棩鏈熸牸寮弝yyyMMdd + * + * @param dateStr + * @return + */ + public static Date getShortDate2(String dateStr) { + SimpleDateFormat sdf = new SimpleDateFormat(STRDATE); + Date startTime = null; + try { + startTime = sdf.parse(dateStr); + } catch (ParseException e) { + } + return startTime == null ? removeTime(new Date()) : startTime; + } + + public static Date getFormatDate(String dateStr, String format) { + SimpleDateFormat sdf = new SimpleDateFormat(format); + Date startTime = null; + try { + startTime = sdf.parse(dateStr); + } catch (ParseException e) { + } + return startTime == null ? removeTime(new Date()) : startTime; + } + + /** + * @param time + * @param n + * @return 鍦ㄤ竴涓椂闂翠笂鍔犵 + */ + public static Date addSecond(Date time, Integer n) { + Calendar c = Calendar.getInstance(); + c.setTime(time); + c.add(Calendar.SECOND, n); + return c.getTime(); + } + + /** + * @param time + * @param n + * @return 鍦ㄤ竴涓椂闂翠笂鍔犲垎閽� + */ + public static Date addMinute(Date time, Integer n) { + Calendar c = Calendar.getInstance(); + c.setTime(time); + c.add(Calendar.MINUTE, n); + return c.getTime(); + } + + /** + * @param time + * @param n + * @return 鍦ㄤ竴涓椂闂翠笂鍔犲皬鏃� + */ + public static Date addHour(Date time, Integer n) { + Calendar c = Calendar.getInstance(); + c.setTime(time); + c.add(Calendar.HOUR_OF_DAY, n); + return c.getTime(); + } + + /** + * 鑾峰彇start/end鐨勬墍鏈夋棩鏈熷瓧绗︿覆 鏍煎紡yyyy-MM-dd + * + * @param start + * @param end + * @return + */ + public static List<String> getDateMonth(String start, String end) { + List<String> list = new ArrayList<>(); + SimpleDateFormat yyyyMM = new SimpleDateFormat("yyyy-MM"); + Date startyear = null; + try { + startyear = yyyyMM.parse(start); + Date endyear = yyyyMM.parse(end); + Calendar dd = Calendar.getInstance();//瀹氫箟鏃ユ湡瀹炰緥 + dd.setTime(startyear);//璁剧疆鏃ユ湡璧峰鏃堕棿 + while (dd.getTime().before(endyear)) {//鍒ゆ柇鏄惁鍒扮粨鏉熸棩鏈� + String str = yyyyMM.format(dd.getTime()); + dd.add(Calendar.MONTH, 1);//杩涜褰撳墠鏃ユ湡鏈堜唤鍔�1 + list.add(str); + } + list.add(yyyyMM.format(endyear)); + } catch (ParseException e) { + e.printStackTrace(); + } + return list; + } + + /** + * 鑾峰彇start/end鐨勬墍鏈夋棩鏈熷瓧绗︿覆 鏍煎紡yyyy + * + * @param start + * @param end + * @return + */ + public static List<String> getDateYear(String start, String end) { + List<String> list = new ArrayList<>(); + SimpleDateFormat yyyy = new SimpleDateFormat("yyyy"); + Date startyear = null; + try { + startyear = yyyy.parse(start); + Date endyear = yyyy.parse(end); + Calendar dd = Calendar.getInstance();//瀹氫箟鏃ユ湡瀹炰緥 + dd.setTime(startyear);//璁剧疆鏃ユ湡璧峰鏃堕棿 + while (dd.getTime().before(endyear)) {//鍒ゆ柇鏄惁鍒扮粨鏉熸棩鏈� + String str = yyyy.format(dd.getTime()); + dd.add(Calendar.YEAR, 1);//杩涜褰撳墠鏃ユ湡鏈堜唤鍔�1 + list.add(str); + } + list.add(yyyy.format(endyear)); + } catch (ParseException e) { + e.printStackTrace(); + } + return list; + } + + /** + * 鑾峰彇褰撳墠鏃堕棿 瀹氫綅鍒板皬鏃� + * 鏍煎紡涓� yyyy-MM-dd hh:mm + * 渚嬶細2018-02-27 11:00 + * + * @return + */ + public static Date getNowHourDate() { + Date now = getNow(); + Date result; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(now); + int hour = calendar.get(Calendar.HOUR_OF_DAY); + String dateStr = format(now, STR_DATE); + dateStr = dateStr + " " + (hour < 10 ? "0" + hour : hour) + ":00"; + result = toDate(dateStr, STR_DATE_TIME_MIN); + return result; + } + + /** + * 鑾峰彇姣忔棩8:11鎴�11:11鐨勬椂闂寸偣 + * + * @return + */ + public static Date getNowHourDateTo() { + Date now = getNow(); + Date result; + Calendar calendar = Calendar.getInstance(); + calendar.setTime(now); + int hour = calendar.get(Calendar.HOUR_OF_DAY); + if (hour != 8 && hour != 11) { + return null; + } + int minute = calendar.get(Calendar.MINUTE); + if (minute < 11) { + return null; + } + String dateStr = format(now, STR_DATE); + dateStr = dateStr + " " + (hour < 10 ? "0" + hour : hour) + ":11"; + result = toDate(dateStr, STR_DATE_TIME_MIN); + return result; + } + + /** + * 鑾峰彇姣忔棩8:00銆�13:00銆�20:00鐨勬椂闂寸偣 + * + * @return + */ + public static List<Date> getHourDateList(Date time) { + List<Date> result = new ArrayList<>(); + result.add(addHour(time, 8)); + result.add(addHour(time, 13)); + result.add(addHour(time, 20)); + return result; + } + + /** + * 鑾峰彇涓婃湀鐨勬渶鍚庝竴澶� + * + * @return + */ + public static Date getPreviousMonthLastDay() { + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.DAY_OF_MONTH, 0); + return DateUtils.removeTime(calendar.getTime()); + } + + /** + * 鑾峰彇end鏃堕棿鏈堢殑绗竴澶� + * + * @param end 鏈堜唤鏈�鍚庝竴澶� + * @return + */ + public static Date getTheMonthFirstDay(Date end) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(end); + calendar.set(Calendar.DAY_OF_MONTH, 1); + return calendar.getTime(); + } + + public static String secToTimeHour(int time) { + String timeStr = null; + int hour = 0; + if (time <= 0) { + return "0灏忔椂"; + } else { + BigDecimal bigDecimal = new BigDecimal(time); + BigDecimal bigDecimal1 = new BigDecimal(3600); + BigDecimal hourBigDecimal = new BigDecimal(0); + hourBigDecimal = new BigDecimal(String.valueOf(bigDecimal)). + divide(new BigDecimal(String.valueOf(bigDecimal1)), 2, BigDecimal.ROUND_HALF_UP); + timeStr = hourBigDecimal + "灏忔椂"; + } + return timeStr; + } + + public static String secToTime(int time) { + String timeStr = null; + int hour = 0; + int minute = 0; + int second = 0; + if (time <= 0) + return " "; + else { + minute = time / 60; + if (minute < 60) { + second = time % 60; + timeStr = unitFormat(minute) + "鍒�" + unitFormat(second) + " 绉�"; + } else { + hour = minute / 60; + minute = minute % 60; + second = time - hour * 3600 - minute * 60; + timeStr = unitFormat(hour) + "灏忔椂" + unitFormat(minute) + "鍒�" + unitFormat(second) + "绉�"; + } + } + return timeStr; + } + + public static String unitFormat(int i) { + String retStr = null; + if (i >= 0 && i < 10) + retStr = "0" + Integer.toString(i); + else + retStr = "" + i; + return retStr; + } + + /** + * 楠岃瘉鏃堕棿 + * + * @param time 鏃堕棿瀛楃涓� HH:mm + * @return 楠岃瘉鎴愬姛杩斿洖true锛岄獙璇佸け璐ヨ繑鍥瀎alse + */ + public static boolean checkTime(String time) { + String regex = "([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$"; + return Pattern.matches(regex, time); + } + + /** + * 鑾峰彇姣忔棩07:30:00鐨勬椂闂寸偣 + * 鏍煎紡涓� yyyy-MM-dd HH:mm:ss + * 渚嬶細2018-05-28 07:30:00 + * + * @return + */ + public static Date getHourDateTo(Date now, String time) { + String dateStr = format(now, STR_DATE); + dateStr = dateStr + " " + time; + Date result = toDate(dateStr, STR_DATE_TIME_SMALL); + return result; + } + + public static Date setTimeForDay(Date theDate, String planTime) { + Calendar cal = Calendar.getInstance(); + cal.setTime(theDate); + String[] times = planTime.split(":"); + cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(times[0])); + cal.set(Calendar.MINUTE, Integer.parseInt(times[1])); + cal.set(Calendar.SECOND, Integer.parseInt(times[2])); + return cal.getTime(); + } + + public static long getTimeWithOutDay(Date d) { + return d.getTime() / 1000 % 86400; + } + + /** + * @param lo 姣鏁� + * @return String yyyy-MM-dd HH:mm:ss + * @Description: long绫诲瀷杞崲鎴愭棩鏈� + */ + public static String longToDate(long lo) { + Date date = new Date(lo); + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + return sd.format(date); + } + + /** + * @param startDate + * @param endDate + * @return + */ + public static List<Date> getWeekDays(LocalDate startDate, LocalDate endDate) { + List<Date> result = new ArrayList<>(); + List<LocalDate> dateList = Stream.iterate(startDate, localDate -> localDate.plusDays(1)) + .limit(ChronoUnit.DAYS.between(startDate, endDate) + 1) + .filter(localDate -> DayOfWeek.SATURDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK))) || DayOfWeek.SUNDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK)))) + .collect(Collectors.toList()); + dateList.forEach(localDate -> result.add(Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()))); + return result; + } + + /** + * @param smallDate + * @param bigDate + * @desc 鑾峰彇涓や釜鏃ユ湡涔嬮棿鐨勫ぉ鏁� + */ + public static Integer getDaysBetween(String smallDate, String bigDate) throws ParseException { + // 鏃ユ湡鏍煎紡 + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + // 鑾峰彇涓や釜鏃ユ湡鐨勬椂闂存埑 + Calendar cal = Calendar.getInstance(); + cal.setTime(sdf.parse(smallDate)); + long smallTime = cal.getTimeInMillis(); + cal.setTime(sdf.parse(bigDate)); + long bigTime = cal.getTimeInMillis(); + // 鐩稿樊鐨勬棩鏈� + long days = (bigTime - smallTime) / (1000 * 3600 * 24); + // long杞琲nt 瀛樺湪婧㈠嚭鎯呭喌 鏍规嵁涓氬姟鎯呭喌缂栬緫catch涓繑鍥炲�� + try { + return Integer.parseInt(String.valueOf(days)); + } catch (NumberFormatException e) { + e.printStackTrace(); + return 0; + } + } + + /** + * 鏃ユ湡杞崲锛屽皢鎺ュ彛杩斿洖鐨�20180524杞负2018-05-24 + * + * @param str + * @return + */ + public static String dateConvertion(String str) { + Date parse = null; + String dateString = ""; + try { + parse = new SimpleDateFormat("yyyyMMdd").parse(str); + dateString = new SimpleDateFormat("yyyy-MM-dd").format(parse); + } catch (ParseException e) { + dateString = null; + } + + return dateString; + } +} diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java index 5cdf91e..bec930b 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentMapper.java @@ -7,6 +7,8 @@ import org.apache.ibatis.annotations.Select; import org.jeecg.modules.mdc.entity.Equipment; +import java.util.List; + /** * @Description: 閲囬泦璁惧琛� * @Author: liuS @@ -19,15 +21,19 @@ @Select(" SELECT name FROM SysObjects Where XType='U' AND name = '${saveTableName}' ") String checkTableExists(@Param("saveTableName") String saveTableName); - @Select(" SELECT COUNT(CollectTime) num FROM ${saveTableName} WHERE CollectTime < '${day}' ") + @Select(" SELECT COUNT(CollectTime) num FROM [${saveTableName}] WHERE CollectTime < '${day}' ") Integer checkTableDataNum(@Param("saveTableName") String saveTableName, @Param("day") String day); - @Insert(" INSERT INTO ${tableName} SELECT * FROM ${lastTableName} WHERE CollectTime < '${date}' ") + @Insert(" INSERT INTO [${tableName}] SELECT * FROM [${lastTableName}] WHERE CollectTime < '${date}' ") void insertTableData(@Param("tableName") String tableName, @Param("lastTableName") String lastTableName, @Param("date") String date); - @Delete(" delete from ${tableName} where CollectTime < '${day}' ") + @Delete(" delete from [${tableName}] where CollectTime < '${day}' ") void deleteTableData(@Param("tableName") String saveTableName, @Param("day") String day); - @Insert(" SELECT * INTO ${tableName} FROM ${lastTableName} WHERE CollectTime < '${date}' ") + @Insert(" SELECT * INTO [${tableName}] FROM [${lastTableName}] WHERE CollectTime < '${date}' ") void insertNoTableData(@Param("tableName") String tableName, @Param("lastTableName") String lastTableName, @Param("date") String date); + + List<Equipment> listByProds(@Param("proIds") List<String> proIds); + + Equipment findByEquId(@Param("equipmentId") String equipmentId); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java index 57d0f71..0a71450 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java @@ -140,4 +140,8 @@ List<MdcEquipment> findByProIdsAndTeamCode(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("teamCodeList") List<String> teamCodeList); List<MdcEquipment> findByProIdsAndType(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("typeList") List<String> typeList); + + List<String> getEquIdsByProIds(@Param("proIds") List<String> proIds); + + List<MdcEquipment> getEquipmentList(@Param("allProductionIds") List<String> allProductionIds); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentMapper.xml b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentMapper.xml index b504640..126990b 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentMapper.xml +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentMapper.xml @@ -2,4 +2,22 @@ <!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.EquipmentMapper"> + <select id="listByProds" resultType="org.jeecg.modules.mdc.entity.Equipment"> + SELECT + t1.* + FROM + Equipment t1 + LEFT JOIN mdc_equipment t2 ON t1.EquipmentID = t2.equipment_id + LEFT JOIN mdc_production_equipment t3 ON t2.id = t3.equipment_id + <where> + t3.production_id IN + <foreach collection="proIds" index="index" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </where> + </select> + + <select id="findByEquId" resultType="org.jeecg.modules.mdc.entity.Equipment"> + SELECT TOP 1 * FROM Equipment WHERE EquipmentID = #{equipmentId} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 8440226..3d0755f 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -89,6 +89,20 @@ </foreach> </select> + <!--鏍规嵁浜х嚎id鏌ヨ璁惧id闆嗗悎--> + <select id="getEquipmentList" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> + SELECT + me.* + FROM + mdc_equipment me + LEFT JOIN mdc_production_equipment mpe ON me.id = mpe.equipment_id + WHERE + mpe.production_id IN + <foreach collection="allProductionIds" index="index" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </select> + <!--鏌ヨ璁惧鐩戞帶淇℃伅--> <select id="checkStatusFromEquipmentIds" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentMonitor"> SELECT @@ -340,6 +354,7 @@ #{equipmentType} </foreach> </select> + <select id="queryByDepartIdsAndType" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> SELECT e.*, @@ -358,4 +373,18 @@ </foreach> </select> + <select id="getEquIdsByProIds" resultType="java.lang.String"> + SELECT + t1.equipment_id + FROM + mdc_equipment t1 + LEFT JOIN mdc_production_equipment t2 ON t1.id = t2.equipment_id + <where> + t2.production_id IN + <foreach collection="proIds" index="index" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </where> + </select> + </mapper> diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java index 8dfe74b..9649a2c 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IEquipmentService.java @@ -3,6 +3,8 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.mdc.entity.Equipment; +import java.util.List; + /** * @Description: 閲囬泦璁惧琛� * @Author: liuS @@ -48,4 +50,8 @@ * @param day */ void insertNoTableData(String backupTableName, String tableName, String day); + + List<Equipment> listByProds(List<String> proIds); + + Equipment findByEquId(String equipmentId); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcAlarmInfoService.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcAlarmInfoService.java index aee61dc..2b65899 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcAlarmInfoService.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcAlarmInfoService.java @@ -11,4 +11,5 @@ */ public interface IMdcAlarmInfoService extends IService<MdcAlarmInfo> { + MdcAlarmInfo findAlarmContent(String alarmNo, String equipmentId); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java index dce27ed..f3493f9 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java @@ -239,4 +239,13 @@ * @return */ List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList); + + List<String> getEquIdsByProIds(List<String> proIds); + + + /** + * 鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅 + * @return + */ + List<MdcEquipment> getEquipmentList(); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java index 3db46bc..03126fb 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentServiceImpl.java @@ -6,6 +6,9 @@ import org.jeecg.modules.mdc.service.IEquipmentService; import org.springframework.stereotype.Service; +import java.util.Collections; +import java.util.List; + /** * @Description: 閲囬泦璁惧琛� * @Author: liuS @@ -39,4 +42,14 @@ public void insertNoTableData(String backupTableName, String tableName, String day) { this.baseMapper.insertNoTableData(backupTableName, tableName, day); } + + @Override + public List<Equipment> listByProds(List<String> proIds) { + return this.baseMapper.listByProds(proIds); + } + + @Override + public Equipment findByEquId(String equipmentId) { + return this.baseMapper.findByEquId(equipmentId); + } } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index 3964351..c4d6284 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java @@ -4,6 +4,7 @@ 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.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -1042,4 +1043,36 @@ return this.baseMapper.findByProIdsAndType(allProductionIds, typeList); } + @Override + public List<MdcEquipment> getEquipmentList() { + + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + if (StringUtils.isNotEmpty(user.getEquipmentIds())) { + return this.baseMapper.selectList(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, Arrays.asList(user.getEquipmentIds().split(StringPool.COMMA)))); + } + //鑾峰彇鎵�鏈変骇绾挎暟鎹� + List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder)); + //鏍规嵁鐢ㄦ埛id鑾峰彇鎷ユ湁鐨勪骇绾夸俊鎭泦鍚� + List<String> productionIds = mdcUserProductionService.queryProductionIdsByUserId(userId); + List<String> allProductionIds = new ArrayList<>(); + //鎵惧埌鎵�鏈変骇绾縤d鐨勪笂绾d + if (productionIds != null && !productionIds.isEmpty()) { + for (String productionId : productionIds) { + this.getAllProductionIds(productionList, productionId, allProductionIds); + } + } + //鏍规嵁浜х嚎闆嗗悎鏌ユ壘鎵�鏈夎澶噄d + if (allProductionIds.isEmpty()) { + return null; + } + List<MdcEquipment> equipmentIds = this.baseMapper.getEquipmentList(allProductionIds); + return equipmentIds; + } + + @Override + public List<String> getEquIdsByProIds(List<String> proIds) { + return this.baseMapper.getEquIdsByProIds(proIds); + } + } diff --git a/lxzn-module-mdc/pom.xml b/lxzn-module-mdc/pom.xml index bfb2188..51cc508 100644 --- a/lxzn-module-mdc/pom.xml +++ b/lxzn-module-mdc/pom.xml @@ -25,6 +25,11 @@ <artifactId>lxzn-module-mdc-common</artifactId> <version>3.4.3</version> </dependency> + <dependency> + <groupId>org.jeecgframework.boot</groupId> + <artifactId>lxzn-module-eam-common</artifactId> + <version>3.4.3</version> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java new file mode 100644 index 0000000..909ed5c --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/controller/DtBoardController.java @@ -0,0 +1,95 @@ +package org.jeecg.modules.board.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiParam; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.api.vo.Result; +import org.jeecg.modules.board.service.IDtBoardService; +import org.jeecg.modules.board.vo.*; +import org.jeecg.modules.system.entity.MdcProduction; +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 + * @CreateTime: 2025-05-30 + * @Description: 鏁板瓧瀛敓鐪嬫澘鎺ュ彛 + */ +@Slf4j +@Api(tags = "鏁板瓧瀛敓鐪嬫澘") +@RestController +@RequestMapping("/board/dtBoard") +public class DtBoardController { + + @Resource + private IDtBoardService dtBoardService; + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-鑾峰彇杞﹂棿鍒嗙粍", notes = "鏁板瓧瀛敓鐪嬫澘-鑾峰彇杞﹂棿鍒嗙粍") + @GetMapping("/productionList") + public Result<?> productionList() { + List<MdcProduction> result = dtBoardService.productionList(); + return Result.OK(result); + } + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧鏈堝害鍒╃敤鐜�", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧鏈堝害鍒╃敤鐜�") + @GetMapping("/equipmentMonthUtilizationRate") + public Result<?> equipmentMonthUtilizationRate(@ApiParam(value = "productionId", required = true) String productionId) { + List<EquUtilRateMonth> result = dtBoardService.equipmentMonthUtilizationRate(productionId); + return Result.OK(result); + } + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧鍒╃敤鐜�", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧鍒╃敤鐜�") + @GetMapping("/equipmentUtilizationRate") + public Result<?> equipmentUtilizationRate(@ApiParam(value = "productionId", required = true) String productionId) { + List<EquUtilRate> result = dtBoardService.equipmentUtilizationRate(productionId); + return Result.OK(result); + } + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-鏈堝害OEE", notes = "鏁板瓧瀛敓鐪嬫澘-鏈堝害OEE") + @GetMapping("/equipmentMonthOee") + public Result<?> equipmentMonthOee(@ApiParam(value = "productionId", required = true) String productionId) { + List<EquOeeMonth> result = dtBoardService.equipmentMonthOee(productionId); + return Result.OK(result); + } + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧杩愯鐘舵�佺粺璁�", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧杩愯鐘舵��") + @GetMapping("/equipmentOperationStatistics") + public Result<?> equipmentOperationStatistics(@ApiParam(value = "productionId", required = true) String productionId) { + EquOperation result = dtBoardService.equipmentOperationStatistics(productionId); + return Result.OK(result); + } + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧淇℃伅", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧淇℃伅") + @GetMapping("/equipmentRunInfo") + public Result<?> equipmentRunInfo(@ApiParam(value = "equipmentId", required = true) String equipmentId) { + List<EquRunInfo> result = dtBoardService.equipmentRunInfo(equipmentId); + return Result.OK(result); + } + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧鍋滄満缁熻", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧鍋滄満缁熻") + @GetMapping("/equDowntimeStatistics") + public Result<?> equDowntimeStatistics(@ApiParam(value = "productionId", required = true) String productionId) { + List<EquDowntimeInfo> result = dtBoardService.equDowntimeStatistics(productionId); + return Result.OK(result); + } + + @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧鎶ヨ", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧鎶ヨ") + @GetMapping("/equAlarmList") + public Result<?> equAlarmList(@ApiParam(value = "productionId", required = true) String productionId) { + List<EquAlarm> result = dtBoardService.equAlarmList(productionId); + return Result.OK(result); + } + +// @ApiOperation(value = "鏁板瓧瀛敓鐪嬫澘-璁惧鏁呴殰", notes = "鏁板瓧瀛敓鐪嬫澘-璁惧鏁呴殰") +// @GetMapping("/equAlarmList") +// public Result<?> equAlarmList(@ApiParam(value = "productionId", required = true) String productionId) { +// dtBoardService. +// } + + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java new file mode 100644 index 0000000..07069e7 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/IDtBoardService.java @@ -0,0 +1,30 @@ +package org.jeecg.modules.board.service; + +import org.jeecg.modules.board.vo.*; +import org.jeecg.modules.system.entity.MdcProduction; + +import java.util.List; + +/** + * @Author: Lius + * @CreateTime: 2025-05-30 + * @Description: + */ +public interface IDtBoardService { + + List<MdcProduction> productionList(); + + List<EquUtilRateMonth> equipmentMonthUtilizationRate(String productionId); + + List<EquUtilRate> equipmentUtilizationRate(String productionId); + + List<EquOeeMonth> equipmentMonthOee(String productionId); + + EquOperation equipmentOperationStatistics(String productionId); + + List<EquRunInfo> equipmentRunInfo(String equipmentId); + + List<EquDowntimeInfo> equDowntimeStatistics(String productionId); + + List<EquAlarm> equAlarmList(String productionId); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java new file mode 100644 index 0000000..bf79693 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/service/impl/DtBoardServiceImpl.java @@ -0,0 +1,340 @@ +package org.jeecg.modules.board.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import liquibase.pro.packaged.I; +import org.apache.commons.lang3.StringUtils; +import org.jeecg.common.constant.CommonConstant; +import org.jeecg.common.system.vo.DictModel; +import org.jeecg.modules.board.service.IDtBoardService; +import org.jeecg.modules.board.vo.*; +import org.jeecg.modules.mdc.constant.MdcConstant; +import org.jeecg.modules.mdc.entity.*; +import org.jeecg.modules.mdc.service.*; +import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.system.entity.MdcProduction; +import org.jeecg.modules.system.service.IMdcProductionService; +import org.jeecg.modules.system.service.ISysDictService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +/** + * @Author: Lius + * @CreateTime: 2025-05-30 + * @Description: + */ +@Service +public class DtBoardServiceImpl implements IDtBoardService { + + @Resource + private IMdcProductionService mdcProductionService; + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Resource + private IMdcEquipmentStatisticalInfoService mdcEquipmentStatisticalInfoService; + + @Resource + private IMdcOeeInfoService mdcOeeInfoService; + + @Resource + private IEquipmentService equipmentService; + + @Resource + private IEquipmentWorkLineService equipmentWorkLineService; + + @Resource + private IMdcDriveTypeParamConfigService mdcDriveTypeParamConfigService; + + @Resource + private ISysDictService sysDictService; + + @Resource + private IMdcDowntimeService mdcDowntimeService; + + @Resource + private IEquipmentAlarmService equipmentAlarmService; + + @Resource + private IMdcAlarmInfoService mdcAlarmInfoService; + + /** + * 杞﹂棿淇℃伅 + */ + @Override + public List<MdcProduction> productionList() { + return mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getOrgType, CommonConstant.ORG_TYPE_2).eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0).orderByAsc(MdcProduction::getProductionOrder)); + } + + /** + * 璁惧鏈堝害鍒╃敤鐜� + */ + @Override + public List<EquUtilRateMonth> equipmentMonthUtilizationRate(String productionId) { + // 缁勮杩斿洖鏁版嵁 + LocalDate now = LocalDate.now(); + Date start = DateUtils.toDate(now.plusMonths(-12).toString(), DateUtils.STR_DATE); + Date end = DateUtils.toDate(now.plusMonths(-1).toString(), DateUtils.STR_DATE); + List<String> monthBetween = DateUtils.getMonthBetween(start, end); + Map<String, EquUtilRateMonth> resultMap = monthBetween.stream().collect(Collectors.toMap( + date -> date, + date -> new EquUtilRateMonth(date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�"), + (existing, replacement) -> existing, // 澶勭悊閿啿绐佺殑鍚堝苟鍑芥暟锛堥�氬父涓嶄細鍐茬獊锛� + LinkedHashMap::new // 鎸囧畾浣跨敤LinkedHashMap淇濇寔鎻掑叆椤哄簭 + )); + List<String> proIds = mdcProductionService.findChildByProId(productionId); + if (proIds == null || proIds.isEmpty()) { + return new ArrayList<>(resultMap.values()); + } + List<String> equipmentIdList = mdcEquipmentService.getEquIdsByProIds(proIds); + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return new ArrayList<>(resultMap.values()); + } + for (String month : monthBetween) { + MdcEquipmentStatisticalInfo mdcEquipmentStatisticalInfo = mdcEquipmentStatisticalInfoService.findByEquIdsAndMonth(equipmentIdList, month.replaceAll("-", "")); + if (mdcEquipmentStatisticalInfo != null) { + if (resultMap.containsKey(month)) { + EquUtilRateMonth equUtilRateMonth = resultMap.get(month); + if (mdcEquipmentStatisticalInfo.getProcessLong().compareTo(BigDecimal.ZERO) > 0) { + equUtilRateMonth.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); + } + resultMap.put(month, equUtilRateMonth); + } + } + } + return new ArrayList<>(resultMap.values()); + } + + /** + * 璁惧鍒╃敤鐜�(鏄ㄥぉ) + */ + @Override + public List<EquUtilRate> equipmentUtilizationRate(String productionId) { + List<String> proIds = mdcProductionService.findChildByProId(productionId); + if (proIds == null || proIds.isEmpty()) { + return null; + } + List<String> equipmentIdList = mdcEquipmentService.getEquIdsByProIds(proIds); + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return null; + } + Map<String, EquUtilRate> resultMap = new LinkedHashMap<>(); + equipmentIdList.forEach(equipmentId -> { + EquUtilRate equUtilRate = new EquUtilRate(equipmentId); + resultMap.put(equipmentId, equUtilRate); + }); + String yesterday = LocalDate.now().plusDays(-1).toString(); + List<MdcEquipmentStatisticalInfo> mdcEquipmentStatisticalInfoList = mdcEquipmentStatisticalInfoService.findByEquipmentAndDate(equipmentIdList, yesterday.replaceAll("-", "")); + if (mdcEquipmentStatisticalInfoList != null && !mdcEquipmentStatisticalInfoList.isEmpty()) { + mdcEquipmentStatisticalInfoList.forEach(mdcEquipmentStatisticalInfo -> { + if (resultMap.containsKey(mdcEquipmentStatisticalInfo.getEquipmentId())) { + EquUtilRate equUtilRate = resultMap.get(mdcEquipmentStatisticalInfo.getEquipmentId()); + if (mdcEquipmentStatisticalInfo.getProcessLong().compareTo(BigDecimal.ZERO) > 0) { + equUtilRate.setUtilizationRate(mdcEquipmentStatisticalInfo.getProcessLong().divide(new BigDecimal("864"), 2, RoundingMode.HALF_UP)); + } + resultMap.put(mdcEquipmentStatisticalInfo.getEquipmentId(), equUtilRate); + } + }); + } + return new ArrayList<>(resultMap.values()); + } + + /** + * 鏈堝害璁惧缁煎悎鏁堢巼 + */ + @Override + public List<EquOeeMonth> equipmentMonthOee(String productionId) { + LocalDate now = LocalDate.now(); + Date start = DateUtils.toDate(now.plusMonths(-12).toString(), DateUtils.STR_DATE); + Date end = DateUtils.toDate(now.plusMonths(-1).toString(), DateUtils.STR_DATE); + List<String> monthBetween = DateUtils.getMonthBetween(start, end); + Map<String, EquOeeMonth> resultMap = monthBetween.stream().collect(Collectors.toMap( + date -> date, + date -> new EquOeeMonth(date.substring(date.lastIndexOf("-") + 1).replaceFirst("^0*", "") + "鏈�"), + (existing, replacement) -> existing, // 澶勭悊閿啿绐佺殑鍚堝苟鍑芥暟锛堥�氬父涓嶄細鍐茬獊锛� + LinkedHashMap::new // 鎸囧畾浣跨敤LinkedHashMap淇濇寔鎻掑叆椤哄簭 + )); + List<String> proIds = mdcProductionService.findChildByProId(productionId); + if (proIds == null || proIds.isEmpty()) { + return new ArrayList<>(resultMap.values()); + } + List<String> equipmentIdList = mdcEquipmentService.getEquIdsByProIds(proIds); + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return new ArrayList<>(resultMap.values()); + } + for (String month : monthBetween) { + BigDecimal oee = mdcOeeInfoService.findByEquIdAndMonth(equipmentIdList, month); + if (oee != null) { + EquOeeMonth equOeeMonth = resultMap.get(month); + equOeeMonth.setOee(oee.setScale(2, RoundingMode.HALF_UP)); + resultMap.put(month, equOeeMonth); + } + } + return new ArrayList<>(resultMap.values()); + } + + /** + * 璁惧鐘舵�佺粺璁� + */ + @Override + public EquOperation equipmentOperationStatistics(String productionId) { + EquOperation equOperation = new EquOperation(); + List<String> proIds = mdcProductionService.findChildByProId(productionId); + if (proIds == null || proIds.isEmpty()) { + return equOperation; + } + List<Equipment> equipmentList = equipmentService.listByProds(proIds); + if (equipmentList == null || equipmentList.isEmpty()) { + return equOperation; + } + for (Equipment equipment : equipmentList) { + if (equipment.getOporation() != null) { + switch (equipment.getOporation()) { + case 1: + case 2: + equOperation.setStandby(equOperation.getStandby() + 1); + break; + case 3: + equOperation.setRun(equOperation.getRun() + 1); + break; + case 22: + equOperation.setAlarm(equOperation.getAlarm() + 1); + break; + default: + equOperation.setShutdown(equOperation.getShutdown() + 1); + break; + } + } else { + equOperation.setShutdown(equOperation.getShutdown() + 1); + } + } + return equOperation; + } + + /** + * 璁惧杩愯淇℃伅 + */ + @Override + public List<EquRunInfo> equipmentRunInfo(String equipmentId) { + List<EquRunInfo> equRunInfoList = new ArrayList<>(); + Equipment equipment = equipmentService.findByEquId(equipmentId); + if (equipment != null) { + //濉厖璁惧鍩虹淇℃伅 + equRunInfoList.add(new EquRunInfo("璁惧鍚嶇О", equipment.getEquipmentname(), "")); + equRunInfoList.add(new EquRunInfo("璁惧缂栧彿", equipment.getEquipmentid(), "")); + if (equipment.getOporation() != null && equipment.getOporation() != 0) { + String saveTableName = equipment.getSavetablename(); + Map<String, Object> mapData = equipmentWorkLineService.getDataList(saveTableName); + if (mapData != null) { + //鑾峰彇 MDC 椹卞姩瀵瑰簲鐨勫睍绀哄弬鏁� 骞舵牴鎹甼ey 鎷艰浠� workData 鏌ヨ鐨勬暟鎹� + List<MdcDriveTypeParamConfig> mdcDriveTypeParamList = mdcDriveTypeParamConfigService.getShowDriveParam(equipment.getDrivetype()); + if (mdcDriveTypeParamList != null && !mdcDriveTypeParamList.isEmpty()) { + List<DictModel> dictItems = sysDictService.getDictItems(CommonConstant.DICT_EQUIPMENT_RUN_UNIT); + Map<String, DictModel> resultMap = new HashMap<>(); + dictItems.forEach(dictModel -> { + resultMap.put(dictModel.getText(), dictModel); + }); + for (MdcDriveTypeParamConfig mdcDriveTypeParamConfig : mdcDriveTypeParamList) { + EquRunInfo equRunInfo = new EquRunInfo(); + String englishName = mdcDriveTypeParamConfig.getEnglishName(); + String chineseName = mdcDriveTypeParamConfig.getChineseName(); + equRunInfo.setKey(chineseName); + if (mapData.containsKey(englishName)) { + Object object = mapData.get(englishName); + String value = ""; + if ("CollectTime".equals(englishName)) { + Date date = object == null ? null : (Date) object; + value = DateUtils.format(date, DateUtils.STR_DATE_TIME_SMALL); + } else if ("ZUOLAN".equals(equipment.getDrivetype()) && "spindlespeed".equals(englishName) && equipment.getOporation() == 3) { + // ZUOLAN璁惧涓昏酱杞�熷瓧娈祍pindlespeed + value = String.valueOf(((new Random().nextInt(35)) + 1) * 100); + } else if ("ZUOLAN".equals(equipment.getDrivetype()) && "spindleload".equals(englishName) && equipment.getOporation() == 3) { + // ZUOLAN璁惧涓昏酱璐熻嵎瀛楁spindleload + value = String.valueOf(Integer.valueOf(new Random().nextInt(21))); + } else if ("ZUOLAN".equals(equipment.getDrivetype()) && "spindlebeilv".equals(englishName) && equipment.getOporation() == 3) { + // ZUOLAN璁惧涓昏酱鍊嶇巼瀛楁spindlebeilv + value = String.valueOf((new Random().nextInt(13)) * 10); + } else if ("ZUOLAN".equals(equipment.getDrivetype()) && "feedbeilv".equals(englishName) && equipment.getOporation() == 3) { + // ZUOLAN璁惧杩涚粰鍊嶇巼瀛楁feedbeilv + value = String.valueOf((new Random().nextInt(13)) * 10); + } else { + value = object == null ? "" : object.toString(); + } + equRunInfo.setValue(value); + // 璁剧疆鍗曚綅 + if (resultMap.containsKey(chineseName)) { + DictModel dictModel = resultMap.get(chineseName); + equRunInfo.setUnit(dictModel.getValue()); + } + equRunInfoList.add(equRunInfo); + } + } + + } + } + } + } + return equRunInfoList; + } + + /** + * 璁惧鍋滄満缁熻 + */ + @Override + public List<EquDowntimeInfo> equDowntimeStatistics(String productionId) { + List<String> proIds = mdcProductionService.findChildByProId(productionId); + if (proIds == null || proIds.isEmpty()) { + return null; + } + List<String> equipmentIdList = mdcEquipmentService.getEquIdsByProIds(proIds); + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return null; + } + LocalDate end = LocalDate.now(); + LocalDate start = end.plusDays(-30); + List<EquDowntimeInfo> result = mdcDowntimeService.equDowntimeStatistics(equipmentIdList, start.toString(), end.toString()); + result.forEach(equDowntimeInfo -> { + equDowntimeInfo.setDuration(equDowntimeInfo.getDuration().setScale(2, RoundingMode.HALF_UP)); + }); + return result; + } + + /** + * 璁惧鎶ヨ鍒楄〃 + */ + @Override + public List<EquAlarm> equAlarmList(String productionId) { + List<EquAlarm> result = new ArrayList<>(); + List<String> proIds = mdcProductionService.findChildByProId(productionId); + if (proIds == null || proIds.isEmpty()) { + return null; + } + List<String> equipmentIdList = mdcEquipmentService.getEquIdsByProIds(proIds); + if (equipmentIdList == null || equipmentIdList.isEmpty()) { + return null; + } + List<EquipmentAlarm> equipmentAlarmList = equipmentAlarmService.list(new LambdaQueryWrapper<EquipmentAlarm>().in(EquipmentAlarm::getEquipmentid, equipmentIdList).orderByDesc(EquipmentAlarm::getCollecttime).isNotNull(EquipmentAlarm::getAlarmNo).last("TOP 15")); + if (equipmentAlarmList == null || equipmentAlarmList.isEmpty()) { + return null; + } + for (EquipmentAlarm equipmentAlarm : equipmentAlarmList) { + MdcAlarmInfo mdcAlarmInfo = mdcAlarmInfoService.findAlarmContent(equipmentAlarm.getAlarmNo(), equipmentAlarm.getEquipmentid()); + EquAlarm equAlarm = new EquAlarm(); + equAlarm.setEquipmentId(equipmentAlarm.getEquipmentid()); + if (mdcAlarmInfo != null) { + equAlarm.setAlarmInfo(mdcAlarmInfo.getAlarmContent()); + } else { + equAlarm.setAlarmInfo(equipmentAlarm.getAlarmContent()); + } + result.add(equAlarm); + } + return result; + } + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAlarm.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAlarm.java new file mode 100644 index 0000000..63ac695 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquAlarm.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +/** + * @Author: Lius + * @CreateTime: 2025-06-09 + * @Description: 璁惧鎶ヨ淇℃伅 + */ +@Data +public class EquAlarm { + + /** + * 璁惧缂栧彿 + */ + private String equipmentId; + /** + * 鎶ヨ淇℃伅 + */ + private String alarmInfo; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquDowntimeInfo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquDowntimeInfo.java new file mode 100644 index 0000000..0e08d53 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquDowntimeInfo.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: Lius + * @CreateTime: 2025-06-09 + * @Description: 璁惧鍋滄満缁熻 + */ +@Data +public class EquDowntimeInfo { + + /** + * 鍋滄満鍘熷洜 + */ + private String shutdownInfo; + /** + * 鍋滄満鏃堕暱 + */ + private BigDecimal duration; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOeeMonth.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOeeMonth.java new file mode 100644 index 0000000..ecf89aa --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOeeMonth.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: Lius + * @CreateTime: 2025-05-30 + * @Description: + */ +@Data +public class EquOeeMonth { + private String month; + private BigDecimal oee = BigDecimal.ZERO; + + public EquOeeMonth(String month) { + this.month = month; + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOperation.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOperation.java new file mode 100644 index 0000000..7788f84 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquOperation.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +/** + * @Author: Lius + * @CreateTime: 2025-06-06 + * @Description: + */ +@Data +public class EquOperation { + private Integer shutdown = 0; + private Integer alarm = 0; + private Integer standby = 0; + private Integer run = 0; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquRunInfo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquRunInfo.java new file mode 100644 index 0000000..a394dbd --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquRunInfo.java @@ -0,0 +1,24 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +/** + * @Author: Lius + * @CreateTime: 2025-06-06 + * @Description: + */ +@Data +public class EquRunInfo { + private String key; + private String value; + private String unit; + + public EquRunInfo() { + } + + public EquRunInfo(String key, String value, String unit) { + this.key = key; + this.value = value; + this.unit = unit; + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquStatus.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquStatus.java new file mode 100644 index 0000000..aed1047 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquStatus.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +/** + * @Author: Lius + * @CreateTime: 2025-06-05 + * @Description: + */ +@Data +public class EquStatus { + private String equipmentId; + private Integer state; + private String plantName; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRate.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRate.java new file mode 100644 index 0000000..879f6b2 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRate.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: Lius + * @CreateTime: 2025-05-30 + * @Description: + */ +@Data +public class EquUtilRate { + private String deviceNum; + private BigDecimal utilizationRate = BigDecimal.ZERO; + + public EquUtilRate(String deviceNum) { + this.deviceNum = deviceNum; + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRateMonth.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRateMonth.java new file mode 100644 index 0000000..8983c4c --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/board/vo/EquUtilRateMonth.java @@ -0,0 +1,20 @@ +package org.jeecg.modules.board.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +/** + * @Author: Lius + * @CreateTime: 2025-05-30 + * @Description: + */ +@Data +public class EquUtilRateMonth { + private String month; + private BigDecimal utilizationRate = BigDecimal.ZERO; + + public EquUtilRateMonth(String month) { + this.month = month; + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java new file mode 100644 index 0000000..e9ea792 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java @@ -0,0 +1,85 @@ +package org.jeecg.modules.mdc.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +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.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.service.IMdcDowntimeOperatorService; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; +import org.jeecg.modules.mdc.vo.SplitDowntimeVo; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Description: 鎿嶄綔宸ュ仠鏈哄緟鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +@Slf4j +@Api(tags = "鎿嶄綔宸ュ仠鏈哄緟鏈鸿〃") +@RestController +@RequestMapping("/mdc/operator/mdcDowntime") +public class MdcDowntimeOperatorController extends JeecgController<MdcDowntime, IMdcDowntimeOperatorService> { + + + @Resource + private IMdcDowntimeOperatorService mdcDowntimeService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mdcDowntimeVo + * @param pageNo + * @param pageSize + * @return + */ + @AutoLog(value = "寰呮満鍋滄満琛�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "寰呮満鍋滄満琛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "寰呮満鍋滄満琛�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(MdcDowntimeVo mdcDowntimeVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + Page<MdcDowntimeDto> page = new Page<MdcDowntimeDto>(pageNo, pageSize); + IPage<MdcDowntimeDto> pageList = mdcDowntimeService.pageList(mdcDowntimeVo, page); + return Result.OK(pageList); + } + + /** + * 缁存姢鍋滄満 + * + * @param mdcDowntimeVo + * @return + */ + @AutoLog(value = "寰呮満鍋滄満琛�-缁存姢鍋滄満") + @ApiOperation(value = "寰呮満鍋滄満琛�-缁存姢鍋滄満", notes = "寰呮満鍋滄満琛�-缁存姢鍋滄満") + @RequestMapping(value = "/updateReason", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> updateReason(@RequestBody MdcDowntimeVo mdcDowntimeVo) { + mdcDowntimeService.updateReason(mdcDowntimeVo); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 鍋滄満鎷嗗垎 + * + * @param splitDowntimeVo + * @return + */ + @AutoLog(value = "寰呮満鍋滄満琛�-鍋滄満鎷嗗垎") + @ApiOperation(value = "寰呮満鍋滄満琛�-鍋滄満鎷嗗垎", notes = "寰呮満鍋滄満琛�-鍋滄満鎷嗗垎") + @RequestMapping(value = "/splitDowntime", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> splitDowntime(@RequestBody SplitDowntimeVo splitDowntimeVo) { + mdcDowntimeService.splitDowntime(splitDowntimeVo); + return Result.OK("鎷嗗垎鎴愬姛!"); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java index 2bfc351..6c65a0b 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.beust.jcommander.internal.Lists; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -10,9 +11,9 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.mdc.dto.OptionsDto; import org.jeecg.modules.mdc.entity.MdcDowntimeReason; import org.jeecg.modules.mdc.service.IMdcDowntimeReasonService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -166,4 +167,24 @@ return Result.OK(result); } + /** + * 鍋滄満鍘熷洜涓嬫媺閫夋嫨 + * + * @return + */ + @AutoLog(value = "鍋滄満鍘熷洜琛�-鍋滄満鍘熷洜涓嬫媺閫夋嫨") + @ApiOperation(value = "鍋滄満鍘熷洜琛�-鍋滄満鍘熷洜涓嬫媺閫夋嫨", notes = "鍋滄満鍘熷洜琛�-鍋滄満鍘熷洜涓嬫媺閫夋嫨") + @GetMapping(value = "/reasonList") + public Result<List<OptionsDto>> reasonList() { + List<MdcDowntimeReason> result = mdcDowntimeReasonService.list(); + List<OptionsDto> list = Lists.newArrayList(); + result.forEach(mdcDowntimeReason -> { + OptionsDto optionsDto = new OptionsDto(); + optionsDto.setValue(mdcDowntimeReason.getId()); + optionsDto.setLabel(mdcDowntimeReason.getDowntimeDescription()); + list.add(optionsDto); + }); + return Result.OK(list); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java index 69a1a9f..5c1e872 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java @@ -111,6 +111,17 @@ } /** + * 鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅 + */ + @AutoLog(value = "璁惧琛�-鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅") + @ApiOperation(value = "璁惧琛�-鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅", notes = "璁惧琛�-鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅") + @GetMapping(value = "/getEquipmentList") + public Result<List<MdcEquipment>> getEquipmentList() { + List<MdcEquipment> list = mdcEquipmentService.getEquipmentList(); + return Result.OK(list); + } + + /** * 璁惧鐩戞帶鍒楄〃 */ @AutoLog(value = "璁惧琛�-璁惧鐩戞帶鍒楄〃") diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java index cefff4d..b931cea 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java @@ -81,5 +81,18 @@ @Excel(name = "澶囨敞", width = 15) @ApiModelProperty(value = "澶囨敞") private String remark; + /** + * 褰曞叆绫诲瀷 + */ + @Excel(name = "褰曞叆绫诲瀷", width = 15) + @ApiModelProperty(value = "褰曞叆绫诲瀷") + @Dict(dicCode = "enter_type") + private Integer enterType; + /** + * 鍋滄満鏃堕暱 + */ + @Excel(name = "鍋滄満鏃堕暱", width = 15) + @ApiModelProperty(value = "鍋滄満鏃堕暱") + private Integer shutdownDuration; } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java deleted file mode 100644 index 304cc7b..0000000 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningOverallEquipmentEfficiencyJob.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.jeecg.modules.mdc.job; - -import lombok.extern.slf4j.Slf4j; -import org.jeecg.common.util.DateUtils; -import org.jeecg.modules.mdc.service.IMdcOverallEquipmentEfficiencyService; -import org.jeecg.modules.mdc.util.ThrowableUtil; -import org.jeecg.modules.quartz.entity.QuartzJob; -import org.jeecg.modules.quartz.entity.SysQuartzLog; -import org.jeecg.modules.quartz.service.IQuartzJobService; -import org.jeecg.modules.quartz.service.ISysQuartzLogService; -import org.jeecg.modules.system.service.ISysAnnouncementService; -import org.quartz.*; - -import javax.annotation.Resource; -import java.util.Date; -import java.util.List; - -/** - * @Description: 瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 - * @author: LiuS - * @create: 2023-07-24 10:26 - */ -@PersistJobDataAfterExecution -@DisallowConcurrentExecution -@Slf4j -public class RunningOverallEquipmentEfficiencyJob implements Job { - - /** - * 鑻ュ弬鏁板彉閲忓悕淇敼 QuartzJobController涓篃闇�瀵瑰簲淇敼 鏃堕棿锛� yyyyMMdd 渚嬶細 20230414 - */ - private String parameter; - - public void setParameter(String parameter) { - this.parameter = parameter; - } - - @Resource - private IQuartzJobService quartzJobService; - - @Resource - private ISysAnnouncementService sysAnnouncementService; - - @Resource - private ISysQuartzLogService sysQuartzLogService; - - @Resource - private IMdcOverallEquipmentEfficiencyService mdcOverallEquipmentEfficiencyService; - - @Override - public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { - SysQuartzLog quartzLog = new SysQuartzLog(); - quartzLog.setCreateTime(new Date()); - List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); - if (byJobClassName != null && !byJobClassName.isEmpty()) { - quartzLog.setJobId(byJobClassName.get(0).getId()); - } - quartzLog.setParams(this.parameter); - log.info("瀹氭椂璁$畻璁惧缁煎悎鏁堢巼OEE浠诲姟 RunningOverallEquipmentEfficiencyJob start! 鏃堕棿:" + DateUtils.now(), this.parameter); - long startTime = System.currentTimeMillis(); - try { - mdcOverallEquipmentEfficiencyService.runningOverallEquipmentEfficiency(this.parameter); - quartzLog.setIsSuccess(0); - } catch (Exception e) { - quartzLog.setIsSuccess(-1); - quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); - // 鍙戦�佹秷鎭�氱煡 - sysAnnouncementService.jobSendMessage("瀹氭椂缁熻娈垫椂闂翠换鍔�", quartzLog.getExceptionDetail()); - } - long endTime = System.currentTimeMillis(); - quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); - sysQuartzLogService.save(quartzLog); - } - -} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java index eafa8fc..b40b9be 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java @@ -90,6 +90,7 @@ downtime.setTheDate(finalDate); downtime.setStartDate(mdcEquipmentWaitSectionDto.getStartTime()); downtime.setEndDate(mdcEquipmentWaitSectionDto.getEndTime()); + downtime.setShutdownDuration(DateUtils.differentMinutes(downtime.getStartDate(), downtime.getEndDate())); return downtime; }).collect(Collectors.toList()); if (!downtimeList.isEmpty()) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebsocketPushEquStatusJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebsocketPushEquStatusJob.java new file mode 100644 index 0000000..b0a70c8 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/WebsocketPushEquStatusJob.java @@ -0,0 +1,108 @@ +package org.jeecg.modules.mdc.job; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.constant.WebsocketConst; +import org.jeecg.common.util.RedisUtil; +import org.jeecg.modules.board.vo.EquStatus; +import org.jeecg.modules.mdc.entity.Equipment; +import org.jeecg.modules.mdc.service.IEquipmentService; +import org.jeecg.modules.mdc.util.ThrowableUtil; +import org.jeecg.modules.message.websocket.WebSocket; +import org.jeecg.modules.quartz.entity.QuartzJob; +import org.jeecg.modules.quartz.entity.SysQuartzLog; +import org.jeecg.modules.quartz.service.IQuartzJobService; +import org.jeecg.modules.quartz.service.ISysQuartzLogService; +import org.jeecg.modules.system.service.IMdcProductionService; +import org.quartz.*; + +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @Author: Lius + * @CreateTime: 2025-06-05 + * @Description: websocket鎺ㄩ�佽澶囩姸鎬佷换鍔� + */ +@DisallowConcurrentExecution +@Slf4j +public class WebsocketPushEquStatusJob implements Job { + + @Resource + private IQuartzJobService quartzJobService; + + @Resource + private ISysQuartzLogService sysQuartzLogService; + + @Resource + private RedisUtil redisUtil; + + @Resource + private WebSocket webSocket; + + @Resource + private IEquipmentService equipmentService; + + @Resource + private IMdcProductionService mdcProductionService; + + final private static String redisKey = "board:equipment:status:"; + + @Override + public void execute(JobExecutionContext context) throws JobExecutionException { + SysQuartzLog quartzLog = new SysQuartzLog(); + quartzLog.setCreateTime(new Date()); + List<QuartzJob> byJobClassName = this.quartzJobService.findByJobClassName(this.getClass().getName()); + if (byJobClassName != null && !byJobClassName.isEmpty()) { + quartzLog.setJobId(byJobClassName.get(0).getId()); + } + long startTime = System.currentTimeMillis(); + try { + List<Equipment> equipmentList = equipmentService.list(); + if (equipmentList != null && !equipmentList.isEmpty()) { + List<EquStatus> equStatusList = new ArrayList<>(); + for (Equipment equipment : equipmentList) { + if (equipment.getOporation() == null) { + equipment.setOporation(0); + } + String key = redisKey + equipment.getEquipmentid(); + if (redisUtil.hasKey(key)) { + Integer status = (Integer) redisUtil.get(key); + if (!status.equals(equipment.getOporation())) { + EquStatus equStatus = new EquStatus(); + equStatus.setEquipmentId(equipment.getEquipmentid()); + equStatus.setState(equipment.getOporation()); + // 閫氳繃equipmentId鑾峰彇璁惧杞﹂棿鍚嶇О + String productionName = mdcProductionService.findProName(equipment.getEquipmentid()); + equStatus.setPlantName(productionName); + equStatusList.add(equStatus); + redisUtil.set(key, equipment.getOporation()); + } + } else { + EquStatus equStatus = new EquStatus(); + equStatus.setEquipmentId(equipment.getEquipmentid()); + equStatus.setState(equipment.getOporation()); + // 閫氳繃equipmentId鑾峰彇璁惧杞﹂棿鍚嶇О + String productionName = mdcProductionService.findProName(equipment.getEquipmentid()); + equStatus.setPlantName(productionName); + equStatusList.add(equStatus); + redisUtil.set(key, equipment.getOporation()); + } + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put(WebsocketConst.MSG_CMD, "equStatus"); + jsonObject.put("data", equStatusList); + webSocket.sendMessage(jsonObject.toJSONString()); + } + quartzLog.setIsSuccess(0); + } catch (Exception e) { + quartzLog.setIsSuccess(-1); + quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + } + long endTime = System.currentTimeMillis(); + quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); + sysQuartzLogService.save(quartzLog); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcAlarmInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcAlarmInfoMapper.java index 67a2a02..486151e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcAlarmInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcAlarmInfoMapper.java @@ -1,6 +1,7 @@ package org.jeecg.modules.mdc.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; import org.jeecg.modules.mdc.entity.MdcAlarmInfo; /** @@ -11,4 +12,5 @@ */ public interface MdcAlarmInfoMapper extends BaseMapper<MdcAlarmInfo> { + MdcAlarmInfo findAlarmContent(@Param("alarmNo") String alarmNo, @Param("equipmentId") String equipmentId); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java index 5446655..b1ea9c5 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeMapper.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.board.vo.EquDowntimeInfo; import org.jeecg.modules.mdc.dto.MdcDowntimeDto; import org.jeecg.modules.mdc.entity.MdcDowntime; import org.jeecg.modules.mdc.vo.MdcDowntimeVo; @@ -20,4 +21,6 @@ IPage<MdcDowntimeDto> pageList(Page<MdcDowntimeDto> page, @Param("mdcDowntimeVo") MdcDowntimeVo mdcDowntimeVo); List<MdcDowntime> findPlanTimeDuration(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate, @Param("closeType") String closeType); + + List<EquDowntimeInfo> equDowntimeStatistics(@Param("equipmentIdList") List<String> equipmentIdList, @Param("start") String start, @Param("end") String end); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java new file mode 100644 index 0000000..bc7b4a8 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.mdc.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; + +import java.util.List; + +/** + * @Description: 鎿嶄綔宸ュ緟鏈哄仠鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +public interface MdcDowntimeOperatorMapper extends BaseMapper<MdcDowntime> { + + IPage<MdcDowntimeDto> page(Page<MdcDowntimeDto> page, @Param(Constants.WRAPPER) QueryWrapper<MdcDowntimeDto> queryWrapper); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java index 03bb2bd..5843f5a 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentStatisticalInfoMapper.java @@ -5,6 +5,8 @@ import org.jeecg.modules.mdc.dto.MdcEquipmentStatisticalDto; import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo; +import java.util.List; + /** * @Description: 璁惧鍗曟棩杩愯鏁版嵁琛� * @Author: jeecg-boot @@ -28,4 +30,8 @@ Integer selectProcessLong(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); MdcEquipmentStatisticalDto findByEquipmentAndMonth(@Param("equipmentId") String equipmentId, @Param("date") String date); + + MdcEquipmentStatisticalInfo findByEquIdsAndMonth(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month); + + List<MdcEquipmentStatisticalInfo> findByEquipmentAndDate(@Param("equipmentIdList") List<String> equipmentIdList, @Param("date") String date); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java index 041a098..af54a04 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcOeeInfoMapper.java @@ -7,6 +7,9 @@ import org.jeecg.modules.mdc.entity.MdcOeeInfo; import org.jeecg.modules.mdc.vo.MdcOeeInfoVo; +import java.math.BigDecimal; +import java.util.List; + /** * @Description: OEE琛� * @Author: lius @@ -22,4 +25,6 @@ * @return */ IPage<MdcOeeInfo> pageList(Page<MdcOeeInfo> page, @Param("mdcOeeInfoVo") MdcOeeInfoVo mdcOeeInfoVo); + + BigDecimal findByEquIdAndMonth(@Param("equipmentIdList") List<String> equipmentIdList, @Param("month") String month); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcAlarmInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcAlarmInfoMapper.xml index 00e233e..4e71d72 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcAlarmInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcAlarmInfoMapper.xml @@ -2,4 +2,13 @@ <!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.MdcAlarmInfoMapper"> + <select id="findAlarmContent" resultType="org.jeecg.modules.mdc.entity.MdcAlarmInfo"> + SELECT + t1.* + FROM + mdc_alarm_info t1 + LEFT JOIN mdc_equipment t2 ON t1.drive_type = t2.drive_type + WHERE + t2.equipment_id = #{equipmentId} AND t1.alarm_code = #{alarmNo} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml index e5adea6..898cd96 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeMapper.xml @@ -40,4 +40,24 @@ AND t2.downtime_type = #{closeType} AND t1.the_date = #{validDate} </select> + + <select id="equDowntimeStatistics" resultType="org.jeecg.modules.board.vo.EquDowntimeInfo"> + SELECT + t2.downtime_description AS shutdown_info, + SUM ( DATEDIFF( SECOND, t1.start_date, t1.end_date ) ) / 3600.0 AS duration_hours + FROM + mdc_downtime t1 + LEFT JOIN mdc_downtime_reason t2 ON t1.reason_id = t2.id + WHERE + t1.reason_id != '' + AND t1.the_date BETWEEN #{start} AND #{end} + AND t1.equipment_id IN + <foreach collection="equipmentIdList" item="equipmentId" index="index" open="(" close=")" separator=","> + #{ equipmentId } + </foreach> + GROUP BY + t2.downtime_description + ORDER BY + duration_hours DESC + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml new file mode 100644 index 0000000..db58e0e --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml @@ -0,0 +1,14 @@ +<?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.MdcDowntimeOperatorMapper"> + + <select id="page" resultType="org.jeecg.modules.mdc.dto.MdcDowntimeDto"> + SELECT + t1.* , + t2.downtime_type downtimeType, + t2.downtime_description downtimeDescription + FROM mdc_downtime t1 LEFT JOIN mdc_downtime_reason t2 ON t1.reason_id = t2.id + ${ew.customSqlSegment} + ORDER BY t1.create_time DESC + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml index 2d4f020..e542769 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentStatisticalInfoMapper.xml @@ -26,4 +26,34 @@ WHERE equipment_id = #{equipmentId} AND the_date LIKE CONCAT(#{date}, '%') </select> + + <select id="findByEquIdsAndMonth" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo"> + SELECT + AVG(open_long) openLong, + AVG(close_long) closeLong, + AVG(wait_long) waitLong, + AVG(process_long) processLong, + AVG(error_long) errorLong + FROM + mdc_equipment_statistical_info + WHERE + equipment_id IN + <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> + #{ id } + </foreach> + AND the_date LIKE CONCAT(#{month}, '%') + </select> + + <select id="findByEquipmentAndDate" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo"> + SELECT + * + FROM + mdc_equipment_statistical_info + WHERE + equipment_id IN + <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> + #{ id } + </foreach> + AND the_date = #{date} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml index 664b2fa..3261ab9 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcOeeInfoMapper.xml @@ -27,4 +27,17 @@ </where> ORDER BY the_date DESC, equipment_id ASC </select> + + <select id="findByEquIdAndMonth" resultType="java.math.BigDecimal"> + SELECT + AVG(oee) + FROM + mdc_oee_info + WHERE + the_date LIKE CONCAT(#{month}, '%') + AND equipment_id IN + <foreach collection="equipmentIdList" item="id" index="index" open="(" close=")" separator=","> + #{ id } + </foreach> + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java new file mode 100644 index 0000000..5723186 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.mdc.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; +import org.jeecg.modules.mdc.vo.SplitDowntimeVo; + +/** + * @Description: 鎿嶄綔宸ュ緟鏈哄仠鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +public interface IMdcDowntimeOperatorService extends IService<MdcDowntime> { + + IPage<MdcDowntimeDto> pageList(MdcDowntimeVo mdcDowntimeVo, Page<MdcDowntimeDto> page); + + void updateReason(MdcDowntimeVo mdcDowntimeVo); + + void splitDowntime(SplitDowntimeVo splitDowntimeVo); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java index 80807ff..db2f22e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeService.java @@ -3,11 +3,13 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.board.vo.EquDowntimeInfo; import org.jeecg.modules.mdc.dto.MdcDowntimeDto; import org.jeecg.modules.mdc.entity.MdcDowntime; import org.jeecg.modules.mdc.vo.MdcDowntimeVo; import javax.servlet.http.HttpServletRequest; +import java.util.List; /** * @Description: 寰呮満鍋滄満琛� @@ -35,4 +37,6 @@ * @return */ Integer findPlanTimeDuration(String equipmentId, String validDate, String closeType); + + List<EquDowntimeInfo> equDowntimeStatistics(List<String> equipmentIdList, String start, String end); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java index 4b27b44..516822e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentStatisticalInfoService.java @@ -4,6 +4,8 @@ import org.jeecg.modules.mdc.entity.MdcEquipmentStatisticalInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** * @Description: 璁惧鍗曟棩杩愯鏁版嵁琛� * @Author: lius @@ -29,4 +31,8 @@ Integer selectProcessLong(String equipmentId, String validDate); MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date); + + MdcEquipmentStatisticalInfo findByEquIdsAndMonth(List<String> equipmentIdList, String month); + + List<MdcEquipmentStatisticalInfo> findByEquipmentAndDate(List<String> equipmentIdList, String date); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java index f544260..1a0bdab 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcOeeInfoService.java @@ -9,6 +9,8 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; +import java.math.BigDecimal; +import java.util.List; /** * @Description: OEE琛� @@ -44,4 +46,5 @@ */ void computeOee(MdcOeeComputeVo mdcOeeComputeVo); + BigDecimal findByEquIdAndMonth(List<String> equipmentIdList, String month); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcAlarmInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcAlarmInfoServiceImpl.java index 4f20292..12b90a1 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcAlarmInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcAlarmInfoServiceImpl.java @@ -15,4 +15,8 @@ @Service public class MdcAlarmInfoServiceImpl extends ServiceImpl<MdcAlarmInfoMapper, MdcAlarmInfo> implements IMdcAlarmInfoService { + @Override + public MdcAlarmInfo findAlarmContent(String alarmNo, String equipmentId) { + return this.baseMapper.findAlarmContent(alarmNo, equipmentId); + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java index 8826b16..e914e8e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; +import org.jeecg.modules.board.vo.EquDowntimeInfo; import org.jeecg.modules.mdc.dto.MdcDowntimeDto; import org.jeecg.modules.mdc.entity.MdcDowntime; import org.jeecg.modules.mdc.mapper.MdcDowntimeMapper; @@ -68,6 +69,11 @@ return result; } + @Override + public List<EquDowntimeInfo> equDowntimeStatistics(List<String> equipmentIdList, String start, String end) { + return this.baseMapper.equDowntimeStatistics(equipmentIdList, start, end); + } + private List<String> getEquipmentIds(String userId, MdcDowntimeVo mdcDowntimeVo) { if (StringUtils.isNotEmpty(mdcDowntimeVo.getEquipmentId())) { return Collections.singletonList(mdcDowntimeVo.getEquipmentId()); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java new file mode 100644 index 0000000..cdb8268 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java @@ -0,0 +1,171 @@ + +package org.jeecg.modules.mdc.service.impl; + +import cn.hutool.core.bean.BeanUtil; +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.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.beust.jcommander.internal.Lists; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.mapper.MdcDowntimeOperatorMapper; +import org.jeecg.modules.mdc.service.IMdcDowntimeOperatorService; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; +import org.jeecg.modules.mdc.vo.SplitDowntimeVo; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; + +/** + * @Description: 鎿嶄綔宸ュ緟鏈哄仠鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +@Service +public class MdcDowntimeServiceOperatorImpl extends ServiceImpl<MdcDowntimeOperatorMapper, MdcDowntime> implements IMdcDowntimeOperatorService { + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Override + public IPage<MdcDowntimeDto> pageList(MdcDowntimeVo mdcDowntimeVo, Page<MdcDowntimeDto> page) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + // 鑾峰彇璁惧ID鍒楄〃 + List<String> equipmentIds = Lists.newArrayList(); + if (StringUtils.isNotBlank(user.getEquipmentIds())) { + equipmentIds = Arrays.asList(user.getEquipmentIds().split(StringPool.COMMA)); + }else { + equipmentIds = getEquipmentIds(userId, mdcDowntimeVo); + } + + // 濡傛灉璁惧ID鍒楄〃涓虹┖锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉 + if (equipmentIds == null || equipmentIds.isEmpty()) { + return new Page<>(page.getCurrent(), page.getSize(), 0); + } + + QueryWrapper<MdcDowntimeDto> queryWrapper = Wrappers.query(); + if (CollectionUtils.isNotEmpty(equipmentIds)) { + queryWrapper.in("t1.equipment_id", equipmentIds); + } + if (StringUtils.isNotBlank(mdcDowntimeVo.getEquipmentId())) { + queryWrapper.eq("t1.equipment_id", mdcDowntimeVo.getEquipmentId()); + } + if (Objects.nonNull(mdcDowntimeVo.getStartDate())) { + queryWrapper.ge("t1.start_date", mdcDowntimeVo.getStartDate()); + } + if (Objects.nonNull(mdcDowntimeVo.getEndDate())) { + queryWrapper.le("t1.end_date", mdcDowntimeVo.getEndDate()); + } + if (StringUtils.isNotBlank(mdcDowntimeVo.getDowntimeDescription())) { + queryWrapper.eq("t2.id", mdcDowntimeVo.getDowntimeDescription()); + } + + return this.baseMapper.page(page, queryWrapper); + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void updateReason(MdcDowntimeVo mdcDowntimeVo) { + if (StringUtils.isEmpty(mdcDowntimeVo.getDownTimeIds())) { + throw new JeecgBootException("璇烽�夋嫨闇�瑕佺淮鎶ゅ仠鏈虹殑鏁版嵁"); + } + + List<MdcDowntime> mdcDowntimeList = this.listByIds(Arrays.asList(mdcDowntimeVo.getDownTimeIds().split(StringPool.COMMA))); + mdcDowntimeList.forEach(mdcDowntime -> { + mdcDowntime.setReasonId(mdcDowntimeVo.getReasonId()); + }); + this.updateBatchById(mdcDowntimeList); + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public void splitDowntime(SplitDowntimeVo splitDowntimeVo) { + if (StringUtils.isBlank(splitDowntimeVo.getId())) { + throw new JeecgBootException("璇烽�夋嫨闇�瑕佹媶鍒嗗仠鏈虹殑鏁版嵁"); + } + + MdcDowntime mdcDowntime = this.getById(splitDowntimeVo.getId()); + + if (StringUtils.isNotBlank(mdcDowntime.getReasonId())) { + throw new JeecgBootException("宸茶缃仠鏈哄師鍥狅紝鏃犳硶鎷嗗垎鍋滄満"); + } + + //姣旇緝鎷嗗垎涓�娈电殑鏃ユ湡鏄惁鍐嶅尯闂磋寖鍥村唴锛堝紑濮嬫椂闂达細startTime 缁撴潫鏃堕棿锛氬叆鏃犱簩娈垫椂闂达紝鍒欏彇endTime锛� + if (Objects.nonNull(splitDowntimeVo.getFirstMiddleTime())) { + + //鏍¢獙涓�娈垫棩鏈熸槸鍚﹀ぇ浜巗tartTime锛屽惁锛屾姏鍑哄紓甯� + if (Objects.isNull(splitDowntimeVo.getSecondMiddleTime())) { + if (splitDowntimeVo.getStartDate().compareTo(splitDowntimeVo.getFirstMiddleTime()) != -1 || splitDowntimeVo.getFirstMiddleTime().compareTo(splitDowntimeVo.getEndDate()) != -1) { + throw new JeecgBootException("鎷嗗垎涓�娈垫椂闂存湭鍦ㄥ紑濮嬫椂闂村拰缁撴潫鏃堕棿涔嬪唴锛岃妫�鏌ワ紒"); + } + }else { + if (splitDowntimeVo.getStartDate().compareTo(splitDowntimeVo.getFirstMiddleTime()) != -1 || splitDowntimeVo.getFirstMiddleTime().compareTo(splitDowntimeVo.getSecondMiddleTime()) != -1) { + throw new JeecgBootException("鎷嗗垎涓�娈垫椂闂存湭鍦ㄥ紑濮嬫椂闂村拰鎷嗗垎浜屾缁撴潫鏃堕棿涔嬪唴锛岃妫�鏌ワ紒"); + } + } + + }else { + throw new JeecgBootException("璇风淮鎶ゆ媶鍒嗕竴娈电粨鏉熸椂闂�"); + } + + if (Objects.nonNull(splitDowntimeVo.getSecondMiddleTime())) { + //鏍¢獙浜屾鏃ユ湡鏄惁瀛樺湪浜庝竴娈垫棩鏈熷拰endTime涔嬮棿 + + if (splitDowntimeVo.getFirstMiddleTime().compareTo(splitDowntimeVo.getSecondMiddleTime()) != -1 || splitDowntimeVo.getSecondMiddleTime().compareTo(splitDowntimeVo.getEndDate()) != -1) { + throw new JeecgBootException("鎷嗗垎浜屾鏃堕棿鏈湪鎷嗗垎涓�娈电粨鏉熸椂闂村拰缁撴潫鏃堕棿涔嬪唴锛岃妫�鏌ワ紒"); + } + } + + List<MdcDowntime> list = Lists.newArrayList(); + + //璁剧疆鎷嗗垎1娈� + if (Objects.nonNull(splitDowntimeVo.getFirstMiddleTime())) { + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getStartDate(), splitDowntimeVo.getFirstMiddleTime(), splitDowntimeVo.getFirstDowntimeDescription())); + } + + //璁剧疆鎷嗗垎2娈碉紝浜屾涓嶅瓨鍦ㄥ垯灏唀ndDate浣滀负鎷嗗垎浜屾 + if (Objects.nonNull(splitDowntimeVo.getSecondMiddleTime())) { + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getFirstMiddleTime(), splitDowntimeVo.getSecondMiddleTime(), splitDowntimeVo.getSecondDowntimeDescription())); + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getSecondMiddleTime(), splitDowntimeVo.getEndDate(), splitDowntimeVo.getThirdDowntimeDescription())); + }else { + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getFirstMiddleTime(), splitDowntimeVo.getEndDate(), splitDowntimeVo.getThirdDowntimeDescription())); + } + //淇濆瓨鎷嗗垎鏁版嵁骞跺垹闄ゅ師鏈夋暟鎹� + if (this.saveBatch(list)) { + this.removeById(mdcDowntime); + } + } + + private MdcDowntime checkMdcDowntime(MdcDowntime mdcDowntime, Date startDate, Date endDate, String downtimeDescription) { + MdcDowntime mdcDowntimeInfo = new MdcDowntime(); + BeanUtil.copyProperties(mdcDowntime, mdcDowntimeInfo); + mdcDowntimeInfo.setId(IdWorker.getIdStr()); + mdcDowntimeInfo.setStartDate(startDate); + mdcDowntimeInfo.setEndDate(endDate); + mdcDowntimeInfo.setShutdownDuration(DateUtils.differentMinutes(startDate, endDate)); + mdcDowntimeInfo.setEnterType(2); + mdcDowntimeInfo.setReasonId(StringUtils.isNotBlank(downtimeDescription) ? downtimeDescription : StringPool.EMPTY); + return mdcDowntimeInfo; + } + + private List<String> getEquipmentIds(String userId, MdcDowntimeVo mdcDowntimeVo) { + if (StringUtils.isNotEmpty(mdcDowntimeVo.getEquipmentId())) { + return Collections.singletonList(mdcDowntimeVo.getEquipmentId()); + } + return mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java index 87b92ae..c149df2 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalInfoServiceImpl.java @@ -323,4 +323,14 @@ public MdcEquipmentStatisticalDto findByEquipmentAndMonth(String equipmentId, String date) { return this.baseMapper.findByEquipmentAndMonth(equipmentId, date); } + + @Override + public MdcEquipmentStatisticalInfo findByEquIdsAndMonth(List<String> equipmentIdList, String month) { + return this.baseMapper.findByEquIdsAndMonth(equipmentIdList, month); + } + + @Override + public List<MdcEquipmentStatisticalInfo> findByEquipmentAndDate(List<String> equipmentIdList, String date) { + return this.baseMapper.findByEquipmentAndDate(equipmentIdList, date); + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java index d166372..dd23560 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcOeeInfoServiceImpl.java @@ -243,4 +243,9 @@ super.saveBatch(result); } + @Override + public BigDecimal findByEquIdAndMonth(List<String> equipmentIdList, String month) { + return this.baseMapper.findByEquIdAndMonth(equipmentIdList, month); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java index 97cc304..80ff720 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java @@ -31,6 +31,16 @@ private String parentId; /** + * 鍋滄満鍘熷洜 + */ + private String downtimeDescription; + + /** + * 鍋滄満ids + */ + private String downTimeIds; + + /** * 璁惧ids */ private List<String> equipmentIdList; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java new file mode 100644 index 0000000..407df54 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java @@ -0,0 +1,70 @@ +package org.jeecg.modules.mdc.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 鍋滄満鎷嗗垎鎿嶄綔鍏ュ弬 + */ +@Data +public class SplitDowntimeVo { + + /** + * 鍋滄満鎷嗗垎id + */ + private String id; + + /** + * 寮�濮嬫椂闂� + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "寮�濮嬫椂闂�") + private Date startDate; + + /** + * 鎷嗗垎1娈电粨鏉熸椂闂� + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鎷嗗垎1娈靛紑濮嬫椂闂�") + private Date firstMiddleTime; + + /** + * 鎷嗗垎1娈靛仠鏈哄師鍥� + */ + @ApiModelProperty(value = "鎷嗗垎1娈靛仠鏈哄師鍥�") + private String firstDowntimeDescription; + + /** + * 鎷嗗垎2娈电粨鏉熸椂闂� + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鎷嗗垎2娈靛紑濮嬫椂闂�") + private Date secondMiddleTime; + + /** + * 鎷嗗垎2娈靛仠鏈哄師鍥� + */ + @ApiModelProperty(value = "鎷嗗垎2娈靛仠鏈哄師鍥�") + private String secondDowntimeDescription; + + /** + * 缁撴潫鏃堕棿 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "缁撴潫鏃堕棿") + private Date endDate; + + /** + * 鎷嗗垎3娈靛仠鏈哄師鍥� + */ + @ApiModelProperty(value = "鎷嗗垎3娈靛仠鏈哄師鍥�") + private String thirdDowntimeDescription; +} diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java index 4b271a6..c1e760d 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java @@ -74,7 +74,7 @@ log.info("-------token----username---"+principal); //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 SysUser sysUser = sysUserService.getUserByName(principal); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java index b2ccf23..35d7d6d 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java @@ -2,6 +2,9 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import javax.annotation.Resource; import javax.websocket.*; import javax.websocket.server.PathParam; @@ -23,7 +26,7 @@ @Slf4j @ServerEndpoint("/websocket/{userId}") public class WebSocket { - + /**绾跨▼瀹夊叏Map*/ private static ConcurrentHashMap<String, Session> sessionPool = new ConcurrentHashMap<>(); @@ -34,14 +37,23 @@ @Resource private JeecgRedisClient jeecgRedisClient; + private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); //==========銆恮ebsocket鎺ュ彈銆佹帹閫佹秷鎭瓑鏂规硶 鈥斺�� 鍏蜂綋鏈嶅姟鑺傜偣鎺ㄩ�亀s娑堟伅銆�======================================================================================== + @OnOpen public void onOpen(Session session, @PathParam(value = "userId") String userId) { try { sessionPool.put(userId, session); log.info("銆愮郴缁� WebSocket銆戞湁鏂扮殑杩炴帴锛屾�绘暟涓�:" + sessionPool.size()); + + // 鍚姩蹇冭烦浠诲姟锛屾瘡鍒嗛挓鍙戦�佷竴娆″績璺虫秷鎭� +// scheduler.scheduleAtFixedRate(() -> { +// pushMessage(userId, "{\"cmd\":\"" + WebsocketConst.CMD_USER + "\",\"txt\":\"" + "蹇冭烦鍝嶅簲" + "\"}"); +// }, 0, 1, TimeUnit.MINUTES); + } catch (Exception e) { + log.error("銆愮郴缁� WebSocket銆憃nOpen 寮傚父", e); } } @@ -50,6 +62,8 @@ try { sessionPool.remove(userId); log.info("銆愮郴缁� WebSocket銆戣繛鎺ユ柇寮�锛屾�绘暟涓�:" + sessionPool.size()); + // 鍙栨秷蹇冭烦浠诲姟 + scheduler.shutdown(); } catch (Exception e) { e.printStackTrace(); } @@ -93,12 +107,11 @@ log.error(e.getMessage(), e); } } - log.info("銆愮郴缁� WebSocket銆戠兢鍙戞秷鎭�:" + message); + log.info("銆�3D瀹炴椂鏁版嵁 WebSocket銆戞秷鎭�" ); } catch (Exception e) { log.error(e.getMessage(), e); } } - /** * ws鎺ュ彈瀹㈡埛绔秷鎭� @@ -110,14 +123,14 @@ }else{ log.debug("銆愮郴缁� WebSocket銆戞敹鍒板鎴风娑堟伅:" + message); } - + //------------------------------------------------------------------------------ - JSONObject obj = new JSONObject(); - //涓氬姟绫诲瀷 - obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_CHECK); - //娑堟伅鍐呭 - obj.put(WebsocketConst.MSG_TXT, "蹇冭烦鍝嶅簲"); - this.pushMessage(userId, obj.toJSONString()); +// JSONObject obj = new JSONObject(); +// //涓氬姟绫诲瀷 +// obj.put(WebsocketConst.MSG_CMD, WebsocketConst.CMD_CHECK); +// //娑堟伅鍐呭 +// obj.put(WebsocketConst.MSG_TXT, "蹇冭烦鍝嶅簲"); +// this.pushMessage(userId, obj.toJSONString()); //------------------------------------------------------------------------------ } @@ -129,11 +142,11 @@ */ @OnError public void onError(Session session, Throwable t) { - log.warn("銆愮郴缁� WebSocket銆戞秷鎭嚭鐜伴敊璇�"); + log.warn("銆愮郴缁� WebSocket銆戞秷鎭嚭鐜伴敊璇�",t); //t.printStackTrace(); } //==========銆愮郴缁� WebSocket鎺ュ彈銆佹帹閫佹秷鎭瓑鏂规硶 鈥斺�� 鍏蜂綋鏈嶅姟鑺傜偣鎺ㄩ�亀s娑堟伅銆�======================================================================================== - + //==========銆愰噰鐢╮edis鍙戝竷璁㈤槄妯″紡鈥斺�旀帹閫佹秷鎭��======================================================================================== /** @@ -187,5 +200,5 @@ } } //=======銆愰噰鐢╮edis鍙戝竷璁㈤槄妯″紡鈥斺�旀帹閫佹秷鎭��========================================================================================== - + } \ No newline at end of file diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java index 3e7dff6..e577cb7 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java @@ -121,7 +121,7 @@ } SysUser sysUser = sysUserService.getOne(queryWrapper); //update-end-author:wangshuai date:20200601 for: 鐧诲綍浠g爜楠岃瘉鐢ㄦ埛鏄惁娉ㄩ攢bug锛宨f鏉′欢姘歌繙涓篺alse - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, loginType); if(!result.isSuccess()) { return result; } @@ -397,7 +397,7 @@ }else { //鐧诲綍妯″紡锛屾牎楠岀敤鎴锋湁鏁堟�� SysUser sysUser = sysUserService.getUserByPhone(mobile); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { String message = result.getMessage(); String userNotExist="璇ョ敤鎴蜂笉瀛樺湪锛岃娉ㄥ唽"; @@ -458,7 +458,7 @@ //鏍¢獙鐢ㄦ埛鏈夋晥鎬� SysUser sysUser = sysUserService.getUserByPhone(phone); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } @@ -626,7 +626,7 @@ //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 SysUser sysUser = sysUserService.getUserByName(username); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java index 9e8a0f6..8337273 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java @@ -218,7 +218,7 @@ //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 SysUser sysUser = sysUserService.getUserByName(username); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } 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 f53d482..fe64c7a 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 @@ -61,4 +61,8 @@ List<String> findTeamValue(@Param("userId") String userId, @Param("productionList") List<String> productionList); List<String> findProIdsByUId(@Param("userId") String userId, @Param("allProductionIds") List<String> allProductionIds); + + List<String> findChildByProId(@Param("productionId") String productionId); + + String findProName(@Param("equipmentId") String equipmentId); } 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 7d0b8f2..ae5f5d3 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 @@ -138,4 +138,67 @@ </foreach> AND user_id = #{userId} </select> + + <select id="findChildByProId" resultType="java.lang.String"> + WITH temp ( id ) AS ( + SELECT + id + FROM + mdc_production + WHERE + id = #{ productionId } + AND mdc_flag = '1' UNION ALL + SELECT + a.id + FROM + mdc_production a + INNER JOIN temp ON a.parent_id = temp.id + WHERE + a.mdc_flag = '1' + ) SELECT + * + FROM + temp + </select> + + <select id="findProName" resultType="java.lang.String"> + WITH production_hierarchy AS ( + SELECT + t3.id, + t3.parent_id, + t3.production_name, + t3.org_type, + 0 AS level + FROM + mdc_equipment t1 + JOIN + mdc_production_equipment t2 ON t1.id = t2.equipment_id + JOIN + mdc_production t3 ON t2.production_id = t3.id + WHERE + t1.equipment_id = #{equipmentId} + + UNION ALL + SELECT + t4.id, + t4.parent_id, + t4.production_name, + t4.org_type, + ph.level + 1 + FROM + production_hierarchy ph + JOIN + mdc_production t4 ON ph.parent_id = t4.id + WHERE + ph.parent_id IS NOT NULL + ) + SELECT TOP 1 + production_name + FROM + production_hierarchy + WHERE + org_type = 2 + ORDER BY + level ASC + </select> </mapper> 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 104a9db..d5d6e64 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 @@ -175,4 +175,14 @@ * @return */ List<String> findProIdsByUId(String userId, List<String> allProductionIds); + + /** + * + * @param productionId + * @return + */ + List<String> findChildByProId(String productionId); + + + String findProName(String equipmentId); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index 48fad04..103f93a 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java @@ -221,7 +221,7 @@ * @param sysUser * @return */ - Result checkUserIsEffective(SysUser sysUser); + Result checkUserIsEffective(SysUser sysUser, String loginType); /** * 鏌ヨ琚�昏緫鍒犻櫎鐨勭敤鎴� 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 c502486..a3128e2 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 @@ -627,4 +627,14 @@ super.update(updateWrapper); } } + + @Override + public List<String> findChildByProId(String productionId) { + return this.baseMapper.findChildByProId(productionId); + } + + @Override + public String findProName(String equipmentId) { + return this.baseMapper.findProName(equipmentId); + } } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 37f72de..8d9799b 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -440,7 +440,7 @@ * @return */ @Override - public Result<?> checkUserIsEffective(SysUser sysUser) { + public Result<?> checkUserIsEffective(SysUser sysUser, String loginType) { Result<?> result = new Result<Object>(); //鎯呭喌1锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴蜂笉瀛樺湪 if (sysUser == null) { @@ -464,7 +464,7 @@ } //鎯呭喌4锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佺郴棣栨浣跨敤锛岄渶淇敼瀵嗙爜 List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FIRST_LOGIN); - if (dictList != null && !dictList.isEmpty()) { + if (!"terminal".equals(loginType) && dictList != null && !dictList.isEmpty()) { if (CommonConstant.DEL_FLAG_1.equals(Integer.valueOf(dictList.get(0).getValue())) && CommonConstant.DEL_FLAG_1.equals(sysUser.getPasswordFlag())) { baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "绯婚娆$櫥褰曠郴缁燂紝璇烽噸缃瘑鐮侊紒", CommonConstant.LOG_TYPE_1, null); result.setCode(5001); diff --git a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml index d79ea82..5b27cd5 100644 --- a/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml +++ b/lxzn-module-system/lxzn-system-start/src/main/resources/application-dev.yml @@ -311,7 +311,13 @@ deploy: #宸ユ帶缃�/娑夊瘑缃戦儴缃� 0涓烘秹瀵嗙綉 1涓哄伐鎺х綉 deployType: 0 - #娑夊瘑缃戜紶杈搉c鏂囦欢澶� - secretFolder: D:\\hy_test\\a - #宸ユ帶缃戠洃鎺c鏂囦欢澶� - workFolder: D:\\hy_test\\b + #娑夊瘑缃戜紶杈撳伐鎺х綉nc鏂囦欢澶�(鎸囨淳璁惧nc鏂囦欢) 宸ユ帶缃戜紶杈撴秹瀵嗙綉nc鏂囦欢澶�(瑙f瀽鍥炰紶鍚庣殑nc鏂囦欢) + secretFolder: D:\\test\\a +file: + monitor: + # 涓変釜鐩戞帶鐩綍閰嶇疆 + paths: + - D:\\hy_test\\ncFile #宸ユ帶璐熻矗瑙f瀽閲岄潰鐨勬枃浠�;娑夊瘑缃戣繘琛岃В鏋愬洖浼犵殑鎿嶄綔 + - D:\\hy_test\\b + - D:\\hy_test\\c + interval: 10000 # 鐩戞帶闂撮殧(ms) diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java index 38db085..c259364 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java @@ -1,5 +1,8 @@ package org.jeecg.modules.tms.controller; +import java.io.File; +import java.io.IOException; +import java.net.URLEncoder; import java.util.Arrays; import java.util.Map; import javax.servlet.http.HttpServletRequest; @@ -7,6 +10,8 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; import org.jeecg.common.api.vo.Result; import org.jeecg.common.system.query.QueryGenerator; import org.jeecg.modules.tms.entity.*; @@ -575,4 +580,98 @@ IPage<SharpeeningVo> resultPage = baseToolsService.pageWithSharpedAndConfig(page, queryWrapper); return Result.OK(resultPage); } + + + /** + * 瀵煎叆妯℃澘涓嬭浇 + * + */ + @RequestMapping(value = "/loadTemplate") + public void loadTemplate(HttpServletRequest request, HttpServletResponse response) throws IOException { + + Map<String,String[]> req = request.getParameterMap(); + String paraTypeFlag = ""; + if(req.get("paraTypeFlag") != null){ + paraTypeFlag = req.get("paraTypeFlag")[0]; + } + if("1".equals(paraTypeFlag)){ + Workbook workbook = WorkbookFactory.create(new File("D:\\opt\\upFiles\\鍒�鍏蜂俊鎭鍏ユā鏉�-閫氱敤鍙傛暟.xlsx")); + //瀵煎嚭Workbook + //璁剧疆鍝嶅簲澶� + String fileName = "鍒�鍏蜂俊鎭鍏ユā鏉�-閫氱敤鍙傛暟.xlsx"; + // 瀵规枃浠跺悕杩涜URL缂栫爜锛岄槻姝腑鏂囦贡鐮� + String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); + // 灏哤orkbook鍐欏叆鍝嶅簲杈撳嚭娴� + try { // try-with-resources鑷姩鍏抽棴璧勬簮 + workbook.write(response.getOutputStream()); + response.flushBuffer(); + } catch (IOException e) { + // 寮傚父澶勭悊锛堝璁板綍鏃ュ織锛� + throw new IOException("涓嬭浇妯℃澘澶辫触", e); + } + }else if("2".equals(paraTypeFlag)){ + Workbook workbook = WorkbookFactory.create(new File("D:\\opt\\upFiles\\鍒�鍏蜂俊鎭鍏ユā鏉�-瀛斿姞宸ュ伐鍏�.xlsx")); + String fileName = "鍒�鍏蜂俊鎭鍏ユā鏉�-瀛斿姞宸ュ伐鍏�.xlsx"; + String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); + try { + workbook.write(response.getOutputStream()); + response.flushBuffer(); + } catch (IOException e) { + throw new IOException("涓嬭浇妯℃澘澶辫触", e); + } + }else if("3".equals(paraTypeFlag)){ + Workbook workbook = WorkbookFactory.create(new File("D:\\opt\\upFiles\\鍒�鍏蜂俊鎭鍏ユā鏉�-铻虹汗宸ュ叿.xlsx")); + String fileName = "鍒�鍏蜂俊鎭鍏ユā鏉�-铻虹汗宸ュ叿.xlsx"; + String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); + try { + workbook.write(response.getOutputStream()); + response.flushBuffer(); + } catch (IOException e) { + throw new IOException("涓嬭浇妯℃澘澶辫触", e); + } + }else if("4".equals(paraTypeFlag)){ + Workbook workbook = WorkbookFactory.create(new File("D:\\opt\\upFiles\\鍒�鍏蜂俊鎭鍏ユā鏉�-閾e墛宸ュ叿.xlsx")); + String fileName = "鍒�鍏蜂俊鎭鍏ユā鏉�-閾e墛宸ュ叿.xlsx"; + String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); + try { + workbook.write(response.getOutputStream()); + response.flushBuffer(); + } catch (IOException e) { + throw new IOException("涓嬭浇妯℃澘澶辫触", e); + } + }else if("5".equals(paraTypeFlag)){ + Workbook workbook = WorkbookFactory.create(new File("D:\\opt\\upFiles\\鍒�鍏蜂俊鎭鍏ユā鏉�-杞﹀墛宸ュ叿.xlsx")); + String fileName = "鍒�鍏蜂俊鎭鍏ユā鏉�-杞﹀墛宸ュ叿.xlsx"; + String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); + try { + workbook.write(response.getOutputStream()); + response.flushBuffer(); + } catch (IOException e) { + throw new IOException("涓嬭浇妯℃澘澶辫触", e); + } + }else if("6".equals(paraTypeFlag)){ + Workbook workbook = WorkbookFactory.create(new File("D:\\opt\\upFiles\\鍒�鍏蜂俊鎭鍏ユā鏉�-鍒�鐗�.xlsx")); + String fileName = "鍒�鍏蜂俊鎭鍏ユā鏉�-鍒�鐗�.xlsx"; + String encodedFileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + response.setHeader("Content-Disposition", "attachment; filename*=UTF-8''" + encodedFileName); + try { + workbook.write(response.getOutputStream()); + response.flushBuffer(); + } catch (IOException e) { + throw new IOException("涓嬭浇妯℃澘澶辫触", e); + } + } + + } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/BaseTools.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/BaseTools.java index aaa61bf..d99691d 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/BaseTools.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/BaseTools.java @@ -108,4 +108,9 @@ @DateTimeFormat(pattern="yyyy-MM-dd") @ApiModelProperty(value = "鏇存柊鏃堕棿") private Date updateTime; + + /**宸ュ叿鍥剧墖*/ + @Excel(name = "宸ュ叿鍥剧墖", width = 15) + @ApiModelProperty(value = "宸ュ叿鍥剧墖") + private String toolPicture; } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java index 0ce3390..feab8e2 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaBladeVo.java @@ -163,4 +163,7 @@ @ApiModelProperty(value = "澶囨敞") private String remark; + @ApiModelProperty(value = "宸ュ叿鍥剧墖") + private String toolPicture; + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java index 1cfa455..a01e7d7 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaCommonToolVo.java @@ -94,4 +94,7 @@ @ApiModelProperty(value = "澶囨敞") private String remark; + @ApiModelProperty(value = "宸ュ叿鍥剧墖") + private String toolPicture; + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java index 59dbf3c..45ce3ff 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java @@ -188,4 +188,7 @@ @ApiModelProperty(value = "澶囨敞") private String remark; + @ApiModelProperty(value = "宸ュ叿鍥剧墖") + private String toolPicture; + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java index 8315462..e8b4d74 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaMillToolVo.java @@ -191,4 +191,7 @@ @ApiModelProperty(value = "澶囨敞") private String remark; + @ApiModelProperty(value = "宸ュ叿鍥剧墖") + private String toolPicture; + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java index b2a9781..ddae238 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaThreadingToolVo.java @@ -160,4 +160,7 @@ @ApiModelProperty(value = "澶囨敞") private String remark; + @ApiModelProperty(value = "宸ュ叿鍥剧墖") + private String toolPicture; + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java index 304fcc5..00f3d00 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaTurningToolsVo.java @@ -198,4 +198,7 @@ @ApiModelProperty(value = "澶囨敞") private String remark; + @ApiModelProperty(value = "宸ュ叿鍥剧墖") + private String toolPicture; + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml index 5b34e8c..c6df81e 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml @@ -13,6 +13,7 @@ t.standard_code standardCode, t.tool_model toolModel, t.parama_table_name paramaTableName, + t.tool_picture toolPicture, t1.application_type applicationType, t1.supplier_id supplierId, t1.province_city provinceCity, @@ -81,6 +82,7 @@ t.standard_code standardCode, t.tool_model toolModel, t.parama_table_name paramaTableName, + t.tool_picture toolPicture, t1.application_type applicationType, t1.supplier_id supplierId, t1.province_city provinceCity, @@ -113,6 +115,7 @@ t.standard_code standardCode, t.tool_model toolModel, t.parama_table_name paramaTableName, + t.tool_picture toolPicture, t1.application_type applicationType, t1.supplier_id supplierId, t1.province_city provinceCity, @@ -171,6 +174,7 @@ t.standard_code standardCode, t.tool_model toolModel, t.parama_table_name paramaTableName, + t.tool_picture toolPicture, t1.application_type applicationType, t1.supplier_id supplierId, t1.province_city provinceCity, @@ -238,6 +242,7 @@ t.standard_code standardCode, t.tool_model toolModel, t.parama_table_name paramaTableName, + t.tool_picture toolPicture, t1.application_type applicationType, t1.supplier_id supplierId, t1.province_city provinceCity, @@ -309,6 +314,7 @@ t.standard_code standardCode, t.tool_model toolModel, t.parama_table_name paramaTableName, + t.tool_picture toolPicture, t1.application_type applicationType, t1.supplier_id supplierId, t1.province_city provinceCity, diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java index ad52aa3..36f8868 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/InboundOrderServiceImpl.java @@ -262,6 +262,7 @@ num++; //杞崲鍥炲瓧绗︿覆骞朵繚鐣欏墠瀵奸浂 String result = String.format("%0" + currentCode.length() + "d", num); + //鎵撳嵃浜岀淮鐮� //淇濆瓨鍏ュ簱娴佹按 InStoreDetail inStoreDetail = new InStoreDetail(); inStoreDetail.setInboundTime(inboundTime); -- Gitblit v1.9.3