package com.zhitan.basicdata.services.impl; import com.zhitan.basicdata.domain.FacilityArchives; import com.zhitan.basicdata.mapper.FacilityArchivesMapper; import com.zhitan.basicdata.services.IFacilityArchivesService; import com.zhitan.common.core.domain.entity.SysDictData; import com.zhitan.common.core.domain.model.LoginUser; import com.zhitan.common.exception.CustomException; import com.zhitan.common.utils.DateUtils; import com.zhitan.common.utils.StringUtils; import com.zhitan.system.mapper.SysDictDataMapper; import com.zhitan.system.service.impl.SysUserServiceImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; /** * 设备档案Service业务层处理 * * @author zhaowei * @date 2020-02-24 */ @Service public class FacilityArchivesServiceImpl implements IFacilityArchivesService { @Autowired private FacilityArchivesMapper facilityArchivesMapper; @Autowired private SysDictDataMapper dictDataMapper; private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); /** * 查询设备档案 * * @param id 设备档案ID * @return 设备档案 */ @Override public FacilityArchives selectFacilityArchivesById(String id) { return facilityArchivesMapper.selectFacilityArchivesById(id); } /** * 查询设备档案根据code * * @param facilityArchives 设备档案code * @return 设备档案 */ @Override public FacilityArchives selectFacilityArchivesByCode(FacilityArchives facilityArchives) { return facilityArchivesMapper.selectFacilityArchivesByCode(facilityArchives); } /** * 查询设备档案列表 * * @param facilityArchives 设备档案 * @return 设备档案 */ @Override public List selectFacilityArchivesList(FacilityArchives facilityArchives) { return facilityArchivesMapper.selectFacilityArchivesList(facilityArchives); } /** * 查询设备档案列表导出列表 * * @param facilityArchives 设备档案 * @return 设备档案 */ @Override public List excelFacilityArchivesList(FacilityArchives facilityArchives) { return facilityArchivesMapper.excelFacilityArchivesList(facilityArchives); } /** * 新增设备档案 * * @param facilityArchives 设备档案 * @return 结果 */ @Override public int insertFacilityArchives(FacilityArchives facilityArchives) { facilityArchives.setCreateTime(DateUtils.getNowDate()); return facilityArchivesMapper.insertFacilityArchives(facilityArchives); } /** * 修改设备档案 * * @param facilityArchives 设备档案 * @return 结果 */ @Override public int updateFacilityArchives(FacilityArchives facilityArchives) { facilityArchives.setUpdateTime(DateUtils.getNowDate()); return facilityArchivesMapper.updateFacilityArchives(facilityArchives); } /** * 批量删除设备档案 * * @param ids 需要删除的设备档案ID * @return 结果 */ @Override public int deleteFacilityArchivesByIds(String[] ids) { return facilityArchivesMapper.deleteFacilityArchivesByIds(ids); } /** * 删除设备档案信息 * * @param id 设备档案ID * @return 结果 */ @Override public int deleteFacilityArchivesById(String id) { return facilityArchivesMapper.deleteFacilityArchivesById(id); } /** * 批量检定恢复设备档案 * * @param ids 需要删除的设备档案ID * @return 结果 */ @Override public int resetFacilityArchivesByIds(String[] ids) { return facilityArchivesMapper.resetFacilityArchivesByIds(ids); } /* *//** * 检定恢复设备档案信息 * * @param id 设备档案ID * @return 结果 *//* @Override public int resetFacilityArchivesById(String[] id) { return facilityArchivesMapper.resetFacilityArchivesById(id); } */ /** * Excel导入 设备档案维护信息 * * @param facilityArchivesList 要导入的设备档案集合 * @param loginUser 登录用户对象 * @return 结果 */ @Override public String excelImpSave(List facilityArchivesList, LoginUser loginUser) { if (StringUtils.isNull(facilityArchivesList) || facilityArchivesList.size() == 0) { throw new CustomException("导入设备档案不能为空!"); } int successNum = 0; int failureNum = 0; StringBuilder successMsg = new StringBuilder(); StringBuilder failureMsg = new StringBuilder(); //1、字典数据翻译 // 设备类型 List facilityTypeList = dictDataMapper.selectDictDataByType("facility_type"); Map facilityTypeMap = this.initDictMap(facilityTypeList); // 使用分厂 List facilityBranchList = dictDataMapper.selectDictDataByType( "branch_factory"); Map facilityBranchMap = this.initDictMap(facilityBranchList); //能耗等级 List facilityGradeList = dictDataMapper.selectDictDataByType( "facility_grade"); Map facilityGradeMap = this.initDictMap(facilityGradeList); for (FacilityArchives facilityArchives : facilityArchivesList) { try { // 检定周期、提醒周期 定义的Integer类型,如果数据不匹配会默认为0 facilityArchives.setCheckCycle(facilityArchives.getCheckCycle()==null?1:facilityArchives.getCheckCycle()); facilityArchives.setReminderCycle(facilityArchives.getReminderCycle()==null?1:facilityArchives.getReminderCycle()); // 2验证 编码是否存在 FacilityArchives chekcFacilityImplement = facilityArchivesMapper.selectFacilityArchivesByCode(facilityArchives); if (StringUtils.isNull(chekcFacilityImplement)) { //设置主键 facilityArchives.setId(UUID.randomUUID().toString()); //翻译 设备类型 无或者值不对则设置为空字符串 String facilityType= StringUtils.nvl(facilityTypeMap.get(facilityArchives.getFacilityType()+""),""); //判断状态是否正确 if(StringUtils.isEmpty(facilityType)) { failureNum++; failureMsg.append("
" + failureNum + "、编号 " + facilityArchives.getCode() + " 的设备类型错误"); continue; } facilityArchives.setFacilityType(facilityType+""); //翻译 使用分厂 无或者值不对则设置为空字符串 String branchFactory= StringUtils.nvl(facilityBranchMap.get(facilityArchives.getBranchFactory()+""),""); if(StringUtils.isEmpty(branchFactory)) { failureNum++; failureMsg.append("
" + failureNum + "、编号 " + facilityArchives.getCode() + " 的使用分厂错误"); continue; } facilityArchives.setBranchFactory(branchFactory); //翻译 能耗等级 无或者值不对则设置为空字符串 String facilityGrade= StringUtils.nvl(facilityGradeMap.get(facilityArchives.getFacilityGrade()+""),""); if(StringUtils.isEmpty(facilityGrade)) { failureNum++; failureMsg.append("
" + failureNum + "、编号 " + facilityArchives.getCode() + " 的能耗等级错误"); continue; } facilityArchives.setFacilityGrade(facilityGrade); //设置建立人和建立时间 facilityArchives.setCreateBy(loginUser.getUsername()); facilityArchives.setCreateTime(new Date()); //存储一条数据 this.insertFacilityArchives(facilityArchives); successNum++; successMsg.append("
" + successNum + "、编号 " + facilityArchives.getCode() + " 导入成功"); } else { failureNum++; failureMsg.append("
" + failureNum + "、编号 " + facilityArchives.getCode() + " 已存在"); } } catch (Exception e) { failureNum++; String msg = "
" + failureNum + "、编号 " + facilityArchives.getCode() + " 导入失败:"; failureMsg.append(msg + e.getMessage()); log.error(msg, e); } } if (failureNum > 0) { failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); throw new CustomException(failureMsg.toString()); } else { successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); } return successMsg.toString(); } /** * 将字典类型 对应的 字典集合 存入map中使用 * @param sysDictDataList * @return */ public Map initDictMap(List sysDictDataList) { Map map = new HashMap(); for(SysDictData sysDictData : sysDictDataList) { //存放 key=标签名字 value是 设置值 map.put(sysDictData.getDictLabel(),sysDictData.getDictValue()); } return map; } }