lyh
2025-06-27 218ab860ed4708f6f70a519775c56c9554000fe7
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EquipmentReportRepairController.java
@@ -1,6 +1,7 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
@@ -8,6 +9,7 @@
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.api.vo.Result;
@@ -17,17 +19,26 @@
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.entity.*;
import org.jeecg.modules.eam.mapper.RepairOrderMapper;
import org.jeecg.modules.eam.service.*;
import org.jeecg.modules.eam.vo.RepairReportExportVo;
import org.jeecg.modules.system.entity.SysUser;
import org.jeecg.modules.system.service.ISysUserService;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -61,6 +72,13 @@
    private IdentityService sysIdentityService;
    @Autowired
    private IFaultInfoService faultInfoService;
    @Value("${jeecg.path.upload}")
    private String upLoadPath;
    @Autowired
    private IRepairOrderService repairOrderService;
    @Autowired
    private RepairOrderMapper repairOrderMapper;
    /**
@@ -106,9 +124,9 @@
        LoginUser curUser= (LoginUser) SecurityUtils.getSubject().getPrincipal();
        equipmentReportRepair.setStatus("1");
        equipmentReportRepair.setSource("1");
        equipmentReportRepair.setType("1");
        equipmentReportRepair.setIsCreateOrder(0);
        equipmentReportRepairService.save(equipmentReportRepair);
        Equipment equipment = equipmentService.getById(equipmentReportRepair.getEquipmentId());
        String IS_PRODUCT_YES = "yes";
        if(IS_PRODUCT_YES.equals(equipmentReportRepair.getErrUda1())){
            String num = sysIdentityService.getNumByTypeAndLength("QuanlityConfirm",4);
@@ -122,21 +140,31 @@
            quanlityConfirm.setQuantity(equipmentReportRepair.getQuantity());
            quanlityConfirm.setOperator(curUser.getId());
            quanlityConfirmService.save(quanlityConfirm);
            MessageDTO qMessageDTO = new MessageDTO();
            qMessageDTO.setTitle("质量隐患确认提醒");
            qMessageDTO.setContent("统一编号为【"+equipment.getNum()+"】的设备需要进行质量隐患确认,请移步至质量隐患确认进行确认!单据号【"+num+"】");
            qMessageDTO.setCategory("质量隐患确认");
            qMessageDTO.setFromUser("质量隐患确认提醒小助手");
            qMessageDTO.setToUser(curUser.getUsername());
            sysBaseApi.sendSysAnnouncement(qMessageDTO);
            String fNum = sysIdentityService.getNumByTypeAndLength("FaultInfo",4);
            FaultInfo faultInfo = new FaultInfo();
            faultInfo.setNum(fNum);
            faultInfo.setQuanlityId(quanlityConfirm.getId());
            faultInfo.setOperater(quanlityConfirm.getOperator());
            faultInfo.setIsConfirm(IS_PRODUCT_NO);
            String eId = equipmentReportRepair.getEquipmentId();
            Equipment equipment = equipmentService.getById(eId);
            faultInfo.setEquipModel(equipment.getModel());
            faultInfo.setEquipName(equipment.getName());
            faultInfo.setEquipNum(equipment.getNum());
            faultInfoService.save(faultInfo);
            MessageDTO fMessageDTO = new MessageDTO();
            fMessageDTO.setTitle("设备事故登记提醒");
            fMessageDTO.setContent("统一编号为【"+equipment.getNum()+"】的设备需要进行事故登记,请移步至设备事故登记表完成确认!单据号【"+fNum+"】");
            fMessageDTO.setCategory("设备事故登记确认");
            fMessageDTO.setFromUser("设备事故登记提醒小助手");
            fMessageDTO.setToUser(curUser.getUsername());
            sysBaseApi.sendSysAnnouncement(fMessageDTO);
        }
        Equipment equipment = equipmentService.getById(equipmentReportRepair.getEquipmentId());
        equipment.setEquipmentStatus("2");
        String teamId = equipment.getTeamId();
        if(ObjectUtils.isNotNull(teamId)){
@@ -257,42 +285,87 @@
    }
    @PutMapping("/accept")
    @Transactional(rollbackFor = Exception.class)
    public Result<?> accept(@RequestBody EquipmentReportRepair equipmentReportRepair ){
        if(equipmentReportRepair.getErrUda1().equals("yes")){
            QuanlityConfirm quanlityConfirm = quanlityConfirmService.getOne(new QueryWrapper<QuanlityConfirm>().eq("report_id",equipmentReportRepair.getId()),false);
            if(ObjectUtils.isNotNull(quanlityConfirm)){
                String isConfirm1 = quanlityConfirm.getIsConfirm();
                FaultInfo faultInfo = faultInfoService.getOne(new QueryWrapper<FaultInfo>().eq("quanlity_id",quanlityConfirm.getId()),false);
                if(ObjectUtils.isNotNull(faultInfo)){
                    String isConfirm2 = faultInfo.getIsConfirm();
                    if(!isConfirm1.equals("yes")||!isConfirm2.equals("yes")){
                        return Result.error("验收失败,产品质量隐患确认和事故登记尚未完成,请完成确认后再进行验收");
        if(equipmentReportRepair.getErrUda4().equals("1")){
            if(equipmentReportRepair.getErrUda1().equals("yes")){
                QuanlityConfirm quanlityConfirm = quanlityConfirmService.getOne(new QueryWrapper<QuanlityConfirm>().eq("report_id",equipmentReportRepair.getId()),false);
                if(ObjectUtils.isNotNull(quanlityConfirm)){
                    String isConfirm1 = quanlityConfirm.getIsConfirm();
                    FaultInfo faultInfo = faultInfoService.getOne(new QueryWrapper<FaultInfo>().eq("quanlity_id",quanlityConfirm.getId()),false);
                    if(ObjectUtils.isNotNull(faultInfo)){
                        String isConfirm2 = faultInfo.getIsConfirm();
                        if(!isConfirm1.equals("yes")||!isConfirm2.equals("yes")){
                            return Result.error("验收失败,产品质量隐患确认和事故登记尚未完成,请完成确认后再进行验收");
                        }
                    }else {
                        return Result.error("验收失败,未生成事故登记单");
                    }
                }else {
                    return Result.error("验收失败,未生成事故登记单");
                    return Result.error("验收失败,未生成产品质量确认");
                }
            }else {
                return Result.error("验收失败,未生成产品质量确认");
            }
            LoginUser user= (LoginUser)SecurityUtils.getSubject().getPrincipal();
            equipmentReportRepair.setStatus("5");
            equipmentReportRepair.setAcceptTime(new Date());
            Date start = equipmentReportRepair.getFaultTime();
            Date end = equipmentReportRepair.getAcceptTime();
            if(ObjectUtils.isNotNull(start)){
                long timeDifference =end.getTime() - start.getTime();
                BigDecimal hours = new BigDecimal(timeDifference)
                        .divide(new BigDecimal(60 * 60 * 1000), 3, BigDecimal.ROUND_HALF_EVEN);
                equipmentReportRepair.setFaultHour(hours);
            }
            equipmentReportRepairService.updateById(equipmentReportRepair);
            String equipmentId = equipmentReportRepair.getEquipmentId();
            if(StringUtils.isNotBlank(equipmentId)){
                Equipment equipment = equipmentService.getById(equipmentId);
                equipment.setEquipmentStatus("1");
                equipmentService.updateById(equipment);
            }
            return Result.OK("验收成功");
        }else {
            equipmentReportRepair.setStatus("2");
            equipmentReportRepairService.updateById(equipmentReportRepair);
            RepairOrder repairOrder = repairOrderService.getOne(new QueryWrapper<RepairOrder>().eq("report_repair_id",equipmentReportRepair.getId()),false);
            if(ObjectUtils.isNotNull(repairOrder)){
                repairOrderMapper.updateRepair(repairOrder.getId());
//                repairOrder.setStatus("3");
//                repairOrder.setActualEndTime(null);
//                repairOrderService.updateById(repairOrder);
            }
            return Result.OK("已驳回");
        }
        LoginUser user= (LoginUser)SecurityUtils.getSubject().getPrincipal();
        equipmentReportRepair.setStatus("5");
        equipmentReportRepair.setAcceptTime(new Date());
        Date start = equipmentReportRepair.getFaultTime();
        Date end = equipmentReportRepair.getAcceptTime();
        if(ObjectUtils.isNotNull(start)){
            long timeDifference =end.getTime() - start.getTime();
            BigDecimal hours = new BigDecimal(timeDifference)
                    .divide(new BigDecimal(60 * 60 * 1000), 3, BigDecimal.ROUND_HALF_EVEN);
            equipmentReportRepair.setFaultHour(hours);
        }
        equipmentReportRepairService.updateById(equipmentReportRepair);
        String equipmentId = equipmentReportRepair.getEquipmentId();
        if(StringUtils.isNotBlank(equipmentId)){
            Equipment equipment = equipmentService.getById(equipmentId);
            equipment.setEquipmentStatus("1");
            equipmentService.updateById(equipment);
        }
        return Result.OK("验收成功");
    }
    /**
     * 导出excel
     *
     * @param request
     * @param equipmentReportRepair
     */
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, RepairReportExportVo equipmentReportRepair) {
        // Step.1 组装查询条件
        String title = "故障报修导出";
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        // Step.2 获取导出数据
        List<RepairReportExportVo> exportList = equipmentReportRepairService.exportList(equipmentReportRepair);
        // Step.3 AutoPoi 导出Excel
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        //此处设置的filename无效 ,前端会重更新设置一下
        mv.addObject(NormalExcelConstants.FILE_NAME, title);
        mv.addObject(NormalExcelConstants.CLASS, RepairReportExportVo.class);
        //update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
        ExportParams exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
        exportParams.setImageBasePath(upLoadPath);
        //update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
        mv.addObject(NormalExcelConstants.PARAMS,exportParams);
        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
        return mv;
    }
}