lyh
2025-06-30 e3a037adf3861fee78ad5478784f24e59cc598a2
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/StreamController.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.jeecg.dingtalk.api.user.vo.User;
import com.jeecg.dingtalk.api.user.vo.UserRole;
import org.jeecg.common.api.dto.message.MessageDTO;
@@ -12,8 +13,8 @@
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.eam.entity.Equipment;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.entity.*;
import org.jeecg.modules.eam.service.*;
import org.jeecg.modules.eam.vo.ButtonVo;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.service.*;
@@ -27,15 +28,11 @@
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.*;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.entity.StreamOperation;
import org.jeecg.modules.eam.entity.ABCAssessment;
import org.jeecg.modules.eam.entity.Stream;
import org.jeecg.modules.eam.service.IStreamService;
import org.jeecg.modules.eam.service.IStreamOperationService;
import org.jeecg.modules.eam.service.IABCAssessmentService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.jeecg.common.aspect.annotation.AutoLog;
@@ -93,6 +90,23 @@
    @Autowired
    private IEamEquipmentService equipmentService;
    @Autowired
    private IdentityService sysIdentityService;
    @Autowired
    private IEquipmentMaintenancePlanDetailService planDetailService;
    @Autowired
    private IEquipmentMaintenancePlanService planService;
    @Autowired
    private IMaintenanceStandardService maintenanceStandardService;
    @Autowired
    private IEquipmentUpdateInfoService updateInfoService;
   /*---------------------------------主表处理-begin-------------------------------------*/
@@ -112,9 +126,14 @@
                           @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                           @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                           HttpServletRequest req) {
      LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
      SysUser sysUser = userService.getById(user.getId());
      if(StringUtils.isNotBlank(sysUser.getAreaId())){
         stream.setAreaId(sysUser.getAreaId());
      }
      QueryWrapper<Stream> queryWrapper = QueryGenerator.initQueryWrapper(stream, req.getParameterMap());
      Page<Stream> page = new Page<Stream>(pageNo, pageSize);
      IPage<Stream> pageList = streamService.page(page, queryWrapper);
      IPage<Stream> pageList = streamService.myPage(page, stream);
      return Result.OK(pageList);
   }
@@ -136,6 +155,22 @@
      streamService.save(stream);
       List<ABCAssessment> abcAssessmentList = stream.getAssessmentList();
       for(ABCAssessment abcAssessment:abcAssessmentList){
          Equipment equipment = equipmentService.getById(abcAssessment.getEquipmentId());
          boolean isD = "D".equals(abcAssessment.getFinalStandard());
          boolean a = StringUtils.isNotBlank(equipment.getStandardA())&&StringUtils.isNotBlank(abcAssessment.getStandardA())&&equipment.getStandardA().equals(abcAssessment.getStandardA());
         boolean b = StringUtils.isNotBlank(equipment.getStandardB())&&StringUtils.isNotBlank(abcAssessment.getStandardB())&&equipment.getStandardB().equals(abcAssessment.getStandardB());
         boolean c = StringUtils.isNotBlank(equipment.getStandardC())&&StringUtils.isNotBlank(abcAssessment.getStandardC())&&equipment.getStandardC().equals(abcAssessment.getStandardC());
         boolean d = StringUtils.isNotBlank(equipment.getStandardD())&&StringUtils.isNotBlank(abcAssessment.getStandardD())&&equipment.getStandardD().equals(abcAssessment.getStandardD());
         boolean e = StringUtils.isNotBlank(equipment.getStandardE())&&StringUtils.isNotBlank(abcAssessment.getStandardE())&&equipment.getStandardE().equals(abcAssessment.getStandardE());
         boolean f = StringUtils.isNotBlank(equipment.getStandardF())&&StringUtils.isNotBlank(abcAssessment.getStandardF())&&equipment.getStandardF().equals(abcAssessment.getStandardF());
          if(isD&&a&&b&&c&&d&&e&&f){
             abcAssessment.setStandardA(null);
            abcAssessment.setStandardB(null);
            abcAssessment.setStandardC(null);
            abcAssessment.setStandardD(null);
            abcAssessment.setStandardE(null);
            abcAssessment.setStandardF(null);
         }
          abcAssessment.setStreamId(stream.getId());
      }
       aBCAssessmentService.saveBatch(abcAssessmentList);
