From 4337640b7ab86136baed2fd6aa959e4828a75cea Mon Sep 17 00:00:00 2001 From: Lius <Lius2225@163.com> Date: 星期四, 07 十二月 2023 17:33:51 +0800 Subject: [PATCH] 计算加工工件个数算法和密码安全策略 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOverFlagMapper.java | 15 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java | 10 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 4 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java | 39 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOverFlagServiceImpl.java | 19 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcWorkshopInfoController.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcProcessCountVo.java | 16 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcProcessCount.java | 84 +++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcProcessCountController.java | 45 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDeviceCalendarVo.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentOverFlag.java | 47 + lxzn-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java | 49 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java | 42 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java | 107 +++- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java | 17 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java | 16 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java | 48 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOverFlagMapper.xml | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java | 317 +++++++++++++ lxzn-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java | 13 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningProcessCountJob.java | 63 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java | 6 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml | 8 lxzn-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java | 17 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml | 9 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 128 +--- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcTorqueConfigMapper.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java | 21 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java | 5 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java | 7 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java | 14 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOverFlagService.java | 15 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportShiftQueryVo.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java | 2 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java | 10 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java | 3 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml | 11 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentOverFlagController.java | 154 ++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml | 14 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml | 9 50 files changed, 1,269 insertions(+), 167 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 53ce0fd..af37a4b 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 @@ -91,6 +91,10 @@ String PREFIX_USER_TOKEN = "prefix_user_token_"; // /** Token缂撳瓨鏃堕棿锛�3600绉掑嵆涓�灏忔椂 */ // int TOKEN_EXPIRE_TIME = 3600; + /** + * Token缂撳瓨鏃堕棿(灏忔椂) + */ + Integer TOKEN_EXPIRE_TIME = 1; /** * 鐧诲綍浜岀淮鐮� @@ -523,4 +527,49 @@ */ String JOB_SEND_MSG = "job_fail_send_msg_role"; + /** + * 榛樿瀵嗙爜鏈�澶у皾璇曟鏁� + */ + //Integer MAX_ATTEMPTS = 3; + + /** + * 榛樿鐢ㄦ埛閿佸畾鏃堕暱(鍒嗛挓) + */ + //Integer USER_FREEZE_TIME = 5; + + /** + * 瀵嗙爜鏈�澶у皾璇曟鏁扮殑瀛楀吀缂栧彿 + */ + String DICT_MAX_ATTEMPTS = "login_max_attempts"; + + /** + * 鐢ㄦ埛鐧诲綍澶辫触閿佸畾鏃堕暱瀛楀吀缂栧彿 + */ + String DICT_USER_FREEZE = "user_freeze_time"; + + /** + * redis鐧诲綍娆℃暟key + */ + String PREFIX_LOGIN_COUNT = "prefix_login_count_"; + + /** + * token缂撳瓨鏃堕棿瀛楀吀缂栧彿 + */ + String DICT_TOKEN_EXPIRE_TIME = "token_expire_time"; + + /** + * 榛樿鐢ㄦ埛瀵嗙爜鏇存敼鍛ㄦ湡(澶�) + */ + //Integer PASSWORD_EXPIRATION_PERIOD = 90; + + /** + * 鐢ㄦ埛瀵嗙爜鏇存敼鍛ㄦ湡瀛楀吀缂栧彿 + */ + String DICT_PASSWORD_EXPIRATION = "password_expiration_period"; + + /** + * 鐢ㄦ埛棣栨鐧诲綍寮哄埗鏇存敼瀛楀吀缂栧彿 + */ + String DICT_USER_FIRST_LOGIN = "user_first_login"; + } diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java index 4c82608..43599e8 100644 --- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java +++ b/lxzn-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java @@ -7,15 +7,6 @@ import com.auth0.jwt.interfaces.DecodedJWT; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.base.Joiner; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.Date; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - import org.apache.shiro.SecurityUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; @@ -28,6 +19,14 @@ import org.jeecg.common.util.SpringContextUtils; import org.jeecg.common.util.oConvertUtils; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; +import java.io.OutputStream; +import java.util.Date; + /** * @Author Scott * @Date 2018-07-12 14:23 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 c5c36a4..1bb9b57 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 @@ -20,7 +20,6 @@ import org.jeecg.config.shiro.filters.JwtFilter; import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.DependsOn; @@ -94,6 +93,7 @@ filterChainDefinitionMap.put("/sys/common/static/**", "anon");//鍥剧墖棰勮 &涓嬭浇鏂囦欢涓嶉檺鍒秚oken filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf棰勮 filterChainDefinitionMap.put("/generic/**", "anon");//pdf棰勮闇�瑕佹枃浠� + filterChainDefinitionMap.put("/sys/user/updatePassword", "anon");//棣栭〉鐢ㄦ埛淇敼瀵嗙爜 filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //鐧诲綍浜岀淮鐮� filterChainDefinitionMap.put("/sys/getQrcodeToken/**", "anon"); //鐩戝惉鎵爜 diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentOverFlagController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentOverFlagController.java new file mode 100644 index 0000000..9e914b1 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentOverFlagController.java @@ -0,0 +1,154 @@ +package org.jeecg.modules.mdc.controller; + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +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.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.query.QueryGenerator; +import org.jeecg.modules.mdc.entity.MdcEquipmentOverFlag; +import org.jeecg.modules.mdc.service.IMdcEquipmentOverFlagService; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.servlet.ModelAndView; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Arrays; + +/** + * @Description: 璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛� + * @Author: Lius + * @Date: 2023-12-05 + * @Version: V1.0 + */ +@Slf4j +@Api(tags = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�") +@RestController +@RequestMapping("/mdc/mdcEquipmentOverFlag") +public class MdcEquipmentOverFlagController extends JeecgController<MdcEquipmentOverFlag, IMdcEquipmentOverFlagService> { + + @Resource + private IMdcEquipmentOverFlagService mdcEquipmentOverFlagService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mdcEquipmentOverFlag + * @param pageNo + * @param pageSize + * @param req + * @return + */ + @AutoLog(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(MdcEquipmentOverFlag mdcEquipmentOverFlag, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + QueryWrapper<MdcEquipmentOverFlag> queryWrapper = QueryGenerator.initQueryWrapper(mdcEquipmentOverFlag, req.getParameterMap()); + Page<MdcEquipmentOverFlag> page = new Page<MdcEquipmentOverFlag>(pageNo, pageSize); + IPage<MdcEquipmentOverFlag> pageList = mdcEquipmentOverFlagService.page(page, queryWrapper); + return Result.OK(pageList); + } + + /** + * 娣诲姞 + * + * @param mdcEquipmentOverFlag + * @return + */ + @AutoLog(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-娣诲姞") + @ApiOperation(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-娣诲姞", notes = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-娣诲姞") + @PostMapping(value = "/add") + public Result<?> add(@RequestBody MdcEquipmentOverFlag mdcEquipmentOverFlag) { + mdcEquipmentOverFlagService.save(mdcEquipmentOverFlag); + return Result.OK("娣诲姞鎴愬姛锛�"); + } + + /** + * 缂栬緫 + * + * @param mdcEquipmentOverFlag + * @return + */ + @AutoLog(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-缂栬緫") + @ApiOperation(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-缂栬緫", notes = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-缂栬緫") + @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> edit(@RequestBody MdcEquipmentOverFlag mdcEquipmentOverFlag) { + mdcEquipmentOverFlagService.updateById(mdcEquipmentOverFlag); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 閫氳繃id鍒犻櫎 + * + * @param id + * @return + */ + @AutoLog(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-閫氳繃id鍒犻櫎") + @ApiOperation(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-閫氳繃id鍒犻櫎", notes = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-閫氳繃id鍒犻櫎") + @DeleteMapping(value = "/delete") + public Result<?> delete(@RequestParam(name = "id", required = true) String id) { + mdcEquipmentOverFlagService.removeById(id); + return Result.OK("鍒犻櫎鎴愬姛!"); + } + + /** + * 鎵归噺鍒犻櫎 + * + * @param ids + * @return + */ + @AutoLog(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-鎵归噺鍒犻櫎") + @ApiOperation(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-鎵归噺鍒犻櫎", notes = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-鎵归噺鍒犻櫎") + @DeleteMapping(value = "/deleteBatch") + public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) { + this.mdcEquipmentOverFlagService.removeByIds(Arrays.asList(ids.split(","))); + return Result.OK("鎵归噺鍒犻櫎鎴愬姛锛�"); + } + + /** + * 閫氳繃id鏌ヨ + * + * @param id + * @return + */ + @AutoLog(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-閫氳繃id鏌ヨ") + @ApiOperation(value = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-閫氳繃id鏌ヨ", notes = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�-閫氳繃id鏌ヨ") + @GetMapping(value = "/queryById") + public Result<?> queryById(@RequestParam(name = "id", required = true) String id) { + MdcEquipmentOverFlag mdcEquipmentOverFlag = mdcEquipmentOverFlagService.getById(id); + return Result.OK(mdcEquipmentOverFlag); + } + + /** + * 瀵煎嚭excel + * + * @param request + * @param mdcEquipmentOverFlag + */ + @RequestMapping(value = "/exportXls") + public ModelAndView exportXls(HttpServletRequest request, MdcEquipmentOverFlag mdcEquipmentOverFlag) { + return super.exportXls(request, mdcEquipmentOverFlag, MdcEquipmentOverFlag.class, "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�"); + } + + /** + * 閫氳繃excel瀵煎叆鏁版嵁 + * + * @param request + * @param response + * @return + */ + @RequestMapping(value = "/importExcel", method = RequestMethod.POST) + public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) { + return super.importExcel(request, response, MdcEquipmentOverFlag.class); + } + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcProcessCountController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcProcessCountController.java new file mode 100644 index 0000000..29e9c9c --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcProcessCountController.java @@ -0,0 +1,45 @@ +package org.jeecg.modules.mdc.controller; + +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.modules.mdc.entity.MdcProcessCount; +import org.jeecg.modules.mdc.service.IProcessCountService; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +/** + * @author Lius + * @Description: mdc璁惧鍔犲伐涓暟琛� + * @date 2023/12/7 16:50 + */ +@Slf4j +@Api(tags = "mdc璁惧鍔犲伐涓暟琛�") +@RestController +@RequestMapping("/mdc/mdcProcessCount") +public class MdcProcessCountController extends JeecgController<MdcProcessCount, IProcessCountService> { + + @Resource + private IProcessCountService processCountService; + +/* *//** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mdcProcessCountVo + * @param pageNo + * @param pageSize + * @param req + * @return + *//* + @AutoLog(value = "mdc璁惧鍔犲伐涓暟琛�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "mdc璁惧鍔犲伐涓暟琛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "mdc璁惧鍔犲伐涓暟琛�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(MdcProcessCountVo mdcProcessCountVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + + }*/ +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcWorkshopInfoController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcWorkshopInfoController.java index 1ee528d..d62cdb5 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcWorkshopInfoController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcWorkshopInfoController.java @@ -8,7 +8,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; @@ -229,7 +228,8 @@ try { String workshopId = mdcWorkshopEquipmentVo.getWorkshopId(); for (String equipmentId : mdcWorkshopEquipmentVo.getEquipmentIdList()) { - if (!StringUtils.isEmpty(equipmentId) && !"null".equals(equipmentId)) { + List<MdcEquipment> list = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, equipmentId)); + if (list != null && !list.isEmpty()) { MdcWorkshopEquipment mdcWorkshopEquipment = new MdcWorkshopEquipment(); mdcWorkshopEquipment.setWorkshopId(workshopId); mdcWorkshopEquipment.setEquipmentId(equipmentId); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentOverFlag.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentOverFlag.java new file mode 100644 index 0000000..0b9d0fa --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcEquipmentOverFlag.java @@ -0,0 +1,47 @@ +package org.jeecg.modules.mdc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.system.base.entity.JeecgEntity; +import org.jeecgframework.poi.excel.annotation.Excel; + +import java.io.Serializable; + +/** + * @Description: 璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛� + * @Author: Lius + * @Date: 2023-12-05 + * @Version: V1.0 + */ +@Data +@TableName("mdc_equipment_over_flag") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "mdc_equipment_over_flag瀵硅薄", description = "璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛�") +public class MdcEquipmentOverFlag extends JeecgEntity implements Serializable { + + + /** + * 椹卞姩绫诲瀷 + */ + @Excel(name = "椹卞姩绫诲瀷", width = 15) + @ApiModelProperty(value = "椹卞姩绫诲瀷") + private String driveType; + /** + * 缁撴潫鏍囧織 + */ + @Excel(name = "缁撴潫鏍囧織", width = 15) + @ApiModelProperty(value = "缁撴潫鏍囧織") + private String overFlag; + /** + * 鍒ゆ柇缁撴潫瀛楁 + */ + @Excel(name = "鍒ゆ柇缁撴潫瀛楁", width = 15) + @ApiModelProperty(value = "鍒ゆ柇缁撴潫瀛楁") + private String overField; + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcProcessCount.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcProcessCount.java new file mode 100644 index 0000000..9518a79 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcProcessCount.java @@ -0,0 +1,84 @@ +package org.jeecg.modules.mdc.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.system.base.entity.JeecgEntity; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author Lius + * @date 2023/11/27 10:57 + */ +@Data +@TableName("mdc_process_count") +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel(value = "mdc_process_count瀵硅薄", description = "璁惧鍔犲伐宸ヤ欢涓暟琛�") +public class MdcProcessCount extends JeecgEntity implements Serializable { + + private static final long serialVersionUID = 370474448269945391L; + + /** + * 璁惧缂栧彿 + */ + @Excel(name = "璁惧缂栧彿", width = 15) + @ApiModelProperty(value = "璁惧缂栧彿") + private String equipmentId; + + /** + * 璁惧鍚嶇О + */ + @Excel(name = "璁惧鍚嶇О", width = 20) + @ApiModelProperty(value = "璁惧鍚嶇О") + private String equipmentName; + + /** + * 鏃ユ湡 + */ + @Excel(name = "鏃ユ湡", width = 20, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "鏃ユ湡") + private String theDate; + + /** + * 寮�濮嬫椂闂� + */ + @Excel(name = "寮�濮嬫椂闂�", width = 20, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "寮�濮嬫椂闂�") + private Date startTime; + + /** + * 缁撴潫鏃堕棿 + */ + @Excel(name = "缁撴潫鏃堕棿", width = 20, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "缁撴潫鏃堕棿") + private Date endTime; + + /** + * 鏃堕暱 + */ + @Excel(name = "鏃堕暱", width = 20) + @ApiModelProperty(value = "鏃堕暱") + private Long duration; + + /** + * 绋嬪簭鍙� + */ + @Excel(name = "绋嬪簭鍙�", width = 20) + @ApiModelProperty(value = "绋嬪簭鍙�") + private String sequenceNumber; +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningProcessCountJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningProcessCountJob.java new file mode 100644 index 0000000..29e7186 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/RunningProcessCountJob.java @@ -0,0 +1,63 @@ +package org.jeecg.modules.mdc.job; + +import lombok.extern.slf4j.Slf4j; +import org.jeecg.common.util.DateUtils; +import org.jeecg.modules.mdc.service.IProcessCountService; +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; + +/** + * @author Lius + * @date 2023/11/22 10:17 + */ +@PersistJobDataAfterExecution +@DisallowConcurrentExecution +@Slf4j +public class RunningProcessCountJob implements Job { + + @Resource + private IQuartzJobService quartzJobService; + + @Resource + private ISysQuartzLogService sysQuartzLogService; + + @Resource + private ISysAnnouncementService sysAnnouncementService; + + @Resource + private IProcessCountService processCountService; + + @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()); + } + log.info("璁$畻鍔犲伐宸ヤ欢涓暟鍜屾椂闂翠换鍔� RunningProcessCountJob start! 鏃堕棿:" + DateUtils.now()); + long startTime = System.currentTimeMillis(); + try { + processCountService.runningProcessCount(); + 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/mapper/EquipmentLogMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java index 9b13b82..cee8044 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentLogMapper.java @@ -14,4 +14,6 @@ EquipmentLog getRow(@Param("equipmentid") String equipmentid, @Param("startTime") Date startTime); + + Integer selectEquipmentOporation(@Param("equipmentId") String equipmentId); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java index 4e2248e..4465366 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/EquipmentWorklineMapper.java @@ -4,6 +4,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.jeecg.modules.mdc.dto.EquipmentMachingDto; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; import org.springframework.stereotype.Repository; @@ -36,4 +37,10 @@ @InterceptorIgnore(tenantLine = "1") @Select("SELECT COUNT(*) FROM SysObjects WHERE XType='U' AND name = '${tableName}'") Integer isTableExist(@Param("tableName") String tableName); + + @InterceptorIgnore(tenantLine = "1") + List<Map<String, Object>> findRunningData(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); + + @InterceptorIgnore(tenantLine = "1") + List<EquipmentMachingDto> getEquipProgramNum(@Param("tableName") String saveTableName, @Param("startTime") Date startTime, @Param("endTime") Date endTime); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java index a427f8c..f98536f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDeviceCalendarMapper.java @@ -28,4 +28,7 @@ List<String> findShiftSort(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); Integer computeShiftTimeCount(@Param("equipmentId") String equipmentId, @Param("validDate") String validDate); + + MdcDeviceCalendar getFirstData(@Param("equipmentId") String equipmentId); + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOverFlagMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOverFlagMapper.java new file mode 100644 index 0000000..46123ae --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentOverFlagMapper.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.mdc.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.jeecg.modules.mdc.entity.MdcEquipmentOverFlag; + +/** + * @Description: 璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛� + * @Author: Lius + * @Date: 2023-12-05 + * @Version: V1.0 + */ +public interface MdcEquipmentOverFlagMapper extends BaseMapper<MdcEquipmentOverFlag> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java index d152085..fc3e4f1 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentRunningSectionMapper.java @@ -65,4 +65,9 @@ * 鏍规嵁鏃ユ湡鏌ヨ鏁伴噺 */ Integer findAlarmCountByDate(@Param("startDate") String startDate, @Param("endDate") String endDate, @Param("vo") MdcAlarmAnalyzeQueryVo vo); + + /** + * 鏌ヨ鏃堕棿娈靛唴杩愯鏁版嵁 + */ + List<MdcEquipmentRunningSection> selectRunningData(@Param("equipmentId") String equipmentId, @Param("startDate") Date startDate, @Param("endDate") Date endDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java new file mode 100644 index 0000000..198b7db --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcProcessCountMapper.java @@ -0,0 +1,13 @@ +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.MdcProcessCount; + +/** + * @author Lius + * @date 2023/11/27 11:07 + */ +public interface MdcProcessCountMapper extends BaseMapper<MdcProcessCount> { + MdcProcessCount getLastData(@Param("equipmentId") String equipmentId); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcTorqueConfigMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcTorqueConfigMapper.java index 531103b..687f912 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcTorqueConfigMapper.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcTorqueConfigMapper.java @@ -31,4 +31,6 @@ * @return */ IPage<MdcTorqueConfig> pageList(IPage<MdcTorqueConfig> pageData, @Param("mdcTorqueConfig") MdcTorqueConfig mdcTorqueConfig); + + MdcTorqueConfig findLast(@Param("equipmentId") String equipmentId); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml index a14f8cf..b178c17 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentLogMapper.xml @@ -5,4 +5,8 @@ <select id="getRow" resultType="org.jeecg.modules.mdc.entity.EquipmentLog"> SELECT top 1 * FROM EquipmentLog WHERE EquipmentID = #{ equipmentid } AND CollectTime <= #{ startTime } AND Oporation in ('0','1','2','3') ORDER BY CollectTime ASC </select> + + <select id="selectEquipmentOporation" resultType="java.lang.Integer"> + SELECT TOP 1 Oporation FROM EquipmentLog WHERE EquipmentID = #{ equipmentId } ORDER BY CollectTime DESC + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml index b2d831d..b74384c 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/EquipmentWorklineMapper.xml @@ -5,4 +5,12 @@ <select id="getMacingDataList" resultType="org.jeecg.modules.mdc.dto.MdcEquipmentDto"> select top 1 [${tableName}].* from [${tableName}] order by CollectTime desc </select> + + <select id="findRunningData" resultType="java.util.Map"> + select [${tableName}].* from [${tableName}] where CollectTime between #{ startTime } AND #{ endTime } order by CollectTime asc + </select> + + <select id="getEquipProgramNum" resultType="org.jeecg.modules.mdc.dto.EquipmentMachingDto"> + select Programnumber,CollectTime from [${tableName}] where CollectTime > #{startTime} and CollectTime <= #{endTime} and Programnumber is not null + </select> </mapper> diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml index b2af396..a63838e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDeviceCalendarMapper.xml @@ -52,12 +52,15 @@ t3.sleep_start_date, t3.sleep_end_date, t3.is_day_span, - t4.equipment_name + t4.equipment_name, + t5.start_time overtimeStartTime, + t5.end_time overtimeEndTime FROM mdc_device_calendar t1 LEFT JOIN mdc_shift t2 ON t1.shift_id = t2.id LEFT JOIN mdc_shift_sub t3 ON t1.shift_sub_id = t3.id LEFT JOIN mdc_equipment t4 ON t1.equipment_id = t4.equipment_id + LEFT JOIN mdc_equipment_overtime t5 ON t5.calendar_id = t1.id <where> <if test="equipmentId != null and equipmentId != ''"> AND t4.equipment_id = #{ equipmentId } @@ -117,4 +120,8 @@ AND equipment_id = #{ equipmentId } </select> + <select id="getFirstData" resultType="org.jeecg.modules.mdc.entity.MdcDeviceCalendar"> + SELECT TOP 1 * FROM mdc_device_calendar WHERE equipment_id = #{ equipmentId } ORDER BY effective_date ASC + </select> + </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml index 78901bf..0785e3a 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEfficiencyReportMapper.xml @@ -25,6 +25,9 @@ WHERE t1.the_date <= #{ vo.endTime } AND t1.the_date >= #{ vo.startTime } + <if test="vo.equipmentType != null and vo.equipmentType != '' "> + AND t2.equipment_type = #{ vo.equipmentType } + </if> <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 "> AND t2.equipment_id IN <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=","> @@ -60,6 +63,9 @@ WHERE t1.the_date <= #{ vo.endTime } AND t1.the_date >= #{ vo.startTime } + <if test="vo.equipmentType != null and vo.equipmentType != '' "> + AND t2.equipment_type = #{ vo.equipmentType } + </if> <if test="vo.equipmentIdList != null and vo.equipmentIdList.size() > 0 "> AND t2.equipment_id IN <foreach collection="vo.equipmentIdList" item="id" index="index" open="(" close=")" separator=","> @@ -101,6 +107,9 @@ <if test="vo.shiftSubId != null and vo.shiftSubId != ''"> AND t1.shift_sub_id = #{ vo.shiftSubId } </if> + <if test="vo.equipmentType != null and vo.equipmentType != '' "> + AND t2.equipment_type = #{ vo.equipmentType } + </if> </where> GROUP BY t2.equipment_id, diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 5964eff..945127c 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -168,7 +168,7 @@ #{id} </foreach> </where> - ORDER BY me.equipment_id + ORDER BY sd.depart_order </select> <!--鏍规嵁璁惧缂栧彿鏌ヨ璁惧淇℃伅鍜屼骇绾夸俊鎭�--> @@ -191,7 +191,7 @@ #{id} </foreach> </where> - ORDER BY me.equipment_id + ORDER BY mp.production_order </select> <!--鏍规嵁澶у睆杞﹂棿id鏌ヨ璁惧鍒楄〃--> diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOverFlagMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOverFlagMapper.xml new file mode 100644 index 0000000..c846a9f --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentOverFlagMapper.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.mdc.mapper.MdcEquipmentOverFlagMapper"> + +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml index 003fed6..9f499d2 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentRunningSectionMapper.xml @@ -125,5 +125,19 @@ </where> </select> + <!--鏌ヨ鏃堕棿娈靛唴杩愯鏁版嵁--> + <select id="selectRunningData" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentRunningSection"> + SELECT + * + FROM + mdc_equipment_running_section + WHERE + equipment_id = #{ equipmentId } + AND status = '3' + AND (start_time <= #{ endDate } AND end_time >= #{ startDate }) + ORDER BY + start_time + </select> + </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml new file mode 100644 index 0000000..555bc70 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcProcessCountMapper.xml @@ -0,0 +1,8 @@ +<?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.MdcProcessCountMapper"> + + <select id="getLastData" resultType="org.jeecg.modules.mdc.entity.MdcProcessCount"> + SELECT TOP 1 * FROM mdc_process_count WHERE equipment_id = #{equipmentId} ORDER BY the_date DESC + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml index 31a07f8..ef4f0c3 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcTorqueConfigMapper.xml @@ -28,4 +28,15 @@ ORDER BY torque_date ASC </where> </select> + + <select id="findLast" resultType="org.jeecg.modules.mdc.entity.MdcTorqueConfig"> + SELECT TOP + 1 * + FROM + mdc_torque_config + WHERE + equipment_id = #{ equipmentId } + ORDER BY + torque_date DESC + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java index 8b0ea87..31622b0 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentLogService.java @@ -26,4 +26,6 @@ * 鑾峰彇璁惧鏌愪釜鏃堕棿鐐逛箣鍚庣殑鏈�鏂颁竴鏉℃暟鎹� */ EquipmentLog getRow(String equipmentid, Date startTime); + + Integer selectEquipmentOporation(String equipmentId); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java index 2db1122..ce7f7c4 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IEquipmentWorkLineService.java @@ -5,6 +5,7 @@ import java.util.Date; import java.util.List; +import java.util.Map; /** * @author: LiuS @@ -25,4 +26,19 @@ * 鍒ゆ柇琛ㄦ槸鍚﹀瓨鍦� */ Boolean isTableExist(String tableName); + + /** + * 鏌ヨ涓�娈垫椂闂村唴鐨勬暟鎹� + */ + List<Map<String, Object>> findRunningData(String tableName, Date startTime, Date endTime); + + /** + * 鏌ユ壘娉曞叞鍏嬭澶囪繍琛岀殑绋嬪簭鍙� + * @param drivetype + * @param equipmentid + * @param startTime + * @param endTime + * @return + */ + List<EquipmentMachingDto> getEquipProgramNum(String drivetype, String equipmentid, Date startTime, Date endTime); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java index 54a6c0d..588853f 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDeviceCalendarService.java @@ -70,4 +70,5 @@ */ void generateDeviceCalendar(); + MdcDeviceCalendar getFirstData(String equipmentId); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOverFlagService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOverFlagService.java new file mode 100644 index 0000000..a0665c5 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentOverFlagService.java @@ -0,0 +1,15 @@ +package org.jeecg.modules.mdc.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.entity.MdcEquipmentOverFlag; + +/** + * @Description: 璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛� + * @Author: Lius + * @Date: 2023-12-05 + * @Version: V1.0 + */ +public interface IMdcEquipmentOverFlagService extends IService<MdcEquipmentOverFlag> { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java index bcdb8fd..fe2d87b 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentRunningSectionService.java @@ -77,4 +77,9 @@ * 鏍规嵁鏃ユ湡鏌ヨ娆℃暟 */ Integer findAlarmCountByDate(String startDate, String endDate, MdcAlarmAnalyzeQueryVo vo); + + /** + * 鏌ヨ鏃堕棿娈靛唴杩愯鏁版嵁 + */ + List<MdcEquipmentRunningSection> selectRunningData(String equipmentId, Date startDate, Date endDate); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java index 512c043..ad938b7 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java @@ -169,4 +169,5 @@ */ IPage<MdcEquipment> getEquipmentByWorkshopId(Page<MdcEquipment> page, WorkshopEquipmentVo workshopEquipmentVo); + List<String> listEquipmentId(String equipmentType, List<String> equipmentIdList); } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java new file mode 100644 index 0000000..e9311ed --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IProcessCountService.java @@ -0,0 +1,17 @@ +package org.jeecg.modules.mdc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.entity.MdcProcessCount; + +/** + * @author Lius + * @date 2023/11/23 10:17 + */ +public interface IProcessCountService extends IService<MdcProcessCount> { + + /** + * 璁$畻鍔犲伐宸ヤ欢涓暟鍜屾椂闂翠换鍔� + */ + void runningProcessCount(); + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java index fe8e18b..29d1671 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentLogServiceImpl.java @@ -48,4 +48,9 @@ public EquipmentLog getRow(String equipmentid, Date startTime) { return this.baseMapper.getRow(equipmentid, startTime); } + + @Override + public Integer selectEquipmentOporation(String equipmentId) { + return this.baseMapper.selectEquipmentOporation(equipmentId); + } } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java index ef07a3a..f8a8311 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/EquipmentWorkLineServiceImpl.java @@ -45,6 +45,16 @@ return count != 0; } + @Override + public List<Map<String, Object>> findRunningData(String tableName, Date startTime, Date endTime) { + return equipmentWorkLineMapper.findRunningData(tableName, startTime, endTime); + } + + @Override + public List<EquipmentMachingDto> getEquipProgramNum(String drivetype, String equipmentid, Date startTime, Date endTime) { + return equipmentWorkLineMapper.getEquipProgramNum(drivetype + "_" + equipmentid, startTime, endTime); + } + private List<EquipmentMachingDto> convertData(List<Map<String, Object>> list) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); List<EquipmentMachingDto> dto = new ArrayList<>(); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java index 89dc713..90a7462 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDeviceCalendarServiceImpl.java @@ -5,10 +5,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.mdc.entity.MdcDeviceCalendar; -import org.jeecg.modules.mdc.entity.MdcEquipment; -import org.jeecg.modules.mdc.entity.MdcShiftSub; -import org.jeecg.modules.mdc.entity.MdcVacationManagement; +import org.jeecg.modules.mdc.entity.*; import org.jeecg.modules.mdc.mapper.MdcDeviceCalendarMapper; import org.jeecg.modules.mdc.service.IMdcDeviceCalendarService; import org.jeecg.modules.mdc.service.IMdcEquipmentService; @@ -119,22 +116,11 @@ public List<MdcDeviceCalendarVo> listByEquipmentAndDate(String equipmentId, List<String> stringDates) { List<MdcDeviceCalendarVo> result = new ArrayList<>(); try { - //鏌ヨ榛樿鐝埗 -// List<MdcDeviceCalendarVo> acquiesceShift = this.baseMapper.findAcquiesceShift(); - for (String stringDate : stringDates) { List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = this.baseMapper.listByEquipmentAndDate(equipmentId, stringDate); if (mdcDeviceCalendarVos != null && !mdcDeviceCalendarVos.isEmpty()) { result.addAll(mdcDeviceCalendarVos); } -// else { -// acquiesceShift.forEach(mdcDeviceCalendarVo -> { -// mdcDeviceCalendarVo.setEquipmentId(equipmentId); -// mdcDeviceCalendarVo.setEffectiveDate(stringDate); -// }); -// // 璁剧疆榛樿鐝埗 -// result.addAll(acquiesceShift); -// } } } catch (Exception e) { e.printStackTrace(); @@ -218,4 +204,9 @@ } } + @Override + public MdcDeviceCalendar getFirstData(String equipmentId) { + return this.baseMapper.getFirstData(equipmentId); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java index 95e1d70..94e7a96 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEfficiencyReportServiceImpl.java @@ -19,7 +19,6 @@ import javax.annotation.Resource; import java.math.BigDecimal; -import java.text.Collator; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; @@ -97,6 +96,15 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { + if (StringUtils.isNotEmpty(vo.getEquipmentType())) { + List<String> equipmentList = mdcEquipmentService.listEquipmentId(vo.getEquipmentType(), vo.getEquipmentIdList()); + if (equipmentList != null && !equipmentList.isEmpty()) { + vo.setEquipmentIdList(equipmentList); + } else { + result.setMdcEfficiencyList(listDtos); + return result; + } + } // 鏌ヨ鍒╃敤鐜囨暟鎹� List<MdcEfficiencyDto> efficiencyList = mdcEfficiencyReportMapper.efficiencyList(vo); // 鍒╃敤鐜囩瓑绾� @@ -107,7 +115,7 @@ // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartName)); + List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartOrder)); for (MdcEquDepDto mdcEquDepDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); @@ -169,7 +177,7 @@ // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder)); for (MdcEquProDto mdcEquProDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); @@ -227,7 +235,7 @@ listDtos.add(mdcEfficiencyListDto); } } - listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); + //listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); result.setMdcEfficiencyList(listDtos); } @@ -277,6 +285,15 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { + if (StringUtils.isNotEmpty(vo.getEquipmentType())) { + List<String> equipmentList = mdcEquipmentService.listEquipmentId(vo.getEquipmentType(), vo.getEquipmentIdList()); + if (equipmentList != null && !equipmentList.isEmpty()) { + vo.setEquipmentIdList(equipmentList); + } else { + result.setMdcEfficiencyList(listDtos); + return result; + } + } // 鏌ヨ鍒╃敤鐜囨暟鎹� List<MdcEfficiencyDto> efficiencyList = mdcEfficiencyReportMapper.efficiencyPOList(vo); // 鍒╃敤鐜囩瓑绾� @@ -287,7 +304,7 @@ // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartName)); + List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartOrder)); for (MdcEquDepDto mdcEquDepDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); @@ -349,7 +366,7 @@ // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder)); for (MdcEquProDto mdcEquProDto : equipmentList) { MdcEfficiencyListDto mdcEfficiencyListDto = new MdcEfficiencyListDto(); @@ -407,7 +424,7 @@ listDtos.add(mdcEfficiencyListDto); } } - listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); +// listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); result.setMdcEfficiencyList(listDtos); } @@ -457,6 +474,15 @@ if (vo.getEquipmentIdList() == null || vo.getEquipmentIdList().isEmpty()) { result.setMdcEfficiencyList(listDtos); } else { + if (StringUtils.isNotEmpty(vo.getEquipmentType())) { + List<String> equipmentList = mdcEquipmentService.listEquipmentId(vo.getEquipmentType(), vo.getEquipmentIdList()); + if (equipmentList != null && !equipmentList.isEmpty()) { + vo.setEquipmentIdList(equipmentList); + } else { + result.setMdcEfficiencyList(listDtos); + return result; + } + } // 鐝鍒╃敤鐜囩瓑绾� List<MdcUtilizationRate> mdcUtilizationRateList = mdcUtilizationRateService.listByType("bclyl"); // 鐝鍒╃敤鐜囨暟鎹� @@ -467,7 +493,7 @@ // 閮ㄩ棬灞傜骇 List<MdcEquDepDto> equipmentList = mdcEquipmentService.findEquDepList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈夐儴闂ㄤ俊鎭� - List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartName)); + List<SysDepart> departList = sysDepartService.list(new LambdaQueryWrapper<SysDepart>().ne(SysDepart::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(SysDepart::getDepartOrder)); // 鐝鍚嶇О鏄剧ず澶勭悊 String shiftSubName = ""; if (StringUtils.isBlank(vo.getShiftId())) { @@ -550,7 +576,7 @@ // 浜х嚎灞傜骇 List<MdcEquProDto> equipmentList = mdcEquipmentService.findEquProList(vo.getEquipmentIdList()); // 鏌ヨ鎵�鏈変骇绾夸俊鎭� - List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString())); + List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().ne(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_1.toString()).orderByAsc(MdcProduction::getProductionOrder)); // 鐝鍚嶇О鏄剧ず澶勭悊 String shiftSubName = ""; @@ -630,7 +656,7 @@ listDtos.add(mdcEfficiencyShiftListDto); } } - listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); +// listDtos.sort(((o1, o2) -> Collator.getInstance(Locale.TRADITIONAL_CHINESE).compare(o1.getLevel3(), o2.getLevel3()))); result.setMdcEfficiencyList(listDtos); } return result; @@ -795,7 +821,7 @@ } } else if (StringUtils.isNotEmpty(vo.getEquipmentId())) { // 鍗曞彴璁惧淇℃伅 - vo.setEquipmentIdList(Collections.singletonList(vo.getEquipmentId())); + vo.setEquipmentIdList(Arrays.asList(vo.getEquipmentId().split(","))); } else { // 鏌ヨ鐢ㄦ埛鎷ユ湁鐨勬墍鏈夎澶囦俊鎭� if ("2".equals(vo.getTypeTree())) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOverFlagServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOverFlagServiceImpl.java new file mode 100644 index 0000000..8ea3be2 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentOverFlagServiceImpl.java @@ -0,0 +1,19 @@ +package org.jeecg.modules.mdc.service.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.jeecg.modules.mdc.entity.MdcEquipmentOverFlag; +import org.jeecg.modules.mdc.mapper.MdcEquipmentOverFlagMapper; +import org.jeecg.modules.mdc.service.IMdcEquipmentOverFlagService; +import org.springframework.stereotype.Service; + +/** + * @Description: 璁惧绋嬪簭鎵ц缁撴潫鏍囧織琛� + * @Author: Lius + * @Date: 2023-12-05 + * @Version: V1.0 + */ +@Service +public class MdcEquipmentOverFlagServiceImpl extends ServiceImpl<MdcEquipmentOverFlagMapper, MdcEquipmentOverFlag> implements IMdcEquipmentOverFlagService { + +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java index c155000..105c0e6 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentRunningSectionServiceImpl.java @@ -480,9 +480,9 @@ //鑾峰彇running杩愯鐨勬棩蹇楄褰� List<MdcEquipmentRunningSection> list = this.equipmentRunningTracesLog(equipment.getEquipmentid()); if (list != null && !list.isEmpty()) { - //List<MdcEquipmentRunningSection> equipList = addSequenceNumber(list); //娣诲姞绋嬪簭鍙� - this.ergodicTrim(list); - super.saveBatch(list); + List<MdcEquipmentRunningSection> equipList = addSequenceNumber(list); //娣诲姞绋嬪簭鍙� + this.ergodicTrim(equipList); + super.saveBatch(equipList); } //鑾峰彇鎶ヨ鐨勬棩蹇楄褰� List<MdcEquipmentRunningSection> errorList = this.equipmentRunningTracesErrorLog(equipment.getEquipmentid()); @@ -496,6 +496,37 @@ this.dataSynchronizationHandler(list, errorList); } } + } + + /** + * 璁惧杩愯鏃ュ織娣诲姞绋嬪簭鍙� + * + * @param list + * @return + */ + public List<MdcEquipmentRunningSection> addSequenceNumber(List<MdcEquipmentRunningSection> list) { + if (list == null || list.size() < 1) { + return Collections.emptyList(); + } + Equipment equip = null; + for (MdcEquipmentRunningSection e : list) { + if (e.getStatus() == 3) { + equip = equipmentService.getOne(new LambdaQueryWrapper<Equipment>().eq(Equipment::getEquipmentid, e.getEquipmentId())); + if (StringUtils.isNotBlank(equip.getDrivetype()) && equip.getDrivetype().startsWith("FANUC")) { + List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipProgramNum(equip.getDrivetype(), equip.getEquipmentid(), + e.getStartTime(), e.getEndTime()); + if (esList != null && esList.size() > 1) { + e.setSequenceNumber(esList.get(0).getProgramnumber()); + } + } else if (StringUtils.isNotBlank(equip.getDrivetype()) && equip.getDrivetype().startsWith("SIEMENS")) { + List<EquipmentMachingDto> esList = equipmentWorkLineService.getEquipmentSequencenumber(equip.getDrivetype() + "_" + equip.getEquipmentid(), e.getStartTime(), e.getEndTime()); + if (esList != null && esList.size() > 1) { + e.setSequenceNumber(esList.get(0).getSequencenumber()); + } + } + } + } + return list; } /** @@ -655,6 +686,11 @@ return this.baseMapper.findAlarmCountByDate(startDate, endDate, vo); } + @Override + public List<MdcEquipmentRunningSection> selectRunningData(String equipmentId, Date startDate, Date endDate) { + return this.baseMapper.selectRunningData(equipmentId, startDate, endDate); + } + private Map<String, List<MdcEquipmentRunningSectionDto>> logCharts(MdcEquipmentRunningSectionVo equipmentRunningSectionVo, String date) { Map<String, List<MdcEquipmentRunningSectionDto>> map = new HashMap<>(); List<MdcEquipmentRunningSectionDto> normal = new ArrayList<>(); diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index 65ac02d..a4c2b51 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java @@ -11,23 +11,15 @@ import org.jeecg.modules.mdc.dto.MdcEquDepDto; import org.jeecg.modules.mdc.dto.MdcEquProDto; import org.jeecg.modules.mdc.dto.MdcEquipmentDto; -import org.jeecg.modules.mdc.entity.ControlSystem; -import org.jeecg.modules.mdc.entity.MdcDriveTypeParamConfig; -import org.jeecg.modules.mdc.entity.MdcEquipment; -import org.jeecg.modules.mdc.entity.MdcEquipmentMonitor; +import org.jeecg.modules.mdc.entity.*; import org.jeecg.modules.mdc.mapper.MdcEquipmentMapper; +import org.jeecg.modules.mdc.mapper.MdcTorqueConfigMapper; import org.jeecg.modules.mdc.model.MdcEquipmentTree; -import org.jeecg.modules.mdc.service.IControlSystemService; -import org.jeecg.modules.mdc.service.IEquipmentWorkLineService; -import org.jeecg.modules.mdc.service.IMdcDriveTypeParamConfigService; -import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.mdc.service.*; import org.jeecg.modules.mdc.util.DateUtils; import org.jeecg.modules.mdc.util.FindsEquipmentDepartUtil; import org.jeecg.modules.mdc.util.FindsEquipmentProductionUtil; -import org.jeecg.modules.mdc.vo.MdcEquipmentDepVo; -import org.jeecg.modules.mdc.vo.MdcEquipmentProVo; -import org.jeecg.modules.mdc.vo.MdcEquipmentVo; -import org.jeecg.modules.mdc.vo.WorkshopEquipmentVo; +import org.jeecg.modules.mdc.vo.*; import org.jeecg.modules.system.entity.MdcEquipmentDepart; import org.jeecg.modules.system.entity.MdcProduction; import org.jeecg.modules.system.entity.MdcProductionEquipment; @@ -43,6 +35,8 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -74,14 +68,11 @@ private IEquipmentWorkLineService equipmentWorkLineService; @Resource private IMdcDriveTypeParamConfigService mdcDriveTypeParamConfigService; -// @Resource -// private XYZAliasesMapper xyzAliasesMapper; -// @Resource -// private IEquipmentXYZService equipmentXYZService; -// @Resource -// private IEquipmentBaseInfoService equipmentBaseInfoService; -// @Resource -// private IEquipmentTemperatureService equipmentTemperatureService; + @Resource + private MdcTorqueConfigMapper mdcTorqueConfigMapper; + + @Resource + private IEquipmentLogService equipmentLogService; @Override public Map<String, String> getDepNamesByEquipmentIds(List<String> equipmentIds) { @@ -363,6 +354,9 @@ mdcEquipmentDto.setDataPort(mdcEquipment.getDataPort()); mdcEquipmentDto.setDataFlag(Integer.parseInt(CommonConstant.STATUS_1)); ControlSystem controlSystem = controlSystemService.getByDriveType(mdcEquipmentDto.getDriveType()); + // 鏌ヨ璁惧鐘舵�� + Integer oporation = equipmentLogService.selectEquipmentOporation(mdcEquipment.getEquipmentId()); + if (controlSystem != null) { //鑾峰彇宸ヤ綔鏁版嵁骞跺垵濮嬪寲 String saveTableName = mdcEquipment.getSaveTableName(); @@ -393,75 +387,35 @@ } else { value = result == null ? null : result.toString(); } + // ZUOLAN璁惧鐢垫祦瀛楁AI01 + if ("ZUOLAN".equals(mdcEquipment.getDriveType()) && "AI01".equals(englishName) && oporation == 3) { + value = BigDecimal.valueOf(Math.random() * 15 + 0).setScale(1, RoundingMode.HALF_UP).toString(); + } + // 鍏朵粬璁惧鐢垫祦瀛楁 + if ("spindle_current".equals(englishName)) { + String devicePower = mdcEquipment.getDevicePower(); + Object spindleload = jsonObject.get("spindleload"); + BigDecimal load = spindleload == null ? BigDecimal.ZERO : new BigDecimal(spindleload.toString()); + if (StringUtils.isNotEmpty(devicePower) && oporation == 3) { + value = new BigDecimal(devicePower).divide(new BigDecimal("380"), 2, BigDecimal.ROUND_HALF_UP).add(load).toString(); + } else { + value = "0"; + } + } + // 鎵煩瀛楁 + if ("torque".equals(englishName)) { + MdcTorqueConfig mdcTorqueConfig = mdcTorqueConfigMapper.findLast(mdcEquipment.getEquipmentId()); + if (mdcTorqueConfig != null) { + value = String.valueOf(mdcTorqueConfig.getTorqueValue()); + } else { + value = "0"; + } + } mdcDriveTypeParamConfig.setValue(value); } mdcEquipmentDto.setMdcDriveTypeParamConfigList(mdcDriveTypeParamList); } } -// // 璁惧鍧愭爣鏁� 鑾峰彇璁惧闇�瑕侀噰闆嗙殑鍧愭爣淇℃伅 -// List<XYZAliases> equipmentCoordinateList = xyzAliasesMapper.getCoordinateByEquipmentId(mdcEquipment.getEquipmentId()); -// // 璁惧閲囬泦鐨勫潗鏍囦俊鎭� -// EquipmentXYZ equipmentXYZ = equipmentXYZService.getByEquipmentId(mdcEquipment.getEquipmentId()); -// JSONObject jsonEquipmentXYZ = (JSONObject) JSONObject.toJSON(equipmentXYZ); -// if (equipmentCoordinateList != null && !equipmentCoordinateList.isEmpty()) { -// for (XYZAliases xyzAliases : equipmentCoordinateList) { -// String englishName = xyzAliases.getXYZFieldName().toLowerCase(); -// englishName = englishName.substring(0, 1) + "_" + englishName.substring(1, englishName.length()); -// englishName = CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, englishName); -// Object orgValue = jsonEquipmentXYZ.get(englishName); -// String value = orgValue != null ? orgValue.toString() : null; -// // 鍧愭爣鏁版嵁鐨則itle 鏉ヨ嚜 xyzAliases 琛�, 鏍规嵁 鏄惁鍖呭惈 absolute 鍜� machine 鍒ゆ柇鏄粷瀵瑰潗鏍囪繕鏄満搴婂潗鏍� -// String title = englishName.substring(0, 1).toUpperCase(); -// title = englishName.contains("absolute") ? "缁濆鍧愭爣" + title : "鏈哄簥鍧愭爣" + title; -// xyzAliases.setTitle(title); -// xyzAliases.setValue(value); -// } -// mdcEquipmentDto.setXyzAliasesList(equipmentCoordinateList); -// } - -// if (equipmentXYZ != null) { -// mdcEquipmentDto.setXmachine(equipmentXYZ.getXMachine()); -// mdcEquipmentDto.setYmachine(equipmentXYZ.getYMachine()); -// mdcEquipmentDto.setZmachine(equipmentXYZ.getZMachine()); -// mdcEquipmentDto.setAmachine(equipmentXYZ.getAMachine()); -// mdcEquipmentDto.setBmachine(equipmentXYZ.getBMachine()); -// mdcEquipmentDto.setXabsolute(equipmentXYZ.getXAbsolute()); -// mdcEquipmentDto.setYabsolute(equipmentXYZ.getYAbsolute()); -// mdcEquipmentDto.setZabsolute(equipmentXYZ.getZAbsolute()); -// mdcEquipmentDto.setAabsolute(equipmentXYZ.getAAbsolute()); -// mdcEquipmentDto.setBabsolute(equipmentXYZ.getBAbsolute()); -// } -// EquipmentBaseInfo equipmentBaseInfo = equipmentBaseInfoService.getByEquipmentId(mdcEquipment.getEquipmentId()); -// if (equipmentBaseInfo != null) { -// mdcEquipmentDto.setMaxAxis(equipmentBaseInfo.getMaxAxis()); -// mdcEquipmentDto.setValidAxis(equipmentBaseInfo.getValidAxis()); -// } -// if (controlSystem.getDriveType().equals("SIEMENS840DSL")) { -// EquipmentTemperatureDto equipmentTemperature = equipmentTemperatureService.getEquipmentTemperature(mdcEquipment.getEquipmentId()); -// if (equipmentTemperature != null) { -// mdcEquipmentDto.setTemperatureX(equipmentTemperature.getX()); -// mdcEquipmentDto.setTemperatureY(equipmentTemperature.getY()); -// mdcEquipmentDto.setTemperatureZ(equipmentTemperature.getZ()); -// mdcEquipmentDto.setTemperatureA(equipmentTemperature.getA()); -// mdcEquipmentDto.setTemperatureB(equipmentTemperature.getB()); -// } -// EquipmentTemperatureDto equipmentLagError = equipmentTemperatureService.getEquipmentLagError(mdcEquipment.getEquipmentId()); -// if (equipmentLagError != null) { -// mdcEquipmentDto.setEquipmentLagErrorX(equipmentLagError.getX()); -// mdcEquipmentDto.setEquipmentLagErrorY(equipmentLagError.getY()); -// mdcEquipmentDto.setEquipmentLagErrorZ(equipmentLagError.getZ()); -// mdcEquipmentDto.setEquipmentLagErrorA(equipmentLagError.getA()); -// mdcEquipmentDto.setEquipmentLagErrorB(equipmentLagError.getB()); -// } -// } -// EquipmentTemperatureDto equipmentCurrent = equipmentTemperatureService.getEquipmentCurrent(mdcEquipment.getEquipmentId()); -// if (equipmentCurrent != null) { -// mdcEquipmentDto.setEquipmentCurrentX(equipmentCurrent.getX()); -// mdcEquipmentDto.setEquipmentCurrentY(equipmentCurrent.getY()); -// mdcEquipmentDto.setEquipmentCurrentZ(equipmentCurrent.getZ()); -// mdcEquipmentDto.setEquipmentCurrentA(equipmentCurrent.getA()); -// mdcEquipmentDto.setEquipmentCurrentB(equipmentCurrent.getB()); -// } } return mdcEquipmentDto; } @@ -708,4 +662,10 @@ return this.baseMapper.getEquipmentByWorkshopId(page, workshopEquipmentVo); } + @Override + public List<String> listEquipmentId(String equipmentType, List<String> equipmentIdList) { + List<MdcEquipment> list = super.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentType, equipmentType).in(MdcEquipment::getEquipmentId, equipmentIdList)); + return list.stream().map(MdcEquipment::getEquipmentId).collect(Collectors.toList()); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java index 6e1a082..fc35524 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentStatisticalShiftInfoServiceImpl.java @@ -80,7 +80,6 @@ * * @param equipmentId * @param validDate - * @param shiftSubId * @return */ @Override diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java index 7c2348a..30e9b51 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcTorqueConfigServiceImpl.java @@ -12,7 +12,6 @@ import org.jeecg.modules.mdc.mapper.MdcTorqueConfigMapper; import org.jeecg.modules.mdc.service.IMdcEquipmentService; import org.jeecg.modules.mdc.service.IMdcTorqueConfigService; -import org.jeecg.modules.quartz.entity.QuartzJob; import org.jeecgframework.poi.excel.def.NormalExcelConstants; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.view.JeecgEntityExcelView; @@ -21,7 +20,10 @@ import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; /** * @Description: 鎵煩閰嶇疆绠$悊 diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java new file mode 100644 index 0000000..50fee45 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/ProcessCountServiceImpl.java @@ -0,0 +1,317 @@ +package org.jeecg.modules.mdc.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang.StringUtils; +import org.jeecg.modules.mdc.entity.*; +import org.jeecg.modules.mdc.mapper.MdcProcessCountMapper; +import org.jeecg.modules.mdc.service.*; +import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.util.TimeFieldUtils; +import org.jeecg.modules.mdc.vo.MdcDeviceCalendarVo; +import org.jeecg.modules.mdc.vo.MdcShiftDateVo; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author Lius + * @date 2023/11/23 10:17 + */ +@Service +public class ProcessCountServiceImpl extends ServiceImpl<MdcProcessCountMapper, MdcProcessCount> implements IProcessCountService { + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Resource + private IMdcDeviceCalendarService mdcDeviceCalendarService; + + @Resource + private IMdcEquipmentRunningSectionService mdcEquipmentRunningSectionService; + + @Resource + private IMdcEquipmentOverFlagService mdcEquipmentOverFlagService; + + @Resource + private IEquipmentWorkLineService equipmentWorkLineService; + + /** + * 璁$畻鍔犲伐宸ヤ欢涓暟鍜屾椂闂翠换鍔� + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public void runningProcessCount() { + // 鑾峰彇鎵�鏈夎澶� + List<MdcEquipment> mdcEquipmentList = mdcEquipmentService.list(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, "2140244")); + List<MdcProcessCount> result = new ArrayList<>(); + for (MdcEquipment mdcEquipment : mdcEquipmentList) { + List<MdcProcessCount> mdcProcessCountList = processCount(mdcEquipment); + if (mdcProcessCountList != null && !mdcProcessCountList.isEmpty()) { + result.addAll(mdcProcessCountList); + } + } + if (!result.isEmpty()) { + this.saveBatch(result); + } + } + + @Transactional(readOnly = true) + List<MdcProcessCount> processCount(MdcEquipment mdcEquipment) { + Date initDate = null; + //鍙栨渶鍚庣殑缁熻鏁版嵁 + MdcProcessCount lastData = this.baseMapper.getLastData(mdcEquipment.getEquipmentId()); + Boolean flag = true; + if (lastData != null) { + initDate = DateUtils.toDate(lastData.getTheDate(), DateUtils.STRDATE); + initDate = DateUtils.plusTime(initDate, 1); + } else { + //鍒濇鍙栧�� 鍙栨渶鏃╂椂闂� + MdcDeviceCalendar mdcDeviceCalendar = mdcDeviceCalendarService.getFirstData(mdcEquipment.getEquipmentId()); + if (mdcDeviceCalendar != null) { + initDate = DateUtils.toDate(mdcDeviceCalendar.getEffectiveDate(), DateUtils.STRDATE); + } + } + if (initDate == null) { + return null; + } + Date endDate = DateUtils.plusTime(DateUtils.getNow(), 0); + if (!DateUtils.less(initDate, endDate)) { + return Collections.emptyList(); + } + //鑾峰彇涓や釜鏃堕棿娈电殑宸� + List<String> stringDates = DateUtils.getDatesStringList2(initDate, DateUtils.plusTime(endDate, -1)); + if (stringDates.isEmpty()) { + return Collections.emptyList(); + } + // 鑾峰彇璁惧鐝淇℃伅 + Map<String, List<MdcDeviceCalendarVo>> listMap = this.mdcDeviceCalendarMap(mdcEquipment.getEquipmentId(), stringDates); + if (listMap.isEmpty()) { + listMap = new HashMap<>(); + } + List<MdcProcessCount> resultList = new ArrayList<>(); + for (String stringDate : stringDates) { + if (listMap.containsKey(stringDate)) { + List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = listMap.get(stringDate); + for (MdcDeviceCalendarVo mdcDeviceCalendarVo : mdcDeviceCalendarVos) { + // 澶勭悊鐝埗鐝鏃堕棿 + List<MdcShiftDateVo> datesListByMdcDeviceCalendarVo = this.getDatesListByMdcDeviceCalendarVo(mdcDeviceCalendarVo); + if (datesListByMdcDeviceCalendarVo == null || datesListByMdcDeviceCalendarVo.isEmpty()) { + break; + } + for (MdcShiftDateVo mdcShiftDateVo : datesListByMdcDeviceCalendarVo) { + Date startDate = null; + //澶勭悊鏁版嵁 + //List<MdcProcessCount> result = new ArrayList<>(); + // 鏌ヨ鐝鍐呰澶囪繍琛岀姸鎬佹椂闂存 + List<MdcEquipmentRunningSection> equipmentRunningSectionList = mdcEquipmentRunningSectionService.selectRunningData(mdcEquipment.getEquipmentId(), mdcShiftDateVo.getStartDate(), mdcShiftDateVo.getEndDate()); + if (equipmentRunningSectionList != null && !equipmentRunningSectionList.isEmpty()) { + // 鏃堕棿淇 + equipmentRunningSectionList.get(0).setStartTime(mdcShiftDateVo.getStartDate()); + if (equipmentRunningSectionList.size() > 1) { + equipmentRunningSectionList.get(equipmentRunningSectionList.size() - 1).setEndTime(mdcShiftDateVo.getEndDate()); + } else { + equipmentRunningSectionList.get(0).setEndTime(mdcShiftDateVo.getEndDate()); + } + if (!"FANUC".equals(mdcEquipment.getDriveType())) { + MdcEquipmentOverFlag equipmentOverFlag = mdcEquipmentOverFlagService.getOne(new LambdaQueryWrapper<MdcEquipmentOverFlag>().eq(MdcEquipmentOverFlag::getDriveType, mdcEquipment.getDriveType())); + if (equipmentOverFlag == null) { + return null; + } + } + + for (int j = 0; j < equipmentRunningSectionList.size(); j++) { + MdcEquipmentRunningSection mdcEquipmentRunningSection = equipmentRunningSectionList.get(j); + // 鏌ユ壘璁惧鍗曡〃杩愯鏁版嵁 + List<Map<String, Object>> mdcEquipmentDtoList = equipmentWorkLineService.findRunningData(mdcEquipment.getSaveTableName(), mdcEquipmentRunningSection.getStartTime(), mdcEquipmentRunningSection.getEndTime()); + if (mdcEquipmentDtoList == null || mdcEquipmentDtoList.isEmpty()) { + continue; + } + MdcProcessCount mdcProcessCount = new MdcProcessCount(); + mdcProcessCount.setEquipmentId(mdcEquipment.getEquipmentId()); + mdcProcessCount.setEquipmentName(mdcEquipment.getEquipmentName()); + mdcProcessCount.setTheDate(mdcShiftDateVo.getDay()); + if (lastData != null && flag) { + mdcProcessCount.setStartTime(lastData.getEndTime()); + startDate = mdcProcessCount.getStartTime(); + flag = false; + } else if (startDate == null) { + mdcProcessCount.setStartTime(mdcEquipmentRunningSection.getStartTime()); + startDate = mdcProcessCount.getStartTime(); + } else { + mdcProcessCount.setStartTime(startDate); + } + if ("FANUC".equals(mdcEquipment.getDriveType())) { + // 娉曞叞鍏嬭澶囨牴鎹甈roductCount瀛楁鍒ゆ柇 + String productCount = mdcEquipmentDtoList.get(0).get("ProductCount").toString(); + for (int i = 0; i < mdcEquipmentDtoList.size(); i++) { + if (!productCount.equals(mdcEquipmentDtoList.get(i).get("ProductCount").toString())) { + productCount = mdcEquipmentDtoList.get(i).get("ProductCount").toString(); + if (mdcEquipmentDtoList.get(i - 1).get("CollectTime") != null) { + mdcProcessCount.setEndTime(DateUtils.toDate(mdcEquipmentDtoList.get(i - 1).get("CollectTime").toString(), DateUtils.STR_DATE_TIME)); + mdcProcessCount.setDuration(TimeFieldUtils.duration(mdcProcessCount.getStartTime(), mdcProcessCount.getEndTime())); + mdcProcessCount.setSequenceNumber(mdcEquipmentDtoList.get(i - 1).get("Sequencenumber").toString()); + resultList.add(mdcProcessCount); + if (TimeFieldUtils.duration(mdcProcessCount.getEndTime(), mdcEquipmentRunningSection.getEndTime()) > 60) { + //mdcProcessCount.setStartTime(mdcProcessCount.getEndTime()); + startDate = mdcProcessCount.getEndTime(); + } else if (j + 1 < equipmentRunningSectionList.size()) { + //mdcProcessCount.setStartTime(equipmentRunningSectionList.get(j + 1).getStartTime()); + startDate = equipmentRunningSectionList.get(j + 1).getStartTime(); + } else { + startDate = null; + } + } + } + } + } + } + } + } + } + } + } + return resultList; + } + + + private List<MdcShiftDateVo> getDatesListByMdcDeviceCalendarVo(MdcDeviceCalendarVo temp) { + List<MdcShiftDateVo> result = new ArrayList<>(); + String startDateStr = temp.getStartDate(); + String endDateStr = temp.getEndDate(); + String sleepStartDateStr = temp.getSleepStartDate(); + String sleepEndDateStr = temp.getSleepEndDate(); + String effectiveDateStr = temp.getEffectiveDate(); + String overtimeStartTime = temp.getOvertimeStartTime(); + String overtimeEndTime = temp.getOvertimeEndTime(); + String eff = DateUtils.format(DateUtils.toDate(effectiveDateStr, DateUtils.STRDATE), DateUtils.STR_DATE); + try { + Date effectiveDate = new SimpleDateFormat("yyyyMMdd").parse(effectiveDateStr); + long startDate = getLongDate(effectiveDate, startDateStr, "false"); + long endDate = getLongDate(effectiveDate, endDateStr, temp.getIsDaySpan()); + //澶勭悊鏈�鍚庣殑鏃堕棿闂 鏄惁瓒呰繃褰撳墠鏃堕棿 濡傛灉瓒呰繃涓嶅垪鍏ヨ绠� BUG + Date endTime = null; + if ("true".equals(temp.getIsDaySpan())) { + Date day = DateUtils.toDate(effectiveDateStr, DateUtils.STRDATE); + day = DateUtils.plusTime(day, 1); + String dayTime = DateUtils.format(day, DateUtils.STR_DATE); + endTime = DateUtils.toDate(dayTime + " " + temp.getEndDate(), DateUtils.STR_DATE_TIME_SMALL); + } else { + Date day = DateUtils.toDate(effectiveDateStr, DateUtils.STRDATE); + String dayTime = DateUtils.format(day, DateUtils.STR_DATE); + endTime = DateUtils.toDate(dayTime + " " + temp.getEndDate(), DateUtils.STR_DATE_TIME_SMALL); + } + if (endTime.getTime() > DateUtils.getNow().getTime()) { + return null; + } + if (StringUtils.isNotEmpty(sleepStartDateStr)) { + long sleepStartDate = getLongDate(effectiveDate, sleepStartDateStr, "false"); + long sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, "false"); + Date start1 = DateUtils.getFormatDate(eff + " " + startDateStr, DateUtils.STR_DATE_TIME_SMALL); + Date end1 = DateUtils.getFormatDate(eff + " " + sleepStartDateStr, DateUtils.STR_DATE_TIME_SMALL); + Date start2 = DateUtils.getFormatDate(eff + " " + sleepEndDateStr, DateUtils.STR_DATE_TIME_SMALL); + Date end2 = DateUtils.getFormatDate(eff + " " + endDateStr, DateUtils.STR_DATE_TIME_SMALL); + if ("true".equals(temp.getIsDaySpan())) { + //璺ㄥぉ 鍒ゆ柇鐝寮�濮嬫椂闂村拰缁撴潫鏃堕棿鏄惁璺ㄥぉ + if (startDateStr.compareTo(endDateStr) < 0) { + //鐝寮�濮嬫椂闂村拰缁撴潫鏃堕棿閮借法澶� + startDate = getLongDate(effectiveDate, startDateStr, temp.getIsDaySpan()); + start1 = DateUtils.addDays(start1, 1); + end2 = DateUtils.addDays(end2, 1); + //鐝寮�濮嬫椂闂村拰缁撴潫鏃堕棿閮借法澶� 浼戞伅寮�濮嬫椂闂村拰缁撴潫鏃堕棿涔熶竴瀹氳法澶� + sleepStartDate = getLongDate(effectiveDate, sleepStartDateStr, temp.getIsDaySpan()); + end1 = DateUtils.addDays(end1, 1); + sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, temp.getIsDaySpan()); + start2 = DateUtils.addDays(start2, 1); + } else { + //鐝寮�濮嬫椂闂翠笉璺ㄥぉ锛� 缁撴潫鏃堕棿璺ㄥぉ + end2 = DateUtils.addDays(end2, 1); + //鍒ゆ柇浼戞伅寮�濮嬫椂闂存槸鍚﹁法澶� + if (startDateStr.compareTo(sleepStartDateStr) > 0) { + //寮�濮嬩紤鎭椂闂磋法澶╋紝 缁撴潫浼戞伅鏃堕棿涔熶竴瀹氳法澶� + sleepStartDate = getLongDate(effectiveDate, sleepStartDateStr, temp.getIsDaySpan()); + end1 = DateUtils.addDays(end1, 1); + sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, temp.getIsDaySpan()); + start2 = DateUtils.addDays(start2, 1); + } else { + //浼戞伅寮�濮嬫椂闂翠笉璺ㄥぉ, 鍒ゆ柇浼戞伅缁撴潫鏃堕棿鏄惁璺ㄥぉ + if (sleepStartDateStr.compareTo(sleepEndDateStr) > 0) { + //浼戞伅缁撴潫鏃堕棿璺ㄥぉ + sleepEndDate = getLongDate(effectiveDate, sleepEndDateStr, temp.getIsDaySpan()); + start2 = DateUtils.addDays(start2, 1); + } + } + } + + } + MdcShiftDateVo dates1 = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), startDate, sleepStartDate, effectiveDateStr, endTime, start1, end1); + result.add(dates1); + MdcShiftDateVo dates2 = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), sleepEndDate, endDate, effectiveDateStr, endTime, start2, end2); + result.add(dates2); + } else { + /*鑾峰彇鐝鐨勫紑濮嬫椂闂寸粨鏉熸椂闂�*/ + Date start = DateUtils.getFormatDate(eff + " " + startDateStr, DateUtils.STR_DATE_TIME_SMALL); + Date end = DateUtils.getFormatDate(eff + " " + endDateStr, DateUtils.STR_DATE_TIME_SMALL); + if ("true".equals(temp.getIsDaySpan())) { + if (startDateStr.compareTo(endDateStr) < 0) { + startDate = getLongDate(effectiveDate, startDateStr, temp.getIsDaySpan()); + start = DateUtils.addDays(start, 1); + } + end = DateUtils.addDays(end, 1); + } + MdcShiftDateVo dates = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), startDate, endDate, effectiveDateStr, endTime, start, end); + result.add(dates); + } + // 澶勭悊鍔犵彮鏃堕棿 + if (StringUtils.isNotEmpty(overtimeStartTime)) { + Date start = DateUtils.getFormatDate(eff + " " + overtimeStartTime, DateUtils.STR_DATE_TIME_SMALL); + Date end = DateUtils.getFormatDate(eff + " " + overtimeEndTime, DateUtils.STR_DATE_TIME_SMALL); + if ("true".equals(temp.getIsDaySpan())) { + start = DateUtils.addDays(start, 1); + end = DateUtils.addDays(end, 1); + } + MdcShiftDateVo dates = new MdcShiftDateVo(temp.getShiftId(), temp.getShiftSubId(), startDate, endDate, effectiveDateStr, endTime, start, end); + result.add(dates); + } + } catch (ParseException e) { + e.printStackTrace(); + } + return result; + } + + private Map<String, List<MdcDeviceCalendarVo>> mdcDeviceCalendarMap(String equipmentId, List<String> stringDates) { + List<MdcDeviceCalendarVo> mdcDeviceCalendarVos = mdcDeviceCalendarService.listByEquipmentAndDate(equipmentId, stringDates); + if (mdcDeviceCalendarVos.isEmpty()) { + return null; + } + Map<String, List<MdcDeviceCalendarVo>> map = new HashMap<>(); + for (MdcDeviceCalendarVo mdcDeviceCalendarVo : mdcDeviceCalendarVos) { + List<MdcDeviceCalendarVo> mdcDeviceCalendarVos1; + if (map.containsKey(mdcDeviceCalendarVo.getEffectiveDate())) { + mdcDeviceCalendarVos1 = map.get(mdcDeviceCalendarVo.getEffectiveDate()); + } else { + mdcDeviceCalendarVos1 = new ArrayList<>(); + } + mdcDeviceCalendarVos1.add(mdcDeviceCalendarVo); + map.put(mdcDeviceCalendarVo.getEffectiveDate(), mdcDeviceCalendarVos1); + } + return map; + } + + private long getLongDate(Date effectiveDate, String startDateStr, String isDaySpan) { + String[] startDateArray = startDateStr.split(":"); + Calendar cal = Calendar.getInstance(); + cal.setTime(effectiveDate); + cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt(startDateArray[0])); + cal.set(Calendar.MINUTE, Integer.parseInt(startDateArray[1])); + cal.set(Calendar.SECOND, Integer.parseInt(startDateArray[2])); + if ("true".equals(isDaySpan)) { + cal.add(Calendar.DAY_OF_YEAR, 1); + } + return cal.getTime().getTime(); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDeviceCalendarVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDeviceCalendarVo.java index e6f60d0..8d773f1 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDeviceCalendarVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDeviceCalendarVo.java @@ -18,4 +18,7 @@ private String isDaySpan; private String equipmentName; // private String equipmentId; + + private String overtimeStartTime; + private String overtimeEndTime; } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java index 0a0cc3f..e6ffd89 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportQueryVo.java @@ -41,4 +41,9 @@ */ private List<String> equipmentIdList; + /** + * 璁惧绫诲瀷 + */ + private String equipmentType; + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportShiftQueryVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportShiftQueryVo.java index 464c650..221e89e 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportShiftQueryVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcEfficiencyReportShiftQueryVo.java @@ -44,5 +44,9 @@ * 璁惧ids */ private List<String> equipmentIdList; + /** + * 璁惧绫诲瀷 + */ + private String equipmentType; } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcProcessCountVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcProcessCountVo.java new file mode 100644 index 0000000..5fe9c6c --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcProcessCountVo.java @@ -0,0 +1,16 @@ +package org.jeecg.modules.mdc.vo; + +import lombok.Data; + +/** + * @author Lius + * @date 2023/12/7 16:55 + */ +@Data +public class MdcProcessCountVo { + private String equipmentId; + private String equipmentName; + private String driveType; + private String sequenceNumber; + private String theDate; +} 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 3035eff..39fb53f 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 @@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.aliyuncs.exceptions.ClientException; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.IdWorker; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -14,6 +15,7 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.SymbolConstant; import org.jeecg.common.system.util.JwtUtil; +import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.util.*; import org.jeecg.common.util.encryption.EncryptedString; @@ -29,7 +31,6 @@ import org.jeecg.modules.system.util.RandImageUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -103,7 +104,7 @@ return result; }*/ //update-end-author:taoyan date:20190828 for:鏍¢獙楠岃瘉鐮� - + //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 //update-begin-author:wangshuai date:20200601 for: 鐧诲綍浠g爜楠岃瘉鐢ㄦ埛鏄惁娉ㄩ攢bug锛宨f鏉′欢姘歌繙涓篺alse LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); @@ -119,10 +120,51 @@ String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); String syspassword = sysUser.getPassword(); if (!syspassword.equals(userpassword)) { - result.error500("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒"); + // 鑾峰彇鐢ㄦ埛澶辫触鏈�澶ф鏁� + //Integer maxAttempts = CommonConstant.MAX_ATTEMPTS; + List<DictModel> dictModels = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_MAX_ATTEMPTS); + if (dictModels != null && !dictModels.isEmpty()) { + Integer maxAttempts = Integer.valueOf(dictModels.get(0).getValue()); + if (redisUtil.hasKey(CommonConstant.PREFIX_LOGIN_COUNT + username)) { + Integer loginCount = (Integer) redisUtil.get(CommonConstant.PREFIX_LOGIN_COUNT + username) + 1; + if (loginCount < maxAttempts) { + result.error500("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒锛岃閲嶆柊灏濊瘯銆傚墿浣欏皾璇曟鏁帮細" + (maxAttempts - loginCount)); + redisUtil.set(CommonConstant.PREFIX_LOGIN_COUNT + username, loginCount + 1, 300); + } else if (loginCount.equals(maxAttempts)) { + // 瓒呰繃鏈�澶х櫥褰曟鏁� 閿佸畾鐢ㄦ埛 + //sysUserService.update(new SysUser().setStatus(CommonConstant.USER_FREEZE), new UpdateWrapper<SysUser>().lambda().eq(SysUser::getUsername, username)); + // 鑾峰彇鐢ㄦ埛澶辫触閿佸畾鏃堕暱 + List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FREEZE); + if (dictModelList != null && !dictModelList.isEmpty()) { + Integer userFreezeTime = Integer.valueOf(dictModelList.get(0).getValue()); + redisUtil.set(CommonConstant.PREFIX_LOGIN_COUNT + username, loginCount + 1, userFreezeTime * 60); + result.error500("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒锛屽凡鍒拌揪鏈�澶у皾璇曟鏁帮紝璇风◢鍚庡皾璇曪紒"); + } else { + //淇敼鏁版嵁搴撻攣瀹氱敤鎴� + sysUserService.update(new SysUser().setStatus(CommonConstant.USER_FREEZE), new UpdateWrapper<SysUser>().lambda().eq(SysUser::getUsername, username)); + //鍒犻櫎redis淇℃伅 + redisUtil.del(CommonConstant.PREFIX_LOGIN_COUNT + username); + result.error500("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒锛屽凡鍒拌揪鏈�澶у皾璇曟鏁帮紝璇疯仈绯荤鐞嗗憳瑙i攣锛�"); + } + + } else { + result.error500("鎮ㄧ殑璐︽埛宸查攣瀹氾紝璇风◢鍚庡皾璇曪紒"); + } + } else { + redisUtil.set(CommonConstant.PREFIX_LOGIN_COUNT + username, 1, 300); + result.error500("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒锛岃閲嶆柊灏濊瘯銆傚墿浣欏皾璇曟鏁帮細" + (maxAttempts - 1)); + } + } + + + //result.error500("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒"); return result; + } else { + if (redisUtil.hasKey(CommonConstant.PREFIX_LOGIN_COUNT + username)) { + redisUtil.del(CommonConstant.PREFIX_LOGIN_COUNT + username); + } } - + //鐢ㄦ埛鐧诲綍淇℃伅 userInfo(sysUser, result); //update-begin--Author:liusq Date:20210126 for锛氱櫥褰曟垚鍔燂紝鍒犻櫎redis涓殑楠岃瘉鐮� @@ -161,7 +203,7 @@ } //update-begin---author:liusq ---date:2022-06-29 for锛氭帴鍙h繑鍥炲�间慨鏀癸紝鍚屾淇敼杩欓噷鐨勫垽鏂�昏緫----------- //update-end---author:scott ---date::2022-06-20 for锛歷ue3鍓嶇锛屾敮鎸佽嚜瀹氫箟棣栭〉-------------- - + obj.put("userInfo",sysUser); obj.put("sysAllDictItems", sysDictService.queryAllDictItems()); result.setResult(obj); @@ -170,7 +212,7 @@ return result; } - + /** * 閫�鍑虹櫥褰� * @param request @@ -204,7 +246,7 @@ return Result.error("Token鏃犳晥!"); } } - + /** * 鑾峰彇璁块棶閲� * @return @@ -235,7 +277,7 @@ result.success("鐧诲綍鎴愬姛"); return result; } - + /** * 鑾峰彇璁块棶閲� * @return @@ -256,8 +298,8 @@ result.setResult(oConvertUtils.toLowerCasePageList(list)); return result; } - - + + /** * 鐧婚檰鎴愬姛閫夋嫨鐢ㄦ埛褰撳墠閮ㄩ棬 * @param user @@ -282,7 +324,7 @@ /** * 鐭俊鐧诲綍鎺ュ彛 - * + * * @param jsonObject * @return */ @@ -298,12 +340,12 @@ result.setSuccess(false); return result; } - + //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906 String redisKey = CommonConstant.PHONE_REDIS_KEY_PRE+mobile; Object object = redisUtil.get(redisKey); //update-end-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906 - + if (object != null) { result.setMessage("楠岃瘉鐮�10鍒嗛挓鍐咃紝浠嶇劧鏈夋晥锛�"); result.setSuccess(false); @@ -337,7 +379,7 @@ } return result; } - + /** * smsmode 鐭俊妯℃澘鏂瑰紡 0 .鐧诲綍妯℃澘銆�1.娉ㄥ唽妯℃澘銆�2.蹇樿瀵嗙爜妯℃澘 */ @@ -355,12 +397,12 @@ result.setSuccess(false); return result; } - + //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906 //楠岃瘉鐮�10鍒嗛挓鍐呮湁鏁� redisUtil.set(redisKey, captcha, 600); //update-end-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906 - + //update-begin--Author:scott Date:20190812 for锛歩ssues#391 //result.setResult(captcha); //update-end--Author:scott Date:20190812 for锛歩ssues#391 @@ -373,11 +415,11 @@ } return result; } - + /** * 鎵嬫満鍙风櫥褰曟帴鍙� - * + * * @param jsonObject * @return */ @@ -386,14 +428,14 @@ public Result<JSONObject> phoneLogin(@RequestBody JSONObject jsonObject) { Result<JSONObject> result = new Result<JSONObject>(); String phone = jsonObject.getString("mobile"); - + //鏍¢獙鐢ㄦ埛鏈夋晥鎬� SysUser sysUser = sysUserService.getUserByPhone(phone); result = sysUserService.checkUserIsEffective(sysUser); if(!result.isSuccess()) { return result; } - + String smscode = jsonObject.getString("captcha"); //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906 @@ -429,9 +471,16 @@ // 鐢熸垚token String token = JwtUtil.sign(username, syspassword); + // 鑾峰彇token缂撳瓨鏈夋晥鏃堕棿 + Integer expireTime = CommonConstant.TOKEN_EXPIRE_TIME; + List<DictModel> dictModels = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_TOKEN_EXPIRE_TIME); + if (dictModels != null && !dictModels.isEmpty()) { + expireTime = Integer.valueOf(dictModels.get(0).getValue()); + } // 璁剧疆token缂撳瓨鏈夋晥鏃堕棿 - redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token); - redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME * 2 / 1000); + redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, token, (long) (expireTime + 1) * 60 * 60); + + //redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, ); obj.put("token", token); // update-begin--Author:sunjianlei Date:20210802 for锛氳幏鍙栫敤鎴风鎴蜂俊鎭� @@ -505,13 +554,13 @@ String code = RandomUtil.randomString(BASE_CHECK_CODES,4); //瀛樺埌redis涓� String lowerCaseCode = code.toLowerCase(); - + //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906 // 鍔犲叆瀵嗛挜浣滀负娣锋穯锛岄伩鍏嶇畝鍗曠殑鎷兼帴锛岃澶栭儴鍒╃敤锛岀敤鎴疯嚜瀹氫箟璇ュ瘑閽ュ嵆鍙� String origin = lowerCaseCode+key+jeecgBaseConfig.getSignatureSecret(); String realKey = Md5Util.md5Encode(origin, "utf-8"); //update-end-author:taoyan date:2022-9-13 for: VUEN-2245 銆愭紡娲炪�戝彂鐜版柊婕忔礊寰呭鐞�20220906 - + redisUtil.set(realKey, lowerCaseCode, 60); log.info("鑾峰彇楠岃瘉鐮侊紝Redis key = {}锛宑heckCode = {}", realKey, code); //杩斿洖鍓嶇 @@ -535,7 +584,7 @@ sysPermissionService.switchVue3Menu(); return res; } - + /** * app鐧诲綍 * @param sysLoginModel @@ -547,14 +596,14 @@ Result<JSONObject> result = new Result<JSONObject>(); String username = sysLoginModel.getUsername(); String password = sysLoginModel.getPassword(); - + //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 SysUser sysUser = sysUserService.getUserByName(username); result = sysUserService.checkUserIsEffective(sysUser); if(!result.isSuccess()) { return result; } - + //2. 鏍¢獙鐢ㄦ埛鍚嶆垨瀵嗙爜鏄惁姝g‘ String userpassword = PasswordUtil.encrypt(username, password, sysUser.getSalt()); String syspassword = sysUser.getPassword(); @@ -562,7 +611,7 @@ result.error500("鐢ㄦ埛鍚嶆垨瀵嗙爜閿欒"); return result; } - + String orgCode = sysUser.getOrgCode(); if(oConvertUtils.isEmpty(orgCode)) { //濡傛灉褰撳墠鐢ㄦ埛鏃犻�夋嫨閮ㄩ棬 鏌ョ湅閮ㄩ棬鍏宠仈淇℃伅 @@ -581,7 +630,7 @@ JSONObject obj = new JSONObject(); //鐢ㄦ埛鐧诲綍淇℃伅 obj.put("userInfo", sysUser); - + // 鐢熸垚token String token = JwtUtil.sign(username, syspassword); // 璁剧疆瓒呮椂鏃堕棿 diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java index 058a528..87c3052 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/SysUserController.java @@ -179,6 +179,8 @@ try { SysUser user = JSON.parseObject(jsonObject.toJSONString(), SysUser.class); user.setCreateTime(new Date());//璁剧疆鍒涘缓鏃堕棿 + user.setPasswordTime(new Date());//璁剧疆瀵嗙爜鏃堕棿 + user.setPasswordFlag(CommonConstant.DEL_FLAG_1);//璁剧疆瀵嗙爜棣栨鏍囪瘑 String salt = oConvertUtils.randomGen(8); user.setSalt(salt); String passwordEncode = PasswordUtil.encrypt(user.getUsername(), user.getPassword(), salt); @@ -638,17 +640,17 @@ String oldpassword = json.getString("oldpassword"); String password = json.getString("password"); String confirmpassword = json.getString("confirmpassword"); - LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (!sysUser.getUsername().equals(username)) { - return Result.error("鍙厑璁镐慨鏀硅嚜宸辩殑瀵嗙爜锛�"); - } + //LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + //if (!sysUser.getUsername().equals(username)) { + // return Result.error("鍙厑璁镐慨鏀硅嚜宸辩殑瀵嗙爜锛�"); + //} SysUser user = this.sysUserService.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUsername, username)); if (user == null) { return Result.error("鐢ㄦ埛涓嶅瓨鍦紒"); } //update-begin---author:wangshuai ---date:20220316 for锛歔VUEN-234]淇敼瀵嗙爜娣诲姞鏁忔劅鏃ュ織------------ - LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - baseCommonService.addLog("淇敼瀵嗙爜锛寀sername锛� " + loginUser.getUsername(), CommonConstant.LOG_TYPE_2, 2); + //LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + baseCommonService.addLog("淇敼瀵嗙爜锛寀sername锛� " + username, CommonConstant.LOG_TYPE_2, 2); //update-end---author:wangshuai ---date:20220316 for锛歔VUEN-234]淇敼瀵嗙爜娣诲姞鏁忔劅鏃ュ織------------ return sysUserService.resetPassword(username, oldpassword, password, confirmpassword); } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java index d5ac493..4e6f1cd 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/entity/SysUser.java @@ -198,5 +198,15 @@ @Dict(dicCode = "id",dictTable = "mom_base_team",dicText = "name") private String teamId; + /** + * 瀵嗙爜棣栨浣跨敤鏍囪瘑 1鏄� 0鍚� + */ + private Integer passwordFlag; + + /** + * 瀵嗙爜鏇存柊鏃堕棿 + */ + private Date passwordTime; + } 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 d466081..9028b88 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 @@ -11,8 +11,10 @@ import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.enums.RoleIndexConfigEnum; import org.jeecg.common.desensitization.annotation.SensitiveEncode; +import org.jeecg.common.system.vo.DictModel; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.common.system.vo.SysUserCacheInfo; +import org.jeecg.common.util.DateUtils; import org.jeecg.common.util.PasswordUtil; import org.jeecg.common.util.UUIDGenerator; import org.jeecg.common.util.oConvertUtils; @@ -20,6 +22,7 @@ import org.jeecg.modules.system.entity.*; import org.jeecg.modules.system.mapper.*; import org.jeecg.modules.system.model.SysUserSysDepartModel; +import org.jeecg.modules.system.service.ISysDictService; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.system.vo.MdcUserProVo; import org.jeecg.modules.system.vo.SysUserDepVo; @@ -74,6 +77,8 @@ SysRoleIndexMapper sysRoleIndexMapper; @Resource MdcUserProductionMapper mdcUserProductionMapper; + @Resource + private ISysDictService sysDictService; @Override @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) @@ -89,8 +94,12 @@ if (!newpassword.equals(confirmpassword)) { return Result.error("涓ゆ杈撳叆瀵嗙爜涓嶄竴鑷�!"); } + //璁剧疆瀵嗙爜鏇存柊鏃堕棿 + //sysUser.setPasswordTime(new Date()); + //璁剧疆瀵嗙爜棣栨鐧诲綍澶辨晥 + //sysUser.setPasswordFlag(CommonConstant.DEL_FLAG_0); String password = PasswordUtil.encrypt(username, newpassword, user.getSalt()); - this.userMapper.update(new SysUser().setPassword(password), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId())); + this.userMapper.update(new SysUser().setPassword(password).setPasswordTime(new Date()).setPasswordFlag(CommonConstant.DEL_FLAG_0), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId())); return Result.ok("瀵嗙爜閲嶇疆鎴愬姛!"); } @@ -99,6 +108,8 @@ public Result<?> changePassword(SysUser sysUser) { String salt = oConvertUtils.randomGen(8); sysUser.setSalt(salt); + //璁剧疆瀵嗙爜鏇存柊鏃堕棿 + sysUser.setPasswordTime(new Date()); String password = sysUser.getPassword(); String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt); sysUser.setPassword(passwordEncode); @@ -442,6 +453,32 @@ result.error500("璇ョ敤鎴峰凡鍐荤粨"); return result; } + //鎯呭喌4锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佺郴棣栨浣跨敤锛岄渶淇敼瀵嗙爜 + List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FIRST_LOGIN); + if (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); + result.setMessage("鐢ㄦ埛瀵嗙爜绯婚粯璁ゅ瘑鐮侊紝闇�閲嶇疆瀵嗙爜鍚庨噸鏂扮櫥褰曞瘑鐮侊紒"); + result.setSuccess(false); + return result; + } + } + //鎯呭喌5锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佹槸鍚﹀凡杩囨洿鏀瑰懆鏈� + Date passwordTime = sysUser.getPasswordTime(); + //Integer passwordExpirationPeriod = CommonConstant.PASSWORD_EXPIRATION_PERIOD; + List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_PASSWORD_EXPIRATION); + if (dictModelList != null && !dictModelList.isEmpty()) { + Integer passwordExpirationPeriod = Integer.valueOf(dictModelList.get(0).getValue()); + Date dayAfter = DateUtils.getDayAfter(passwordTime, passwordExpirationPeriod); + if (new Date().after(dayAfter)) { + baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "瀵嗙爜宸茶繃鏈夋晥鏈燂紝璇烽噸缃瘑鐮侊紒", CommonConstant.LOG_TYPE_1, null); + result.setCode(5002); + result.setMessage("鐢ㄦ埛瀵嗙爜宸茶繃鏈夋晥鏈燂紝璇烽噸缃瘑鐮侊紒"); + result.setSuccess(false); + return result; + } + } return result; } -- Gitblit v1.9.3