diff --git a/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java b/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java index 4159610d..2d5a1bdc 100644 --- a/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java +++ b/das/src/main/java/com/das/modules/fdr/controller/FaultRecorderController.java @@ -10,8 +10,10 @@ import com.das.modules.curve.domain.entity.CurveItemEntity; import com.das.modules.curve.domain.excel.CurveItemExcel; import com.das.modules.equipment.entity.SysEquipment; import com.das.modules.fdr.domain.FileNode; +import com.das.modules.fdr.domain.SysFaultCodeDict; import com.das.modules.fdr.domain.SysFaultRecordingDesc; import com.das.modules.fdr.domain.dto.FileDownloadDto; +import com.das.modules.fdr.domain.excel.SysFaultCodeDictExcel; import com.das.modules.fdr.domain.excel.SysFaultRecordingExcel; import com.das.modules.fdr.listener.SysFaultRecordingListener; import com.das.modules.fdr.service.FaultRecorderService; @@ -97,4 +99,35 @@ public class FaultRecorderController { List sysFaultRecordingDescList = faultRecorderService.queryFaultRecordingDes(madeinfactory,model); return R.success(sysFaultRecordingDescList); } + + /** + * 故障字典描述导出 + */ + @PostMapping("/faultCodeDict/export") + public void exportSysFaultCodeDict(@RequestBody SysFaultCodeDict sysFaultCodeDict, HttpServletRequest request, HttpServletResponse response) { + faultRecorderService.exportFaultCodeDict(sysFaultCodeDict,request, response); + } + + /** + * 故障字典导入 + */ + @PostMapping("/faultCodeDict/import") + public R importFaultCodeDict(String id, @RequestParam("file") MultipartFile file) throws IOException { + sysFaultRecordingListener.setParent(Long.valueOf(id)); + ExcelReaderBuilder read = EasyExcel.read(file.getInputStream(), SysFaultCodeDictExcel.class,sysFaultRecordingListener); + read.sheet().doRead(); + return R.success("导入成功"); + } + + /** + * 根据制造商厂家型号查询故障信息描述 + * @return 信息中英文描述 + */ + @PostMapping("/faultCodeDict/query") + public R> queryAllSysFaultCodeDict(@RequestBody JSONObject jsonObject) { + String madeinfactory = jsonObject.getString("madeinfactory"); + String model = jsonObject.getString("model"); + List sysFaultCodeDicts = faultRecorderService.queryFaultCodeDict(madeinfactory,model); + return R.success(sysFaultCodeDicts); + } } diff --git a/das/src/main/java/com/das/modules/fdr/domain/SysFaultCodeDict.java b/das/src/main/java/com/das/modules/fdr/domain/SysFaultCodeDict.java new file mode 100644 index 00000000..5ac217c3 --- /dev/null +++ b/das/src/main/java/com/das/modules/fdr/domain/SysFaultCodeDict.java @@ -0,0 +1,48 @@ +package com.das.modules.fdr.domain; + +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 lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +@TableName("sys_fault_code_dict") +@Data +@NoArgsConstructor +@AllArgsConstructor +public class SysFaultCodeDict { + + @TableId(value = "id", type = IdType.ASSIGN_ID) + private Long id; + + @TableField("parent") + private Long parent; + + @TableField("code") + private String code; + + @TableField("description") + private String description; + + @TableField("revision") + private Integer revision; + + @TableField("created_by") + private String createdBy; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("created_time") + private Date createdTime; + + @TableField("updated_by") + private String updatedBy; + + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @TableField("updated_time") + private Date updatedTime; +} diff --git a/das/src/main/java/com/das/modules/fdr/domain/excel/SysFaultCodeDictExcel.java b/das/src/main/java/com/das/modules/fdr/domain/excel/SysFaultCodeDictExcel.java new file mode 100644 index 00000000..dd56d260 --- /dev/null +++ b/das/src/main/java/com/das/modules/fdr/domain/excel/SysFaultCodeDictExcel.java @@ -0,0 +1,22 @@ +package com.das.modules.fdr.domain.excel; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class SysFaultCodeDictExcel implements Serializable { + + + /** + * 主键id + */ + @ExcelProperty(value = "故障码",index = 0) + private String code; + /** + * 物模型ID + */ + @ExcelProperty(value = "故障描述",index = 1) + private String description; +} diff --git a/das/src/main/java/com/das/modules/fdr/listener/SysFaultCodeDictListener.java b/das/src/main/java/com/das/modules/fdr/listener/SysFaultCodeDictListener.java new file mode 100644 index 00000000..7e7b6a72 --- /dev/null +++ b/das/src/main/java/com/das/modules/fdr/listener/SysFaultCodeDictListener.java @@ -0,0 +1,96 @@ +package com.das.modules.fdr.listener; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.alibaba.fastjson.JSON; +import com.das.common.exceptions.ServiceException; +import com.das.common.utils.BeanCopyUtils; +import com.das.common.utils.CommonFunction; +import com.das.modules.fdr.domain.SysFaultCodeDict; +import com.das.modules.fdr.domain.SysFaultRecordingDesc; +import com.das.modules.fdr.domain.excel.SysFaultCodeDictExcel; +import com.das.modules.fdr.domain.excel.SysFaultRecordingExcel; +import com.das.modules.fdr.service.impl.FaultRecorderServiceImpl; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; + + +/** + * 物模型属性监听器 + * + * @author huguanghan + */ +@Component +@Slf4j +@Data +public class SysFaultCodeDictListener extends AnalysisEventListener { + @Autowired + private FaultRecorderServiceImpl faultRecorderService; + + public SysFaultCodeDictListener(FaultRecorderServiceImpl faultRecorderService) { + this.faultRecorderService = faultRecorderService; + } + + //parentId + private Long parent; + + /**计数标记*/ + private Integer flag=0; + + /**存放插入*/ + ArrayList sysFaultCodeDicts = new ArrayList<>(); + + + @Override + public void invoke(SysFaultCodeDictExcel sysFaultCodeDictExcel, AnalysisContext analysisContext) { + // 如果一行Excel数据均为空值,则不装载该行数据 + if (CommonFunction.objCheckIsNull(sysFaultCodeDictExcel)) { + return; + } + log.info("解析到一条数据:{}", JSON.toJSONString(sysFaultCodeDictExcel)); + SysFaultCodeDict sysFaultCodeDict = new SysFaultCodeDict(); + BeanCopyUtils.copy(sysFaultCodeDictExcel, sysFaultCodeDict); + sysFaultCodeDict.setParent(parent); + //加入集合 + sysFaultCodeDicts.add(sysFaultCodeDict); + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + //确保最后遗留的数据也存储到数据库 + if (!sysFaultCodeDicts.isEmpty()){ + saveData(); + } + log.info("所有数据解析完成!"); + } + + + /** + * 存储数据库 + * @return + */ + private void saveData() { + log.info("{}条数据,开始存储数据库!", flag); + try { + faultRecorderService.batchInsert(sysFaultCodeDicts,parent); + }catch (Exception e){ + e.printStackTrace(); + throw new ServiceException(e.getMessage()); + }finally { + clear(); + } + log.info("存储数据库成功!"); + } + + public void clear(){ + //清理缓存 + sysFaultCodeDicts.clear(); + flag=0; + log.info("缓存已清理"); + } +} + diff --git a/das/src/main/java/com/das/modules/fdr/mapper/SysFaultCodeDictMapper.java b/das/src/main/java/com/das/modules/fdr/mapper/SysFaultCodeDictMapper.java new file mode 100644 index 00000000..691151aa --- /dev/null +++ b/das/src/main/java/com/das/modules/fdr/mapper/SysFaultCodeDictMapper.java @@ -0,0 +1,11 @@ +package com.das.modules.fdr.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.das.modules.fdr.domain.SysFaultCodeDict; +import com.das.modules.fdr.domain.SysFaultRecordingDesc; +import org.apache.ibatis.annotations.Mapper; + +@Mapper +public interface SysFaultCodeDictMapper extends BaseMapper { + +} diff --git a/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java b/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java index 739690b8..c5a41d4c 100644 --- a/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java +++ b/das/src/main/java/com/das/modules/fdr/service/FaultRecorderService.java @@ -2,6 +2,7 @@ package com.das.modules.fdr.service; import com.das.modules.equipment.entity.SysEquipment; import com.das.modules.fdr.domain.FileNode; +import com.das.modules.fdr.domain.SysFaultCodeDict; import com.das.modules.fdr.domain.SysFaultRecordingDesc; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -29,4 +30,8 @@ public interface FaultRecorderService { void exportFaultRecordingDesc(SysFaultRecordingDesc sysFaultRecordingDesc, HttpServletRequest request, HttpServletResponse response); List queryFaultRecordingDes(String madeinfactory, String model); + + List queryFaultCodeDict(String madeinfactory, String model); + + void exportFaultCodeDict(SysFaultCodeDict sysFaultCodeDict, HttpServletRequest request, HttpServletResponse response); } diff --git a/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java b/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java index b6caf69e..69d9a56e 100644 --- a/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java +++ b/das/src/main/java/com/das/modules/fdr/service/impl/FaultRecorderServiceImpl.java @@ -16,9 +16,11 @@ import com.das.modules.equipment.entity.SysEquipment; import com.das.modules.equipment.mapper.SysEquipmentMapper; import com.das.modules.fdr.config.MinioProperties; import com.das.modules.fdr.domain.FileNode; +import com.das.modules.fdr.domain.SysFaultCodeDict; import com.das.modules.fdr.domain.SysFaultRecordingDesc; import com.das.modules.fdr.domain.vo.FdrFormatVo; import com.das.modules.fdr.domain.vo.FileParseConfig; +import com.das.modules.fdr.mapper.SysFaultCodeDictMapper; import com.das.modules.fdr.mapper.SysFaultRecordingDescMapper; import com.das.modules.fdr.service.FaultRecorderService; import com.das.modules.fdr.service.MinioViewsServcie; @@ -51,9 +53,6 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { @Autowired MinioClient minioClient; - @Autowired - private MinioProperties minioProperties; - @Autowired private SysEquipmentMapper sysEquipmentMapper; @@ -63,6 +62,9 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { @Autowired private TheoreticalPowerCurveMapper theoreticalPowerCurveMapper; + @Autowired + private SysFaultCodeDictMapper sysFaultCodeDictMapper; + @Override public List getDirOrFileList(String fileType,String name, String startTime, String endTime) { @@ -121,6 +123,37 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { return sysFaultRecordingDescMapper.selectList(sysFaultRecordingDescQueryWrapper); } + @Override + public List queryFaultCodeDict(String madeinfactory, String model) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("madeinfactory",madeinfactory); + queryWrapper.eq("MODEL",model); + TheoreticalPowerCurveEntity theoreticalPowerCurveEntity = theoreticalPowerCurveMapper.selectOne(queryWrapper); + QueryWrapper sysFaultCodeDictQueryWrapper = new QueryWrapper<>(); + sysFaultCodeDictQueryWrapper.eq("parent",theoreticalPowerCurveEntity.getId()); + sysFaultCodeDictQueryWrapper.orderByAsc("code"); + return sysFaultCodeDictMapper.selectList(sysFaultCodeDictQueryWrapper); + } + + @Override + public void exportFaultCodeDict(SysFaultCodeDict sysFaultCodeDict, HttpServletRequest request, HttpServletResponse response) { + List exportList = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PARENT",sysFaultCodeDict.getId()); + queryWrapper.orderByAsc("code"); + List sysFaultRecordingDescList = sysFaultCodeDictMapper.selectList(queryWrapper); + TheoreticalPowerCurveEntity theoreticalPowerCurve = theoreticalPowerCurveMapper.selectById(sysFaultCodeDict.getId()); + LinkedHashMap map = new LinkedHashMap<>(); + SheetInfoBean sheetDTO = new SheetInfoBean(); + map.put("code", "故障码"); + map.put("description", "故障描述"); + sheetDTO.setSheetName(theoreticalPowerCurve.getMadeinfactory()); + sheetDTO.setFieldAndAlias(map); + sheetDTO.setCollection(sysFaultRecordingDescList); + exportList.add(sheetDTO); + HuExcelUtils.exportExcel(response, exportList, theoreticalPowerCurve.getMadeinfactory()+theoreticalPowerCurve.getModel()+"风机故障码字典"); + } + @Override public void download(String path,HttpServletResponse httpServletResponse) throws IOException { Path tempDir = Files.createTempDirectory(null); @@ -267,4 +300,22 @@ public class FaultRecorderServiceImpl implements FaultRecorderService { sysFaultRecordingDescMapper.insert(item); } } + + public void batchInsert(List insertSysFaultCodeDictList, Long parent) { + //先删除制造商数据 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("PARENT",parent); + sysFaultCodeDictMapper.delete(queryWrapper); + + //新增新的制造商数据 + for (SysFaultCodeDict item : insertSysFaultCodeDictList){ + SysUserVo sysUserVo = (SysUserVo) StpUtil.getTokenSession().get(SessionUtil.SESSION_USER_KEY); + item.setCreatedTime(new Date()); + item.setUpdatedTime(new Date()); + item.setCreatedBy(sysUserVo.getAccount()); + item.setUpdatedBy(sysUserVo.getAccount()); + item.setRevision(1); + sysFaultCodeDictMapper.insert(item); + } + } }