@@ -577,12 +612,81 @@
          List<SysDictItem> nodes = sysDictItemService.selectItemsByMainId(streamNode.getId());
          if(buttonVo.getNodeSort()+1==nodes.size()){
             List<ABCAssessment> abcAssessments = aBCAssessmentService.selectByMainId(buttonVo.getStreamId());
            EquipmentMaintenancePlan plan = new EquipmentMaintenancePlan();
            UUID uuid = UUID.randomUUID();
            long mostSignificantBits = uuid.getMostSignificantBits();
            long leastSignificantBits = uuid.getLeastSignificantBits();
            // 将最高位和最低位取出,然后合并为一个long类型的值
            long combinedBits = mostSignificantBits ^ leastSignificantBits;
            // 将合并后的long值转换为16进制字符串
            String hexString = Long.toHexString(combinedBits);
            String planNum = sysIdentityService.getNumByTypeAndLength("MaintenancePlan",4);
            plan.setId(hexString);
            plan.setNum(planNum);
            plan.setType("3");
            plan.setStatus("created");
                plan.setCreateReason("因ABC标识从B或C变更为A而导致下次三保时间过期,就这些设备生成的临时保养计划");
            List<EquipmentMaintenancePlanDetail> details = new ArrayList<>();
             for(ABCAssessment abcAssessment:abcAssessments){
               Equipment equipment = equipmentService.getById(abcAssessment.getEquipmentId());
               String oldStandard = abcAssessment.getOldStandard();
               String newStandard = abcAssessment.getFinalStandard();
               LocalDate currentDate = LocalDate.now();
               // 将当前日期加一天
               LocalDate nextDay = currentDate.plusDays(1);
               LocalDate nextMonth = currentDate.plusMonths(1);
               // 将LocalDate转换为Date
               Date currentDateAsDate = Date.from(currentDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
               Date nextDayAsDate =Date.from(nextDay.atStartOfDay(ZoneId.systemDefault()).toInstant());
               Date nextMonthAsDate = Date.from(nextMonth.atStartOfDay(ZoneId.systemDefault()).toInstant());
               Date needingDate = equipment.getNextThirdMaintenanceTime();
               Boolean a = StringUtils.isNotBlank(oldStandard)&&(oldStandard.equals("B")||oldStandard.equals("C"));
               Boolean b = StringUtils.isNotBlank(newStandard)&&newStandard.equals("A");;
               Boolean c = ObjectUtils.isNotNull(needingDate)&&needingDate.compareTo(currentDateAsDate)<0;
               if(a&&b&&c){
                  EquipmentMaintenancePlanDetail equipmentMaintenancePlanDetail = new EquipmentMaintenancePlanDetail();
                  equipmentMaintenancePlanDetail.setPlanId(hexString);
                  equipmentMaintenancePlanDetail.setEquipmentId(equipment.getId());
                  equipmentMaintenancePlanDetail.setPlanStartTime(nextDayAsDate);
                  equipmentMaintenancePlanDetail.setPlanEndTime(nextMonthAsDate);
                  MaintenanceStandard maintenanceStandard = maintenanceStandardService.getOne(new QueryWrapper<MaintenanceStandard>()
                        .eq("equipment_id",equipment.getId())
                        .eq("maintenance_type","3")
                        .eq("version_status","2")
                        .eq("del_flag",0),false);
                  if(ObjectUtils.isNotNull(maintenanceStandard)){
                     equipmentMaintenancePlanDetail.setStandardId(maintenanceStandard.getId());
                     details.add(equipmentMaintenancePlanDetail);
                  }
               }
               equipment.setEquipmentImportanceId(abcAssessment.getFinalStandard());
               equipment.setStandardA(abcAssessment.getStandardA());
               equipment.setStandardB(abcAssessment.getStandardB());
               equipment.setStandardC(abcAssessment.getStandardC());
               equipment.setStandardD(abcAssessment.getStandardD());
               equipment.setStandardE(abcAssessment.getStandardE());
               equipment.setStandardF(abcAssessment.getStandardF());
               equipmentService.updateById(equipment);
               EquipmentUpdateInfo equipmentUpdateInfo = new EquipmentUpdateInfo();
               equipmentUpdateInfo.setOldAbcTag(oldStandard);
               equipmentUpdateInfo.setNewAbcTag(newStandard);
               equipmentUpdateInfo.setEquipmentId(equipment.getId());
               equipmentUpdateInfo.setUpdatePerson(user.getId());
               equipmentUpdateInfo.setUpdateType("ABC");
               equipmentUpdateInfo.setUpdateDate(currentDateAsDate);
               updateInfoService.save(equipmentUpdateInfo);
            }
             if(details.size()>0){
                planService.save(plan);
                planDetailService.saveBatch(details);
            }
         }
         SysDictItem nextStreamNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",streamNode.getId()).eq("sort_order",buttonVo.getNodeSort()+1),false);
         return getResult(buttonVo, user, streamOperations, nextStreamNodeItem);
      }