lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/dto/EamRepairOrderExport.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,188 @@ package org.jeecg.modules.eam.dto; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; 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.aspect.annotation.Dict; 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; /** * @Description: 维修工å * @Author: Lius * @Date: 2025-04-03 */ @Data @TableName("eam_repair_order") @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @ApiModel(value = "eam_repair_order对象", description = "维修工å导åº") public class EamRepairOrderExport { /**主é®*/ @TableId(type = IdType.ASSIGN_ID) @ApiModelProperty(value = "主é®") private String id; /** æ¥ä¿®ID*/ @ApiModelProperty(value = "æ¥ä¿®ID") private String reportId; /**设å¤åç§°*/ @ApiModelProperty(value = "设å¤ID") @Dict(dictTable = "eam_equipment", dicCode = "id", dicText = "equipment_name") private String equipmentId; /** * 设å¤ç¼ç */ @Excel(name = "ç»ä¸ç¼ç ", width = 15) @TableField(exist = false) @ApiModelProperty(value = "ç»ä¸ç¼ç ") private String equipmentCode; /** * 设å¤åç§° */ @Excel(name = "设å¤åç§°", width = 15) @TableField(exist = false) @ApiModelProperty(value = "设å¤åç§°") private String equipmentName; /** * 设å¤åå· */ @Excel(name = "设å¤åå·", width = 15) @TableField(exist = false) @ApiModelProperty(value = "设å¤åå·") private String equipmentModel; /**ç»´ä¿®ç¶æ*/ @Excel(name = "ç»´ä¿®ç¶æ", width = 15,dicCode = "repair_status") @ApiModelProperty(name = "ç»´ä¿®ç¶æ",notes = "å¾ ç»´ä¿®ãç»´ä¿®ä¸ãå¾ ç¡®è®¤ãç»´ä¿®å®æ") @Dict(dicCode = "repair_status") private String repairStatus; /**é¢åç¶æ*/ @Excel(name = "é¢åç¶æ", width = 15,dicCode = "claim_status") @ApiModelProperty(name = "é¢åç¶æ",notes = "æªé¢åãå·²é¢å") @Dict(dicCode = "claim_status") private String claimStatus; /** * å·¥åç¼å· */ @Excel(name = "å·¥åç¼å·", width = 15) @ApiModelProperty(value = "å·¥åç¼å·") private String repairCode; /**æ éç±»å*/ @Excel(name = "æ éç±»å", width = 15,dicCode = "fault_type") @ApiModelProperty(value = "æ éç±»å") @Dict(dicCode = "fault_type") private String faultType; /**æ¥ä¿®äºº*/ @Excel(name = "æ¥ä¿®äºº", width = 15,dictTable = "sys_user", dicCode = "username", dicText = "realname") @ApiModelProperty(value = "æ¥ä¿®äºº") @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String reportPerson; /** ç»´ä¿®å¼å§æ¶é´ */ @Excel(name = "ç»´ä¿®å¼å§æ¶é´", width = 15,format = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(name = "ç»´ä¿®å¼å§æ¶é´",notes = "") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date actualStartTime; /** ç»´ä¿®ç»ææ¶é´ */ @Excel(name = "ç»´ä¿®ç»ææ¶é´", width = 15,format = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(name = "ç»´ä¿®ç»ææ¶é´",notes = "") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date actualEndTime; /** ç»´ä¿®æ¶é¿*/ @Excel(name = "ç»´ä¿®æ¶é¿", width = 15) @ApiModelProperty(name = "ç»´ä¿®æ¶é¿",notes = "") private String repairDuration; /**æ éæ¶é¿*/ @Excel(name = "æ éæ¶é¿", width = 15) @ApiModelProperty(name = "æ éæ¶é¿",notes = "") private String faultDuration; /** 维修确认 */ @Excel(name = "维修确认", width = 15,dictTable = "sys_user", dicCode = "username", dicText = "realname") @ApiModelProperty(name = "维修确认",notes = "") @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String repairConfirm; /** 维修确认æè§ */ @Excel(name = "维修确认æè§", width = 15) @ApiModelProperty(name = "维修确认æè§",notes = "") private String repairConfirmComment; /** 维修确认æ¶é´ */ @Excel(name = "维修确认æ¶é´", width = 15,format = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(name = "维修确认æ¶é´",notes = "") private Date repairConfirmTime; /**æ éç°è±¡*/ @Excel(name = "æ éç°è±¡", width = 15) @ApiModelProperty(value = "æ éç°è±¡") private String faultPhenomenon; /** æ éåå */ @Excel(name = "æ éåå ", width = 15) @ApiModelProperty(name = "æ éåå ",notes = "") private String faultReason; /** æ éåæ */ @Excel(name = "æ éåæ", width = 15) @ApiModelProperty(name = "æ éåæ",notes = "") private String faultAnalysis; /** ææ è¿ç¨ */ @Excel(name = "ææ è¿ç¨", width = 15) @ApiModelProperty(name = "ææ è¿ç¨",notes = "") private String faultProcess; /** é¢é²æªæ½ */ @Excel(name = "é¢é²æªæ½", width = 15) @ApiModelProperty(name = "é¢é²æªæ½",notes = "") private String faultPrevent; /** æä½å·¥ */ @Excel(name = "æä½å·¥", width = 15,dictTable = "sys_user", dicCode = "username", dicText = "realname") @ApiModelProperty(name = "æä½å·¥",notes = "") @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String confirmer; /** æä½å·¥ç¡®è®¤ç»æ*/ @Excel(name = "æä½å·¥ç¡®è®¤ç»æ", width = 15) @ApiModelProperty(name = "æä½å·¥ç¡®è®¤ç»æ",notes = "") private String confirmResult; /** æä½å·¥ç¡®è®¤æè§ */ @Excel(name = "æä½å·¥ç¡®è®¤æè§", width = 15) @ApiModelProperty(name = "æä½å·¥ç¡®è®¤æè§",notes = "") private String confirmComment; /** æä½å·¥ç¡®è®¤æ¶é´*/ @Excel(name = "æä½å·¥ç¡®è®¤æ¶é´", width = 15,format = "yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "æä½å·¥ç¡®è®¤æ¶é´") @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date confirmTime; @TableField(exist = false) private String installationPosition; } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -470,6 +470,18 @@ @TableField(exist = false) private String thirdMaintenanceGenerateFlag; /** * ä¿å »è§èåç§° */ @TableField(exist = false) private String maintenanceStandardName; /** * ä¿å »è§èId */ @TableField(exist = false) private String maintenanceStandardId; public void setFactoryOrgCode(String factoryOrgCode){ this.factoryOrgCode = factoryOrgCode; lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamRepairOrder.java
@@ -72,10 +72,14 @@ @ApiModelProperty(value = "设å¤ID") @Dict(dictTable = "eam_equipment", dicCode = "id", dicText = "equipment_name") private String equipmentId; /** ç»´ä¿®ç¶æ*/ /**ç»´ä¿®ç¶æ*/ @ApiModelProperty(name = "ç»´ä¿®ç¶æ",notes = "å¾ ç»´ä¿®ãç»´ä¿®ä¸ãå¾ ç¡®è®¤ãç»´ä¿®å®æ") @Dict(dicCode = "repair_status") private String repairStatus; /**é¢åç¶æ*/ @ApiModelProperty(name = "é¢åç¶æ",notes = "æªé¢åãå·²é¢å") @Dict(dicCode = "claim_status") private String claimStatus; /**æ éç±»å*/ @Excel(name = "æ éç±»å", width = 15) @ApiModelProperty(value = "æ éç±»å") @@ -100,6 +104,12 @@ @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date actualEndTime; /** ç»´ä¿®æ¶é¿*/ @ApiModelProperty(name = "ç»´ä¿®æ¶é¿",notes = "") private String repairDuration; /**æ éæ¶é¿*/ @ApiModelProperty(name = "æ éæ¶é¿",notes = "") private String faultDuration; /** 维修确认 */ @ApiModelProperty(name = "维修确认",notes = "") @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/EamRepairOrderMapper.java
@@ -5,6 +5,7 @@ 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.eam.dto.EamRepairOrderExport; import org.jeecg.modules.eam.entity.EamRepairOrder; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.jeecg.modules.eam.request.EamRepairOrderQuery; @@ -36,4 +37,11 @@ * @return */ IPage<EamRepairOrder> queryPageList(Page<EamRepairOrder> page, @Param(Constants.WRAPPER) QueryWrapper<EamRepairOrder> queryWrapper); /** * 导åºå表æ¥è¯¢ * @param queryWrapper * @return */ List<EamRepairOrderExport> queryExportList(@Param(Constants.WRAPPER) QueryWrapper<EamRepairOrderExport> queryWrapper); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamRepairOrderMapper.xml
@@ -52,4 +52,11 @@ on wmo.equipment_id = e.id ${ew.customSqlSegment} </select> <select id="queryExportList" resultType="org.jeecg.modules.eam.dto.EamRepairOrderExport"> select wmo.*, e.equipment_code, e.equipment_name,e.equipment_model, e.installation_position from eam_repair_order wmo inner join eam_equipment e on wmo.equipment_id = e.id ${ew.customSqlSegment} </select> </mapper> lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamRepairOrderService.java
@@ -4,12 +4,11 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import liquibase.pro.packaged.S; import org.jeecg.modules.eam.dto.EamRepairOrderDto; import org.jeecg.modules.eam.dto.EamRepairOrderExport; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamRepairOrder; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.request.EamRepairOrderQuery; import org.jeecg.modules.eam.request.EamRepairOrderRequest; import org.jeecg.modules.eam.request.EamRepairOrderResponse; import org.jeecg.modules.eam.request.EamReportRepairQuery; import org.jeecg.modules.eam.request.*; import java.util.List; @@ -54,4 +53,12 @@ EamRepairOrder perform(EamRepairOrderRequest request); EamRepairOrderResponse findById(String id); /** * 维修工åå¯¼åº * @param eamRepairOrderQuery * @return */ List<EamRepairOrderExport> exportList(EamRepairOrderQuery eamRepairOrderQuery); } lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamRepairOrderServiceImpl.java
@@ -19,6 +19,7 @@ import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog; import org.jeecg.modules.eam.constant.*; import org.jeecg.modules.eam.dto.EamRepairOrderDto; import org.jeecg.modules.eam.dto.EamRepairOrderExport; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamRepairOrder; import org.jeecg.modules.eam.entity.EamRepairPerson; @@ -36,6 +37,7 @@ import org.jeecg.modules.flowable.apithird.service.FlowCommonService; import org.jeecg.modules.flowable.service.IFlowDefinitionService; import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.flowable.util.TimeUtil; import org.jeecg.modules.system.entity.BaseFactory; import org.jeecg.modules.system.entity.BaseFactoryUser; import org.jeecg.modules.system.service.IBaseFactoryService; @@ -205,6 +207,18 @@ } BeanUtils.copyProperties(eamRepairOrderDto,eamRepairOrder); eamRepairOrder.setRepairStatus(EamRepairOrderRepairStatusEnum.UNDER_MAINTENANCE.name()); eamRepairOrder.setActualEndTime(new Date()); //计ç®ç»´ä¿®æ¶é´ä¸æ éæ¶é´ Date startTime; Date endTime; //ç»´ä¿®ç»ææ¶é´-ç»´ä¿®å¼å§æ¶é´=ç»´ä¿®æ¶é¿ startTime=eamRepairOrder.getActualStartTime(); endTime=eamRepairOrder.getActualEndTime(); eamRepairOrder.setRepairDuration(TimeUtil.howLong(startTime,endTime,2)); //ç»´ä¿®ç»ææ¶é´-æ éæ¥ä¿®æ¶é´=æ éæ¶é¿ startTime=eamRepairOrder.getCreateTime(); endTime=eamRepairOrder.getActualEndTime(); eamRepairOrder.setFaultDuration(TimeUtil.howLong(startTime,endTime,2)); this.updateById(eamRepairOrder); EamReportRepair eamReportRepair=eamReportRepairService.getById(eamRepairOrder.getReportId()); if (eamReportRepair==null){ @@ -237,12 +251,6 @@ } if (StrUtil.isEmpty(eamRepairOrder.getRepairCode())) { throw new RuntimeException("å·¥åç¼å·ä¸ºç©º"); } if (eamRepairOrder.getActualStartTime()==null){ throw new RuntimeException("ç»´ä¿®å¼å§æ¶é´ä¸ºç©º"); } if (eamRepairOrder.getActualEndTime()==null){ throw new RuntimeException("ç»´ä¿®ç»ææ¶é´ä¸ºç©º"); } if (StrUtil.isEmpty(eamRepairOrder.getFaultReason())){ throw new RuntimeException("æ éåå 为空"); @@ -371,6 +379,74 @@ return eamRepairOrderResponse; } /** * 维修工åå¯¼åº * @param eamRepairOrderQuery * @return */ @Override public List<EamRepairOrderExport> exportList(EamRepairOrderQuery eamRepairOrderQuery){ QueryWrapper<EamRepairOrderExport> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("wmo.del_flag", CommonConstant.DEL_FLAG_0); //ç¨æ·æ°æ®æé LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { return new ArrayList<>(); } if (StringUtils.isNotBlank(sysUser.getEamEquipmentIds())) { //éæ©äºè®¾å¤ï¼æ ¹æ®è®¾å¤idè¿æ»¤è®¾å¤ List<String> equipArr = Arrays.asList(sysUser.getEamEquipmentIds().split(",")); queryWrapper.in("e.equipment_code", equipArr); } else { //没æéæ©è®¾å¤ï¼æ ¹æ®ä¸å¿è¿æ»¤è®¾å¤ List<BaseFactoryUser> baseFactoryUserList = baseFactoryUserService. list(new LambdaQueryWrapper<BaseFactoryUser>().eq(BaseFactoryUser::getUserId, sysUser.getId())); if (!CollectionUtils.isEmpty(baseFactoryUserList)) { Set<String> factoryIds = baseFactoryUserList.stream().map(BaseFactoryUser::getFactoryId).collect(Collectors.toSet()); Set<String> factoryCode = baseFactoryService.listByIds(factoryIds).stream().map(BaseFactory::getOrgCode).collect(Collectors.toSet()); queryWrapper.in("e.factory_org_code", factoryCode); } else { return new ArrayList<>(); } } //æ¥è¯¢æ¡ä»¶è¿æ»¤ if (eamRepairOrderQuery != null) { if (StringUtils.isNotBlank(eamRepairOrderQuery.getEquipmentId())) { queryWrapper.eq("wmo.equipment_id", eamRepairOrderQuery.getEquipmentId()); } if (StringUtils.isNotBlank(eamRepairOrderQuery.getEquipmentCode())) { queryWrapper.like("e.equipment_code", eamRepairOrderQuery.getEquipmentCode()); } if (StringUtils.isNotBlank(eamRepairOrderQuery.getEquipmentName())) { queryWrapper.like("e.equipment_name", eamRepairOrderQuery.getEquipmentName()); } if (StringUtils.isNotBlank(eamRepairOrderQuery.getRepairStatus())) { queryWrapper.eq("wmo.repair_status", eamRepairOrderQuery.getRepairStatus()); } if (StringUtils.isNotBlank(eamRepairOrderQuery.getRepairCode())) { queryWrapper.like("wmo.repair_code", eamRepairOrderQuery.getRepairCode()); } //æåº if (StringUtils.isNotBlank(eamRepairOrderQuery.getColumn()) && StringUtils.isNotBlank(eamRepairOrderQuery.getOrder())) { String column = eamRepairOrderQuery.getColumn(); if (column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) { column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX)); } if (DataBaseConstant.SQL_ASC.equalsIgnoreCase(eamRepairOrderQuery.getOrder())) { queryWrapper.orderByAsc("wmo." + oConvertUtils.camelToUnderline(column)); } else { queryWrapper.orderByDesc("wmo." + oConvertUtils.camelToUnderline(column)); } } else { queryWrapper.orderByDesc("wmo.create_time"); } } else { queryWrapper.orderByDesc("wmo.create_time"); } return this.baseMapper.queryExportList(queryWrapper); } private boolean claimTask(String taskId, LoginUser user) { Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); if (task == null) { lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/vo/EamEquipmentTree.java
@@ -72,6 +72,15 @@ */ private String orgType; /** * ä¿å »è§èåç§° */ private String maintenanceStandardName; /** * ä¿å »è§èId */ private String maintenanceStandardId; private List<EamEquipmentTree> children = new ArrayList<>(); @@ -87,6 +96,8 @@ this.title = mdcEquipment.getEquipmentCode() + "/" + mdcEquipment.getEquipmentName(); this.equipmentId = mdcEquipment.getEquipmentCode(); this.equipmentName = mdcEquipment.getEquipmentName(); this.maintenanceStandardId=mdcEquipment.getMaintenanceStandardId(); this.maintenanceStandardName=mdcEquipment.getMaintenanceStandardName(); this.isLeaf = true; return this; } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamRepairOrderController.java
@@ -15,6 +15,7 @@ import org.jeecg.common.util.TranslateDictTextUtils; import org.jeecg.modules.eam.constant.BusinessCodeConst; import org.jeecg.modules.eam.dto.EamRepairOrderDto; import org.jeecg.modules.eam.dto.EamRepairOrderExport; import org.jeecg.modules.eam.entity.EamRepairOrder; import org.jeecg.modules.eam.request.EamRepairOrderQuery; import org.jeecg.modules.eam.request.EamRepairOrderRequest; @@ -27,10 +28,16 @@ import org.jeecg.common.system.base.controller.JeecgController; 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.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import java.util.Date; import java.util.List; /** * @Description: 维修工å @@ -75,7 +82,33 @@ /** * é¢å * * @param id * @return */ @AutoLog(value = "维修工å-é¢å") @ApiOperation(value = "维修工å-é¢å", notes = "维修工å-é¢å") @GetMapping(value = "/claim") public Result<?> claim(String id) { // æ ¡éªé¢åæé LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (!BusinessCodeConst.PCR0002.equals(user.getPost())) { return Result.error("é¢å失败,没æé¢åæéï¼,é维修工é¢å"); } EamRepairOrder eamRepairOrder=eamRepairOrderService.getById(id); if (eamRepairOrder==null) { return Result.error("维修工åä¸åå¨"); }else { if ("1".equals(eamRepairOrder.getClaimStatus())) { return Result.error("该维修工å已被é¢å"); } } eamRepairOrder.setClaimStatus("1"); eamRepairOrder.setActualStartTime(new Date()); eamRepairOrderService.updateById(eamRepairOrder); return Result.OK("é¢åæå"); } /** * æäº¤ * @param id * @return */ @@ -184,11 +217,18 @@ * 导åºexcel * * @param request * @param eamRepairOrder * @param eamRepairOrderQuery */ @RequestMapping(value = "/exportXls") public ModelAndView exportXls(HttpServletRequest request, EamRepairOrder eamRepairOrder) { return super.exportXls(request, eamRepairOrder, EamRepairOrder.class, "维修工å"); public ModelAndView exportXls(HttpServletRequest request, EamRepairOrderQuery eamRepairOrderQuery) { LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); List<EamRepairOrderExport> eamRepairOrderExports=eamRepairOrderService.exportList(eamRepairOrderQuery); ModelAndView mv = new ModelAndView(new JeecgEntityExcelView()); mv.addObject(NormalExcelConstants.FILE_NAME, "维修工åå°è´¦"); //æ¤å¤è®¾ç½®çfilenameæ æ ,å端ä¼éæ´æ°è®¾ç½®ä¸ä¸ mv.addObject(NormalExcelConstants.CLASS, EamRepairOrderExport.class); mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("维修工åå°è´¦" + "æ¥è¡¨", "导åºäºº:" + sysUser.getRealname(), "维修工åå°è´¦")); mv.addObject(NormalExcelConstants.DATA_LIST, eamRepairOrderExports); return mv; } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamSecondMaintenanceOrderController.java
@@ -21,6 +21,7 @@ import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest; import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest; import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService; import org.jeecg.modules.eam.vo.EamEquipmentTree; import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; @@ -70,6 +71,24 @@ } /** * äºä¿æ¹éæ ç»æ * */ @ApiOperation(value = "设å¤äºçº§ä¿å »-äºä¿æ¹éæ ç»æ", notes = "设å¤äºçº§ä¿å »-äºä¿æ¹éæ ç»æ") @GetMapping(value = "/BatchTreeStructure") public Result<List<EamEquipmentTree>> BatchTreeStructure() { Result<List<EamEquipmentTree>> result = new Result<>(); try { List<EamEquipmentTree> mdcEquipmentTreeList =eamSecondMaintenanceOrderService.getTree(); result.setSuccess(true); result.setResult(mdcEquipmentTreeList); } catch (Exception e) { log.error(e.getMessage(), e); } return result; } /** * æ·»å * * @param request lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamMaintenanceStandardMapper.java
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamMaintenanceStandard; import java.util.List; @@ -24,4 +25,9 @@ * @return */ IPage<EamMaintenanceStandard> queryPageList(IPage<EamMaintenanceStandard> page, @Param(Constants.WRAPPER) Wrapper<EamMaintenanceStandard> queryWrapper); /** * å表æ¥è¯¢ */ List<EamEquipment> queryList(@Param(Constants.WRAPPER) Wrapper<EamMaintenanceStandard> queryWrapper); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/EamSecondMaintenanceOrderMapper.java
@@ -6,8 +6,12 @@ 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.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamMaintenanceStandard; import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder; import java.util.List; /** * @Description: 设å¤äºçº§ä¿å » * @Author: jeecg-boot lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/EamMaintenanceStandardMapper.xml
@@ -11,4 +11,14 @@ on f.data_id=ems.id ${ew.customSqlSegment} </select> <select id="queryList" resultType="org.jeecg.modules.eam.entity.EamEquipment"> SELECT e.*, ems.id as 'maintenanceStandardId', ems.standard_name as 'maintenanceStandardName' FROM eam_equipment e INNER JOIN eam_maintenance_standard ems ON ems.equipment_id = e.id ${ew.customSqlSegment} </select> </mapper> lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamSecondMaintenanceOrderService.java
@@ -6,6 +6,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.eam.request.EamSecondMaintenanceQuery; import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest; import org.jeecg.modules.eam.vo.EamEquipmentTree; import java.util.List; /** * @Description: 设å¤äºçº§ä¿å » @@ -24,6 +27,10 @@ IPage<EamSecondMaintenanceOrder> queryPageList(Page<EamSecondMaintenanceOrder> page, EamSecondMaintenanceQuery query); /** * æ¹éæ°å¢æ ç»æ */ List<EamEquipmentTree> getTree(); /** * æ·»å * @param request * @return lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamSecondMaintenanceOrderServiceImpl.java
@@ -9,11 +9,11 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import liquibase.pro.packaged.Q; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.SecurityUtils; import org.flowable.engine.TaskService; import org.flowable.task.api.Task; import org.jeecg.common.api.vo.FileUploadResult; import org.jeecg.common.api.vo.Result; import org.jeecg.common.constant.CommonConstant; import org.jeecg.common.constant.DataBaseConstant; @@ -23,10 +23,14 @@ import org.jeecg.modules.eam.aspect.annotation.EquipmentHistoryLog; import org.jeecg.modules.eam.constant.*; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.mapper.EamEquipmentMapper; import org.jeecg.modules.eam.mapper.EamMaintenanceStandardMapper; import org.jeecg.modules.eam.mapper.EamSecondMaintenanceOrderMapper; import org.jeecg.modules.eam.request.EamSecondMaintenanceQuery; import org.jeecg.modules.eam.request.EamSecondMaintenanceRequest; import org.jeecg.modules.eam.service.*; import org.jeecg.modules.eam.tree.FindsEquipmentEamCenterUtil; import org.jeecg.modules.eam.vo.EamEquipmentTree; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; @@ -35,6 +39,7 @@ import org.jeecg.modules.flowable.service.IFlowTaskService; import org.jeecg.modules.system.entity.BaseFactory; import org.jeecg.modules.system.entity.BaseFactoryUser; import org.jeecg.modules.system.mapper.BaseFactoryMapper; import org.jeecg.modules.system.service.IBaseFactoryService; import org.jeecg.modules.system.service.IBaseFactoryUserService; import org.jeecg.modules.system.service.ISysUserService; @@ -46,6 +51,7 @@ import javax.annotation.Resource; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; /** @@ -85,10 +91,15 @@ private IEamBaseHFCodeService hfCodeService; @Autowired private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService; @Autowired private EamMaintenanceStandardMapper eamMaintenanceStandardMapper; @Resource private BaseFactoryMapper baseFactoryMapper; @Override public IPage<EamSecondMaintenanceOrder> queryPageList(Page<EamSecondMaintenanceOrder> page, EamSecondMaintenanceQuery query) { QueryWrapper<EamSecondMaintenanceOrder> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("wmo.del_flag",CommonConstant.DEL_FLAG_0.toString()); //ç¨æ·æ°æ®æé LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) { @@ -148,6 +159,146 @@ return eamSecondMaintenanceOrderMapper.queryPageList(page, queryWrapper); } /** * æ¹éæ°å¢æ ç»æ */ @Override public List<EamEquipmentTree> getTree(){ LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); if (sysUser == null) return Collections.emptyList(); // æå»ºéç¨æ¥è¯¢æ¡ä»¶ QueryWrapper<EamMaintenanceStandard> baseQuery = new QueryWrapper<EamMaintenanceStandard>() .eq("ems.maintenance_category", "SECOND_MAINTENANCE") .eq("ems.standard_status", MaintenanceStandardStatusEnum.START.name()) .eq("ems.del_flag", CommonConstant.DEL_FLAG_0.toString()); // åºç¨æ°æ®æéè¿æ»¤ applyDataPermissionFilter(sysUser, baseQuery); // 忬¡æ¥è¯¢è®¾å¤å表 List<EamEquipment> equipmentList = eamMaintenanceStandardMapper.queryList(baseQuery); if (CollectionUtils.isEmpty(equipmentList)) { return Collections.emptyList(); } // è·åå ³èçå·¥å代ç Set<String> factoryOrgCodes = equipmentList.stream() .map(EamEquipment::getFactoryOrgCode) .collect(Collectors.toSet()); // 忬¡æ¥è¯¢ææå·¥åæ°æ®ï¼å å«å®æ´æ ç»æï¼ List<BaseFactory> allFactories = baseFactoryService.list( new LambdaQueryWrapper<BaseFactory>() .eq(BaseFactory::getDelFlag, CommonConstant.DEL_FLAG_0.toString()) .orderByAsc(BaseFactory::getSorter)); // æåæéå ³èçå·¥åèç¹IDï¼å 嫿æç¶èç¹ï¼ Set<String> authorizedFactoryIds = extractAuthorizedFactoryIds( allFactories, factoryOrgCodes); // è¿æ»¤åºææå·¥åç»æ List<BaseFactory> validFactories = allFactories.stream() .filter(f -> authorizedFactoryIds.contains(f.getId())) .collect(Collectors.toList()); // ===æå»ºè®¾å¤æ === Map<String, List<EamEquipment>> equipmentMap = equipmentList.stream() .collect(Collectors.groupingBy(EamEquipment::getFactoryOrgCode)); // æå»ºåºç¡æ List<EamEquipmentTree> treeList = FindsEquipmentEamCenterUtil.wrapEquipmentBaseFactoryTreeList(validFactories); // å¡«å è®¾å¤æ°æ® populateEquipmentNodes(treeList, equipmentMap); return treeList; } // åºç¨æ°æ®æéæ¡ä»¶ï¼å ±ç¨æ¹æ³ï¼ private void applyDataPermissionFilter(LoginUser user, QueryWrapper<EamMaintenanceStandard> query) { if (StringUtils.isNotBlank(user.getEamEquipmentIds())) { List<String> equipmentIds = Arrays.asList(user.getEamEquipmentIds().split(",")); query.in("e.equipment_code", equipmentIds); } else { List<BaseFactoryUser> factoryUsers = baseFactoryUserService.list( new LambdaQueryWrapper<BaseFactoryUser>() .eq(BaseFactoryUser::getUserId, user.getId())); if (CollectionUtils.isNotEmpty(factoryUsers)) { Set<String> factoryIds = factoryUsers.stream() .map(BaseFactoryUser::getFactoryId) .collect(Collectors.toSet()); Set<String> factoryCodes = baseFactoryService.listByIds(factoryIds).stream() .map(BaseFactory::getOrgCode) .collect(Collectors.toSet()); query.in("e.factory_org_code", factoryCodes); } } } // æåææå·¥åID private Set<String> extractAuthorizedFactoryIds(List<BaseFactory> allFactories, Set<String> authOrgCodes) { Set<String> result = new HashSet<>(); // æå»ºID->å·¥åçæ å° Map<String, BaseFactory> factoryMap = allFactories.stream() .collect(Collectors.toMap(BaseFactory::getId, Function.identity())); // é忥æ¾ç¶èç¹é¾ for (BaseFactory factory : allFactories) { if (authOrgCodes.contains(factory.getOrgCode())) { collectParentIds(factoryMap, factory.getId(), result); } } return result; } // é彿¶éç¶èç¹ID private void collectParentIds(Map<String, BaseFactory> factoryMap, String currentId, Set<String> idSet) { if (StringUtils.isEmpty(currentId) || idSet.contains(currentId)) return; idSet.add(currentId); BaseFactory factory = factoryMap.get(currentId); if (factory != null && StringUtils.isNotBlank(factory.getParentId())) { collectParentIds(factoryMap, factory.getParentId(), idSet); } } // å¡«å 设å¤èç¹ï¼ééå½ï¼ private void populateEquipmentNodes(List<EamEquipmentTree> treeList, Map<String, List<EamEquipment>> equipmentMap) { for (EamEquipmentTree node : treeList) { String orgCode = resolveOrgCodeFromTree(node); // éå®ç°è¯¥é»è¾ // å ³èè®¾å¤æ°æ® List<EamEquipment> devices = equipmentMap.getOrDefault(orgCode, Collections.emptyList()); if (!CollectionUtils.isEmpty(devices)) { for (EamEquipment device : devices) { EamEquipmentTree deviceNode = new EamEquipmentTree().convert(device); deviceNode.setParentId(node.getKey()); deviceNode.setType(2); deviceNode.setLeaf(true); // æç¡®æ 记为å¶åèç¹ node.getChildren().add(deviceNode); } // åªæå½åå¨è®¾å¤æ¶ææ 记为éå¶å node.setLeaf(false); } // ç»§ç»å¤çåèç¹ï¼å·¥åå±çº§ï¼ if (!CollectionUtils.isEmpty(node.getChildren())) { populateEquipmentNodes(node.getChildren(), equipmentMap); } } } // è§£ææ¹æ³ private String resolveOrgCodeFromTree(EamEquipmentTree node) { BaseFactory factory =baseFactoryMapper.selectById(node.getKey()); return factory != null ? factory.getOrgCode() : null; } @Override @Transactional(rollbackFor = Exception.class) public boolean addMaintenance(EamSecondMaintenanceRequest request) {