From 29dcac1a7bb5758b6f9a39fd0738f6ab367b5418 Mon Sep 17 00:00:00 2001 From: hyingbo <1363390067@qq.com> Date: 星期二, 10 六月 2025 13:29:52 +0800 Subject: [PATCH] 操作工停机上报接口,操作工刷卡登录 --- lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java | 23 ++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java | 1 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java | 171 +++++++++++++++++++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java | 23 ++ lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java | 10 + lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java | 70 +++++++ lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml | 14 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java | 4 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java | 85 +++++++++ lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java | 11 + lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java | 8 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java | 23 ++ lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java | 28 +++ lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java | 13 + lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java | 6 lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java | 2 lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml | 14 + 20 files changed, 502 insertions(+), 10 deletions(-) diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java index 57d0f71..e0e0e88 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/MdcEquipmentMapper.java @@ -140,4 +140,6 @@ List<MdcEquipment> findByProIdsAndTeamCode(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("teamCodeList") List<String> teamCodeList); List<MdcEquipment> findByProIdsAndType(@Param("mdcProductionIds") List<String> mdcProductionIds, @Param("typeList") List<String> typeList); + + List<MdcEquipment> getEquipmentList(@Param("allProductionIds") List<String> allProductionIds); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml index 8440226..80df077 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcEquipmentMapper.xml @@ -89,6 +89,20 @@ </foreach> </select> + <!--鏍规嵁浜х嚎id鏌ヨ璁惧id闆嗗悎--> + <select id="getEquipmentList" resultType="org.jeecg.modules.mdc.entity.MdcEquipment"> + SELECT + me.* + FROM + mdc_equipment me + LEFT JOIN mdc_production_equipment mpe ON me.id = mpe.equipment_id + WHERE + mpe.production_id IN + <foreach collection="allProductionIds" index="index" item="id" open="(" separator="," close=")"> + #{id} + </foreach> + </select> + <!--鏌ヨ璁惧鐩戞帶淇℃伅--> <select id="checkStatusFromEquipmentIds" resultType="org.jeecg.modules.mdc.entity.MdcEquipmentMonitor"> SELECT diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java index dce27ed..e4e1ba3 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/IMdcEquipmentService.java @@ -239,4 +239,10 @@ * @return */ List<MdcEquipment> findByProIdsAndType(List<String> allProductionIds, List<String> typeList); + + /** + * 鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅 + * @return + */ + List<MdcEquipment> getEquipmentList(); } diff --git a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java index 3964351..9f09066 100644 --- a/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java +++ b/lxzn-module-mdc-common/src/main/java/org/jeecg/modules/mdc/service/impl/MdcEquipmentServiceImpl.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringPool; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -1042,4 +1043,31 @@ return this.baseMapper.findByProIdsAndType(allProductionIds, typeList); } + @Override + public List<MdcEquipment> getEquipmentList() { + + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + if (StringUtils.isNotEmpty(user.getEquipmentIds())) { + return this.baseMapper.selectList(new LambdaQueryWrapper<MdcEquipment>().eq(MdcEquipment::getEquipmentId, Arrays.asList(user.getEquipmentIds().split(StringPool.COMMA)))); + } + //鑾峰彇鎵�鏈変骇绾挎暟鎹� + List<MdcProduction> productionList = mdcProductionService.list(new LambdaQueryWrapper<MdcProduction>().eq(MdcProduction::getDelFlag, CommonConstant.DEL_FLAG_0.toString()).orderByAsc(MdcProduction::getProductionOrder)); + //鏍规嵁鐢ㄦ埛id鑾峰彇鎷ユ湁鐨勪骇绾夸俊鎭泦鍚� + List<String> productionIds = mdcUserProductionService.queryProductionIdsByUserId(userId); + List<String> allProductionIds = new ArrayList<>(); + //鎵惧埌鎵�鏈変骇绾縤d鐨勪笂绾d + if (productionIds != null && !productionIds.isEmpty()) { + for (String productionId : productionIds) { + this.getAllProductionIds(productionList, productionId, allProductionIds); + } + } + //鏍规嵁浜х嚎闆嗗悎鏌ユ壘鎵�鏈夎澶噄d + if (allProductionIds.isEmpty()) { + return null; + } + List<MdcEquipment> equipmentIds = this.baseMapper.getEquipmentList(allProductionIds); + return equipmentIds; + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java new file mode 100644 index 0000000..e9ea792 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeOperatorController.java @@ -0,0 +1,85 @@ +package org.jeecg.modules.mdc.controller; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.base.controller.JeecgController; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.service.IMdcDowntimeOperatorService; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; +import org.jeecg.modules.mdc.vo.SplitDowntimeVo; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +/** + * @Description: 鎿嶄綔宸ュ仠鏈哄緟鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +@Slf4j +@Api(tags = "鎿嶄綔宸ュ仠鏈哄緟鏈鸿〃") +@RestController +@RequestMapping("/mdc/operator/mdcDowntime") +public class MdcDowntimeOperatorController extends JeecgController<MdcDowntime, IMdcDowntimeOperatorService> { + + + @Resource + private IMdcDowntimeOperatorService mdcDowntimeService; + + /** + * 鍒嗛〉鍒楄〃鏌ヨ + * + * @param mdcDowntimeVo + * @param pageNo + * @param pageSize + * @return + */ + @AutoLog(value = "寰呮満鍋滄満琛�-鍒嗛〉鍒楄〃鏌ヨ") + @ApiOperation(value = "寰呮満鍋滄満琛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "寰呮満鍋滄満琛�-鍒嗛〉鍒楄〃鏌ヨ") + @GetMapping(value = "/list") + public Result<?> queryPageList(MdcDowntimeVo mdcDowntimeVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + Page<MdcDowntimeDto> page = new Page<MdcDowntimeDto>(pageNo, pageSize); + IPage<MdcDowntimeDto> pageList = mdcDowntimeService.pageList(mdcDowntimeVo, page); + return Result.OK(pageList); + } + + /** + * 缁存姢鍋滄満 + * + * @param mdcDowntimeVo + * @return + */ + @AutoLog(value = "寰呮満鍋滄満琛�-缁存姢鍋滄満") + @ApiOperation(value = "寰呮満鍋滄満琛�-缁存姢鍋滄満", notes = "寰呮満鍋滄満琛�-缁存姢鍋滄満") + @RequestMapping(value = "/updateReason", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> updateReason(@RequestBody MdcDowntimeVo mdcDowntimeVo) { + mdcDowntimeService.updateReason(mdcDowntimeVo); + return Result.OK("缂栬緫鎴愬姛!"); + } + + /** + * 鍋滄満鎷嗗垎 + * + * @param splitDowntimeVo + * @return + */ + @AutoLog(value = "寰呮満鍋滄満琛�-鍋滄満鎷嗗垎") + @ApiOperation(value = "寰呮満鍋滄満琛�-鍋滄満鎷嗗垎", notes = "寰呮満鍋滄満琛�-鍋滄満鎷嗗垎") + @RequestMapping(value = "/splitDowntime", method = {RequestMethod.PUT, RequestMethod.POST}) + public Result<?> splitDowntime(@RequestBody SplitDowntimeVo splitDowntimeVo) { + mdcDowntimeService.splitDowntime(splitDowntimeVo); + return Result.OK("鎷嗗垎鎴愬姛!"); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java index 2bfc351..6c65a0b 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcDowntimeReasonController.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.beust.jcommander.internal.Lists; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -10,9 +11,9 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.mdc.dto.OptionsDto; import org.jeecg.modules.mdc.entity.MdcDowntimeReason; import org.jeecg.modules.mdc.service.IMdcDowntimeReasonService; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -166,4 +167,24 @@ return Result.OK(result); } + /** + * 鍋滄満鍘熷洜涓嬫媺閫夋嫨 + * + * @return + */ + @AutoLog(value = "鍋滄満鍘熷洜琛�-鍋滄満鍘熷洜涓嬫媺閫夋嫨") + @ApiOperation(value = "鍋滄満鍘熷洜琛�-鍋滄満鍘熷洜涓嬫媺閫夋嫨", notes = "鍋滄満鍘熷洜琛�-鍋滄満鍘熷洜涓嬫媺閫夋嫨") + @GetMapping(value = "/reasonList") + public Result<List<OptionsDto>> reasonList() { + List<MdcDowntimeReason> result = mdcDowntimeReasonService.list(); + List<OptionsDto> list = Lists.newArrayList(); + result.forEach(mdcDowntimeReason -> { + OptionsDto optionsDto = new OptionsDto(); + optionsDto.setValue(mdcDowntimeReason.getId()); + optionsDto.setLabel(mdcDowntimeReason.getDowntimeDescription()); + list.add(optionsDto); + }); + return Result.OK(list); + } + } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java index 69a1a9f..5c1e872 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/controller/MdcEquipmentController.java @@ -111,6 +111,17 @@ } /** + * 鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅 + */ + @AutoLog(value = "璁惧琛�-鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅") + @ApiOperation(value = "璁惧琛�-鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅", notes = "璁惧琛�-鏍规嵁鐢ㄦ埛鏌ヨ璁惧鍒楄〃淇℃伅") + @GetMapping(value = "/getEquipmentList") + public Result<List<MdcEquipment>> getEquipmentList() { + List<MdcEquipment> list = mdcEquipmentService.getEquipmentList(); + return Result.OK(list); + } + + /** * 璁惧鐩戞帶鍒楄〃 */ @AutoLog(value = "璁惧琛�-璁惧鐩戞帶鍒楄〃") diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java index cefff4d..b931cea 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/entity/MdcDowntime.java @@ -81,5 +81,18 @@ @Excel(name = "澶囨敞", width = 15) @ApiModelProperty(value = "澶囨敞") private String remark; + /** + * 褰曞叆绫诲瀷 + */ + @Excel(name = "褰曞叆绫诲瀷", width = 15) + @ApiModelProperty(value = "褰曞叆绫诲瀷") + @Dict(dicCode = "enter_type") + private Integer enterType; + /** + * 鍋滄満鏃堕暱 + */ + @Excel(name = "鍋滄満鏃堕暱", width = 15) + @ApiModelProperty(value = "鍋滄満鏃堕暱") + private Integer shutdownDuration; } diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java index eafa8fc..b40b9be 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/job/ScanDowntimeJob.java @@ -90,6 +90,7 @@ downtime.setTheDate(finalDate); downtime.setStartDate(mdcEquipmentWaitSectionDto.getStartTime()); downtime.setEndDate(mdcEquipmentWaitSectionDto.getEndTime()); + downtime.setShutdownDuration(DateUtils.differentMinutes(downtime.getStartDate(), downtime.getEndDate())); return downtime; }).collect(Collectors.toList()); if (!downtimeList.isEmpty()) { diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java new file mode 100644 index 0000000..bc7b4a8 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/MdcDowntimeOperatorMapper.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.mdc.mapper; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; + +import java.util.List; + +/** + * @Description: 鎿嶄綔宸ュ緟鏈哄仠鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +public interface MdcDowntimeOperatorMapper extends BaseMapper<MdcDowntime> { + + IPage<MdcDowntimeDto> page(Page<MdcDowntimeDto> page, @Param(Constants.WRAPPER) QueryWrapper<MdcDowntimeDto> queryWrapper); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml new file mode 100644 index 0000000..db58e0e --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/mapper/xml/MdcDowntimeOperatorMapper.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="org.jeecg.modules.mdc.mapper.MdcDowntimeOperatorMapper"> + + <select id="page" resultType="org.jeecg.modules.mdc.dto.MdcDowntimeDto"> + SELECT + t1.* , + t2.downtime_type downtimeType, + t2.downtime_description downtimeDescription + FROM mdc_downtime t1 LEFT JOIN mdc_downtime_reason t2 ON t1.reason_id = t2.id + ${ew.customSqlSegment} + ORDER BY t1.create_time DESC + </select> +</mapper> \ No newline at end of file diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java new file mode 100644 index 0000000..5723186 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/IMdcDowntimeOperatorService.java @@ -0,0 +1,23 @@ +package org.jeecg.modules.mdc.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; +import org.jeecg.modules.mdc.vo.SplitDowntimeVo; + +/** + * @Description: 鎿嶄綔宸ュ緟鏈哄仠鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +public interface IMdcDowntimeOperatorService extends IService<MdcDowntime> { + + IPage<MdcDowntimeDto> pageList(MdcDowntimeVo mdcDowntimeVo, Page<MdcDowntimeDto> page); + + void updateReason(MdcDowntimeVo mdcDowntimeVo); + + void splitDowntime(SplitDowntimeVo splitDowntimeVo); +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java new file mode 100644 index 0000000..cdb8268 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/service/impl/MdcDowntimeServiceOperatorImpl.java @@ -0,0 +1,171 @@ + +package org.jeecg.modules.mdc.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.beust.jcommander.internal.Lists; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.jeecg.common.exception.JeecgBootException; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.mdc.dto.MdcDowntimeDto; +import org.jeecg.modules.mdc.entity.MdcDowntime; +import org.jeecg.modules.mdc.mapper.MdcDowntimeOperatorMapper; +import org.jeecg.modules.mdc.service.IMdcDowntimeOperatorService; +import org.jeecg.modules.mdc.service.IMdcEquipmentService; +import org.jeecg.modules.mdc.util.DateUtils; +import org.jeecg.modules.mdc.vo.MdcDowntimeVo; +import org.jeecg.modules.mdc.vo.SplitDowntimeVo; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; + +/** + * @Description: 鎿嶄綔宸ュ緟鏈哄仠鏈鸿〃 + * @Author: lius + * @Date: 2025-03-12 + */ +@Service +public class MdcDowntimeServiceOperatorImpl extends ServiceImpl<MdcDowntimeOperatorMapper, MdcDowntime> implements IMdcDowntimeOperatorService { + + @Resource + private IMdcEquipmentService mdcEquipmentService; + + @Override + public IPage<MdcDowntimeDto> pageList(MdcDowntimeVo mdcDowntimeVo, Page<MdcDowntimeDto> page) { + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + // 鑾峰彇璁惧ID鍒楄〃 + List<String> equipmentIds = Lists.newArrayList(); + if (StringUtils.isNotBlank(user.getEquipmentIds())) { + equipmentIds = Arrays.asList(user.getEquipmentIds().split(StringPool.COMMA)); + }else { + equipmentIds = getEquipmentIds(userId, mdcDowntimeVo); + } + + // 濡傛灉璁惧ID鍒楄〃涓虹┖锛岀洿鎺ヨ繑鍥炵┖鍒嗛〉 + if (equipmentIds == null || equipmentIds.isEmpty()) { + return new Page<>(page.getCurrent(), page.getSize(), 0); + } + + QueryWrapper<MdcDowntimeDto> queryWrapper = Wrappers.query(); + if (CollectionUtils.isNotEmpty(equipmentIds)) { + queryWrapper.in("t1.equipment_id", equipmentIds); + } + if (StringUtils.isNotBlank(mdcDowntimeVo.getEquipmentId())) { + queryWrapper.eq("t1.equipment_id", mdcDowntimeVo.getEquipmentId()); + } + if (Objects.nonNull(mdcDowntimeVo.getStartDate())) { + queryWrapper.ge("t1.start_date", mdcDowntimeVo.getStartDate()); + } + if (Objects.nonNull(mdcDowntimeVo.getEndDate())) { + queryWrapper.le("t1.end_date", mdcDowntimeVo.getEndDate()); + } + if (StringUtils.isNotBlank(mdcDowntimeVo.getDowntimeDescription())) { + queryWrapper.eq("t2.id", mdcDowntimeVo.getDowntimeDescription()); + } + + return this.baseMapper.page(page, queryWrapper); + } + + @Override + @Transactional(rollbackFor = {Exception.class}) + public void updateReason(MdcDowntimeVo mdcDowntimeVo) { + if (StringUtils.isEmpty(mdcDowntimeVo.getDownTimeIds())) { + throw new JeecgBootException("璇烽�夋嫨闇�瑕佺淮鎶ゅ仠鏈虹殑鏁版嵁"); + } + + List<MdcDowntime> mdcDowntimeList = this.listByIds(Arrays.asList(mdcDowntimeVo.getDownTimeIds().split(StringPool.COMMA))); + mdcDowntimeList.forEach(mdcDowntime -> { + mdcDowntime.setReasonId(mdcDowntimeVo.getReasonId()); + }); + this.updateBatchById(mdcDowntimeList); + } + + @Transactional(rollbackFor = {Exception.class}) + @Override + public void splitDowntime(SplitDowntimeVo splitDowntimeVo) { + if (StringUtils.isBlank(splitDowntimeVo.getId())) { + throw new JeecgBootException("璇烽�夋嫨闇�瑕佹媶鍒嗗仠鏈虹殑鏁版嵁"); + } + + MdcDowntime mdcDowntime = this.getById(splitDowntimeVo.getId()); + + if (StringUtils.isNotBlank(mdcDowntime.getReasonId())) { + throw new JeecgBootException("宸茶缃仠鏈哄師鍥狅紝鏃犳硶鎷嗗垎鍋滄満"); + } + + //姣旇緝鎷嗗垎涓�娈电殑鏃ユ湡鏄惁鍐嶅尯闂磋寖鍥村唴锛堝紑濮嬫椂闂达細startTime 缁撴潫鏃堕棿锛氬叆鏃犱簩娈垫椂闂达紝鍒欏彇endTime锛� + if (Objects.nonNull(splitDowntimeVo.getFirstMiddleTime())) { + + //鏍¢獙涓�娈垫棩鏈熸槸鍚﹀ぇ浜巗tartTime锛屽惁锛屾姏鍑哄紓甯� + if (Objects.isNull(splitDowntimeVo.getSecondMiddleTime())) { + if (splitDowntimeVo.getStartDate().compareTo(splitDowntimeVo.getFirstMiddleTime()) != -1 || splitDowntimeVo.getFirstMiddleTime().compareTo(splitDowntimeVo.getEndDate()) != -1) { + throw new JeecgBootException("鎷嗗垎涓�娈垫椂闂存湭鍦ㄥ紑濮嬫椂闂村拰缁撴潫鏃堕棿涔嬪唴锛岃妫�鏌ワ紒"); + } + }else { + if (splitDowntimeVo.getStartDate().compareTo(splitDowntimeVo.getFirstMiddleTime()) != -1 || splitDowntimeVo.getFirstMiddleTime().compareTo(splitDowntimeVo.getSecondMiddleTime()) != -1) { + throw new JeecgBootException("鎷嗗垎涓�娈垫椂闂存湭鍦ㄥ紑濮嬫椂闂村拰鎷嗗垎浜屾缁撴潫鏃堕棿涔嬪唴锛岃妫�鏌ワ紒"); + } + } + + }else { + throw new JeecgBootException("璇风淮鎶ゆ媶鍒嗕竴娈电粨鏉熸椂闂�"); + } + + if (Objects.nonNull(splitDowntimeVo.getSecondMiddleTime())) { + //鏍¢獙浜屾鏃ユ湡鏄惁瀛樺湪浜庝竴娈垫棩鏈熷拰endTime涔嬮棿 + + if (splitDowntimeVo.getFirstMiddleTime().compareTo(splitDowntimeVo.getSecondMiddleTime()) != -1 || splitDowntimeVo.getSecondMiddleTime().compareTo(splitDowntimeVo.getEndDate()) != -1) { + throw new JeecgBootException("鎷嗗垎浜屾鏃堕棿鏈湪鎷嗗垎涓�娈电粨鏉熸椂闂村拰缁撴潫鏃堕棿涔嬪唴锛岃妫�鏌ワ紒"); + } + } + + List<MdcDowntime> list = Lists.newArrayList(); + + //璁剧疆鎷嗗垎1娈� + if (Objects.nonNull(splitDowntimeVo.getFirstMiddleTime())) { + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getStartDate(), splitDowntimeVo.getFirstMiddleTime(), splitDowntimeVo.getFirstDowntimeDescription())); + } + + //璁剧疆鎷嗗垎2娈碉紝浜屾涓嶅瓨鍦ㄥ垯灏唀ndDate浣滀负鎷嗗垎浜屾 + if (Objects.nonNull(splitDowntimeVo.getSecondMiddleTime())) { + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getFirstMiddleTime(), splitDowntimeVo.getSecondMiddleTime(), splitDowntimeVo.getSecondDowntimeDescription())); + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getSecondMiddleTime(), splitDowntimeVo.getEndDate(), splitDowntimeVo.getThirdDowntimeDescription())); + }else { + list.add(checkMdcDowntime(mdcDowntime, splitDowntimeVo.getFirstMiddleTime(), splitDowntimeVo.getEndDate(), splitDowntimeVo.getThirdDowntimeDescription())); + } + //淇濆瓨鎷嗗垎鏁版嵁骞跺垹闄ゅ師鏈夋暟鎹� + if (this.saveBatch(list)) { + this.removeById(mdcDowntime); + } + } + + private MdcDowntime checkMdcDowntime(MdcDowntime mdcDowntime, Date startDate, Date endDate, String downtimeDescription) { + MdcDowntime mdcDowntimeInfo = new MdcDowntime(); + BeanUtil.copyProperties(mdcDowntime, mdcDowntimeInfo); + mdcDowntimeInfo.setId(IdWorker.getIdStr()); + mdcDowntimeInfo.setStartDate(startDate); + mdcDowntimeInfo.setEndDate(endDate); + mdcDowntimeInfo.setShutdownDuration(DateUtils.differentMinutes(startDate, endDate)); + mdcDowntimeInfo.setEnterType(2); + mdcDowntimeInfo.setReasonId(StringUtils.isNotBlank(downtimeDescription) ? downtimeDescription : StringPool.EMPTY); + return mdcDowntimeInfo; + } + + private List<String> getEquipmentIds(String userId, MdcDowntimeVo mdcDowntimeVo) { + if (StringUtils.isNotEmpty(mdcDowntimeVo.getEquipmentId())) { + return Collections.singletonList(mdcDowntimeVo.getEquipmentId()); + } + return mdcEquipmentService.getEquipmentIdsProduction(userId, null); + } +} diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java index 97cc304..80ff720 100644 --- a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/MdcDowntimeVo.java @@ -31,6 +31,16 @@ private String parentId; /** + * 鍋滄満鍘熷洜 + */ + private String downtimeDescription; + + /** + * 鍋滄満ids + */ + private String downTimeIds; + + /** * 璁惧ids */ private List<String> equipmentIdList; diff --git a/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java new file mode 100644 index 0000000..407df54 --- /dev/null +++ b/lxzn-module-mdc/src/main/java/org/jeecg/modules/mdc/vo/SplitDowntimeVo.java @@ -0,0 +1,70 @@ +package org.jeecg.modules.mdc.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * 鍋滄満鎷嗗垎鎿嶄綔鍏ュ弬 + */ +@Data +public class SplitDowntimeVo { + + /** + * 鍋滄満鎷嗗垎id + */ + private String id; + + /** + * 寮�濮嬫椂闂� + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "寮�濮嬫椂闂�") + private Date startDate; + + /** + * 鎷嗗垎1娈电粨鏉熸椂闂� + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鎷嗗垎1娈靛紑濮嬫椂闂�") + private Date firstMiddleTime; + + /** + * 鎷嗗垎1娈靛仠鏈哄師鍥� + */ + @ApiModelProperty(value = "鎷嗗垎1娈靛仠鏈哄師鍥�") + private String firstDowntimeDescription; + + /** + * 鎷嗗垎2娈电粨鏉熸椂闂� + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鎷嗗垎2娈靛紑濮嬫椂闂�") + private Date secondMiddleTime; + + /** + * 鎷嗗垎2娈靛仠鏈哄師鍥� + */ + @ApiModelProperty(value = "鎷嗗垎2娈靛仠鏈哄師鍥�") + private String secondDowntimeDescription; + + /** + * 缁撴潫鏃堕棿 + */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "缁撴潫鏃堕棿") + private Date endDate; + + /** + * 鎷嗗垎3娈靛仠鏈哄師鍥� + */ + @ApiModelProperty(value = "鎷嗗垎3娈靛仠鏈哄師鍥�") + private String thirdDowntimeDescription; +} diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java index 4b271a6..c1e760d 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java @@ -74,7 +74,7 @@ log.info("-------token----username---"+principal); //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 SysUser sysUser = sysUserService.getUserByName(principal); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java index 3e7dff6..e577cb7 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/LoginController.java @@ -121,7 +121,7 @@ } SysUser sysUser = sysUserService.getOne(queryWrapper); //update-end-author:wangshuai date:20200601 for: 鐧诲綍浠g爜楠岃瘉鐢ㄦ埛鏄惁娉ㄩ攢bug锛宨f鏉′欢姘歌繙涓篺alse - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, loginType); if(!result.isSuccess()) { return result; } @@ -397,7 +397,7 @@ }else { //鐧诲綍妯″紡锛屾牎楠岀敤鎴锋湁鏁堟�� SysUser sysUser = sysUserService.getUserByPhone(mobile); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { String message = result.getMessage(); String userNotExist="璇ョ敤鎴蜂笉瀛樺湪锛岃娉ㄥ唽"; @@ -458,7 +458,7 @@ //鏍¢獙鐢ㄦ埛鏈夋晥鎬� SysUser sysUser = sysUserService.getUserByPhone(phone); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } @@ -626,7 +626,7 @@ //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 SysUser sysUser = sysUserService.getUserByName(username); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java index 9e8a0f6..8337273 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java @@ -218,7 +218,7 @@ //1. 鏍¢獙鐢ㄦ埛鏄惁鏈夋晥 SysUser sysUser = sysUserService.getUserByName(username); - result = sysUserService.checkUserIsEffective(sysUser); + result = sysUserService.checkUserIsEffective(sysUser, null); if(!result.isSuccess()) { return result; } diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java index 48fad04..103f93a 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/ISysUserService.java @@ -221,7 +221,7 @@ * @param sysUser * @return */ - Result checkUserIsEffective(SysUser sysUser); + Result checkUserIsEffective(SysUser sysUser, String loginType); /** * 鏌ヨ琚�昏緫鍒犻櫎鐨勭敤鎴� diff --git a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java index 37f72de..8d9799b 100644 --- a/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java +++ b/lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java @@ -440,7 +440,7 @@ * @return */ @Override - public Result<?> checkUserIsEffective(SysUser sysUser) { + public Result<?> checkUserIsEffective(SysUser sysUser, String loginType) { Result<?> result = new Result<Object>(); //鎯呭喌1锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴蜂笉瀛樺湪 if (sysUser == null) { @@ -464,7 +464,7 @@ } //鎯呭喌4锛氭牴鎹敤鎴蜂俊鎭煡璇紝璇ョ敤鎴峰瘑鐮佺郴棣栨浣跨敤锛岄渶淇敼瀵嗙爜 List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FIRST_LOGIN); - if (dictList != null && !dictList.isEmpty()) { + if (!"terminal".equals(loginType) && dictList != null && !dictList.isEmpty()) { if (CommonConstant.DEL_FLAG_1.equals(Integer.valueOf(dictList.get(0).getValue())) && CommonConstant.DEL_FLAG_1.equals(sysUser.getPasswordFlag())) { baseCommonService.addLog("鐢ㄦ埛鐧诲綍澶辫触锛岀敤鎴峰悕:" + sysUser.getUsername() + "绯婚娆$櫥褰曠郴缁燂紝璇烽噸缃瘑鐮侊紒", CommonConstant.LOG_TYPE_1, null); result.setCode(5001); -- Gitblit v1.9.3