Houjie
2025-06-10 be8a6f171bd41aa50fb7310b2ccbe753dac20b89
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/MaintenanceStandardController.java
@@ -13,6 +13,7 @@
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
@@ -23,6 +24,8 @@
import org.jeecg.modules.eam.entity.*;
import org.jeecg.modules.eam.model.MaintenanceCycleVo;
import org.jeecg.modules.eam.service.*;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.service.*;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
@@ -32,6 +35,7 @@
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@@ -96,6 +100,16 @@
//    private IUploadService uploadService;
    @Autowired
    private ISysBaseAPI sysBaseApi;
    @Autowired
    private ISysUserService sysUserService;
    @Resource
    private ISysRoleService sysRoleService;
    @Resource
    private ISysDictService sysDictService;
    @Resource
    private ISysDictItemService sysDictItemService;
    @Resource
    private ISysUserRoleService sysUserRoleService;
    /**
     * 分页列表查询
@@ -185,8 +199,21 @@
        maintenanceStandard.setAssignMode("1");
        maintenanceStandardService.save(maintenanceStandard);
        Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
        List<MaintenanceCycleVo> maintenanceCycle = maintenanceStandardService.getPeriodicMaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
        List<MaintenanceCycleVo> maintenanceCycle = null;
        if("2".equals(maintenanceType)){
            maintenanceCycle = maintenanceStandardService.getPeriodic2MaintenanceCycle(maintenanceStandard.getMaintenanceType());
            if(maintenanceCycle.size()==0){
                return Result.error("没有找到的二保保养周期,请先维护保养周期!");
            }
        }else{
            Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
            maintenanceCycle = maintenanceStandardService.getPeriodic3MaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
            if(maintenanceCycle.size()==0){
                return Result.error("没有找到的三保保养周期,请先维护保养周期!");
            }
        }
        List<MaintenanceStandardDetail> maintenanceStandardDetaillist = maintenanceStandard.getMaintenanceStandardDetaillist();
        for (MaintenanceStandardDetail maintenanceStandardDetail : maintenanceStandardDetaillist) {
            if(maintenanceCycle.size() > 0){
@@ -195,6 +222,11 @@
            maintenanceStandardDetail.setMaintenanceStandardId(maintenanceStandard.getId());
            maintenanceStandardDetail.setPhoto(maintenanceStandardDetail.getPhoto());
            maintenanceStandardDetailService.saveOrUpdate(maintenanceStandardDetail);
        }
        if("2".equals(maintenanceType)){
            this.maintenance2StandardAlert(maintenanceStandard.getApprovalStatus(),maintenanceStandard.getNum());
        }else{
            this.maintenance3StandardAlert(maintenanceStandard.getApprovalStatus(),maintenanceStandard.getNum());
        }
        return Result.OK("添加成功!");
    }
@@ -219,8 +251,27 @@
            maintenanceStandardDetailService.updateById(dailyInspectionStandardDetail);
        }
        //2.重新持久保养项目
        Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
        List<MaintenanceCycleVo> maintenanceCycle = maintenanceStandardService.getPeriodicMaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
//        Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
//        List<MaintenanceCycleVo> maintenanceCycle = maintenanceStandardService.getPeriodicMaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
        List<MaintenanceCycleVo> maintenanceCycle = null;
        if("2".equals(maintenanceStandard.getMaintenanceType())){
            maintenanceCycle = maintenanceStandardService.getPeriodic2MaintenanceCycle(maintenanceStandard.getMaintenanceType());
            if(maintenanceCycle.size()==0){
                return Result.error("没有找到的二保保养周期,请先维护保养周期!");
            }
        }else{
            Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
            maintenanceCycle = maintenanceStandardService.getPeriodic3MaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
            if(maintenanceCycle.size()==0){
                return Result.error("没有找到的三保保养周期,请先维护保养周期!");
            }
        }
        if(maintenanceCycle.size()==0){
            return Result.OK("没有找到的保养周期,请先维护保养周期!");
        }
        List<MaintenanceStandardDetail> maintenanceStandardDetails = maintenanceStandard.getMaintenanceStandardDetaillist();
        for (MaintenanceStandardDetail maintenanceStandardDetail : maintenanceStandardDetails) {
            if(maintenanceCycle.size() > 0){
@@ -228,6 +279,11 @@
            }
            maintenanceStandardDetail.setMaintenanceStandardId(maintenanceStandard.getId());
            maintenanceStandardDetailService.saveOrUpdate(maintenanceStandardDetail);
        }
        if("2".equals(maintenanceStandard.getMaintenanceType())){
            this.maintenance2StandardAlert(maintenanceStandard.getApprovalStatus(),maintenanceStandard.getNum());
        }else{
            this.maintenance3StandardAlert(maintenanceStandard.getApprovalStatus(),maintenanceStandard.getNum());
        }
        return Result.OK("编辑成功!");
    }
@@ -312,6 +368,7 @@
        LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        String exceptionInfo = "";
        String msgInfo = "";
        int exceptionNum = 0;
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            MultipartFile file = entity.getValue();
@@ -351,10 +408,12 @@
                                            maintenanceStandardService.save(maintenanceStandard);
                                        }
                                        else {
                                            msgInfo += equipment.getNum()+ ",";
                                            continue;
                                        }
                                    }
                                    else {
                                        continue;
                                    }
                                }
@@ -451,6 +510,7 @@
                                            maintenanceStandardService.save(maintenanceStandard);
                                        }
                                        else {
                                            msgInfo += equipment.getNum()+ ",";
                                            continue;
                                        }
                                    }
@@ -503,7 +563,11 @@
                            }
                        }
                    }
                    return Result.OK("导入成功");
                    if(msgInfo == ""){
                        return Result.OK("导入成功");
                    }else{
                        return Result.OK("统一编码是:"+msgInfo+"的保养标准已存在,请先手动失效再重新导入!");
                    }
                } else {
                    System.out.println("无法解析该文件");
                }
@@ -584,8 +648,23 @@
        //明细信息
        List<MaintenanceStandardDetail> maintenanceStandardDetailList = maintenanceStandard.getMaintenanceStandardDetaillist();
        MaintenanceStandardDetail isd = null;
        Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
        List<MaintenanceCycleVo> maintenanceCycle = maintenanceStandardService.getPeriodicMaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
//        Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
        List<MaintenanceCycleVo> maintenanceCycle = null;
        if("2".equals(maintenanceStandard.getMaintenanceType())){
            maintenanceCycle = maintenanceStandardService.getPeriodic2MaintenanceCycle(maintenanceStandard.getMaintenanceType());
            if(maintenanceCycle.size()==0){
                return Result.error("没有找到的二保保养周期,请先维护保养周期!");
            }
        }else{
            Equipment equipment = equipmentService.getById(maintenanceStandard.getEquipmentId());
            maintenanceCycle = maintenanceStandardService.getPeriodic3MaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
            if(maintenanceCycle.size()==0){
                return Result.error("没有找到的三保保养周期,请先维护保养周期!");
            }
        }
//        List<MaintenanceCycleVo> maintenanceCycle = maintenanceStandardService.getPeriodicMaintenanceCycle(equipment.getEquipmentImportanceId(), maintenanceStandard.getMaintenanceType());
        for (MaintenanceStandardDetail maintenanceStandardDetail : maintenanceStandardDetailList) {
            isd = new MaintenanceStandardDetail();
            isd.setMaintenanceStandardId(maintenanceStandard.getId());
@@ -595,6 +674,7 @@
//            isd.setMaintenanceCycleId(maintenanceStandardDetail.getMaintenanceCycleId());
            isd.setMaintenanceMode(maintenanceStandardDetail.getMaintenanceMode());
            isd.setMaintenanceRequire(maintenanceStandardDetail.getMaintenanceRequire());
            isd.setMaintenanceRole(maintenanceStandardDetail.getMaintenanceRole());
            if(maintenanceCycle.size() > 0){
                isd.setMaintenanceCycleId(maintenanceCycle.get(0).getValue());
            }
@@ -695,6 +775,16 @@
                dailyMaintenanceStandard.setLoseEfficacyPerson(sysUser.getRealname());
                maintenanceStandardService.updateById(dailyMaintenanceStandard);
            }
            List<MaintenanceStandard> standards = maintenanceStandardService.lambdaQuery()
                    .eq(MaintenanceStandard::getEquipmentId, maintenanceStandard.getEquipmentId())
                    .eq(MaintenanceStandard::getVersionStatus, "2").list();
            for (MaintenanceStandard standard : standards) {
                standard.setVersionStatus("3");
                standard.setLoseEfficacyTime(new Date());
                standard.setLoseEfficacyPerson(sysUser.getRealname());
                maintenanceStandardService.updateById(standard);
            }
            maintenanceStandard.setApprovalPerson(sysUser.getRealname());
            maintenanceStandard.setVersionStatus("2");
            maintenanceStandard.setTakeEffectTime(new Date());
@@ -703,11 +793,133 @@
        }
        boolean b = maintenanceStandardService.updateById(maintenanceStandard);
        if (b){
            //签审流程消息通知
            if(!"5".equals(approvalStatus)){//已编制
                if("2".equals(maintenanceStandard.getMaintenanceType())){
                    this.maintenance2StandardAlert(approvalStatus,maintenanceStandard.getNum());
                }else{
                    this.maintenance3StandardAlert(approvalStatus,maintenanceStandard.getNum());
                }
            }
            return Result.OK("审核成功!");
        }else{
            return Result.error("审核失败!");
        }
    }
    /**
     *二级保养标准签审流程消息提醒
     * qsw 2024-3-11
     */
    void maintenance2StandardAlert(String approvalStatus,String standardNum){
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        SysDict sysDict = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","info_type"),false);
        SysDictItem sysDictItem = null;
        String roleDictItem = "";
        if("1".equals(approvalStatus)){//已编制
            roleDictItem = "二级保养标准审核";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","二级保养标准审核")
                    .eq("dict_id",sysDict.getId()),false);
        }else if("2".equals(approvalStatus)){//驳回编制
            roleDictItem = "二级保养标准编制";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","二级保养标准编制")
                    .eq("dict_id",sysDict.getId()),false);
        }else if("3".equals(approvalStatus)){//已审核
            roleDictItem = "二级保养标准审批";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","二级保养标准审批")
                    .eq("dict_id",sysDict.getId()),false);
        }else if("4".equals(approvalStatus)){//驳回审核
            roleDictItem = "二级保养标准审核";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","二级保养标准审核")
                    .eq("dict_id",sysDict.getId()),false);
        }
        String roleCode = sysDictItem.getItemValue();
        SysRole sysRole = sysRoleService.getOne(new QueryWrapper<SysRole>().eq("role_code",roleCode),false);
        List<SysUserRole> sysUserRoles = sysUserRoleService.list(new QueryWrapper<SysUserRole>().eq("role_id",sysRole.getId()));
        for(SysUserRole sysUserRole:sysUserRoles){
            SysUser user = sysUserService.getById(sysUserRole.getUserId());
            String msg = "";
            if("1".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的二级保养标准编制成功,请到二级保养标准页面审核!";
            }else if("2".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的二级保养标准已驳回,请到二级保养标准页面查看!";
            }else if("3".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的二级保养标准审核通过,请到二级保养标准页面审批!";
            }else if("4".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的二级保养标准已驳回,请到二级保养标准页面查看!";
            }
            MessageDTO messageDTO = new MessageDTO();
            messageDTO.setTitle("二级保养标准签审消息提醒!");
            messageDTO.setContent(msg);
            messageDTO.setCategory(roleDictItem);
            messageDTO.setFromUser("二级保养标准签审消息提醒提醒小助手");
            messageDTO.setToUser(user.getUsername());
            sysBaseApi.sendSysAnnouncement(messageDTO);
        }
    }
    /**
     *三级保养标准签审流程消息提醒
     * qsw 2024-3-11
     */
    void maintenance3StandardAlert(String approvalStatus,String standardNum){
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        SysDict sysDict = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","info_type"),false);
        SysDictItem sysDictItem = null;
        String roleDictItem = "";
        if("1".equals(approvalStatus)){//已编制
            roleDictItem = "三级保养标准审核";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","三级保养标准审核")
                    .eq("dict_id",sysDict.getId()),false);
        }else if("2".equals(approvalStatus)){//驳回编制
            roleDictItem = "三级保养标准编制";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","三级保养标准编制")
                    .eq("dict_id",sysDict.getId()),false);
        }else if("3".equals(approvalStatus)){//已审核
            roleDictItem = "三级保养标准审批";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","三级保养标准审批")
                    .eq("dict_id",sysDict.getId()),false);
        }else if("4".equals(approvalStatus)){//驳回审核
            roleDictItem = "三级保养标准审核";
            sysDictItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>()
                    .eq("item_text","三级保养标准审核")
                    .eq("dict_id",sysDict.getId()),false);
        }
        String roleCode = sysDictItem.getItemValue();
        SysRole sysRole = sysRoleService.getOne(new QueryWrapper<SysRole>().eq("role_code",roleCode),false);
        List<SysUserRole> sysUserRoles = sysUserRoleService.list(new QueryWrapper<SysUserRole>().eq("role_id",sysRole.getId()));
        for(SysUserRole sysUserRole:sysUserRoles){
            SysUser user = sysUserService.getById(sysUserRole.getUserId());
            String msg = "";
            if("1".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的三级保养标准编制成功,请到三级保养标准页面审核!";
            }else if("2".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的三级保养标准已驳回,请到三级保养标准页面查看!";
            }else if("3".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的三级保养标准审核通过,请到三级保养标准页面审批!";
            }else if("4".equals(approvalStatus)){
                msg = "【"+sysUser.getRealname()+"】"+"将【"+standardNum+"】的三级保养标准已驳回,请到三级保养标准页面查看!";
            }
            MessageDTO messageDTO = new MessageDTO();
            messageDTO.setTitle("三级保养标准签审消息提醒!");
            messageDTO.setContent(msg);
            messageDTO.setCategory(roleDictItem);
            messageDTO.setFromUser("三级保养标准签审消息提醒提醒小助手");
            messageDTO.setToUser(user.getUsername());
            sysBaseApi.sendSysAnnouncement(messageDTO);
        }
    }
    // 获取合并单元格的值
    private  String getMergedCellValue(XWPFTableCell cell) {
        // 对于合并单元格,获取第一个段落的文本作为合并单元格的值