package com.welampiot.service.impl; import com.welampiot.common.BaseResult; import com.welampiot.common.InterfaceResultEnum; import com.welampiot.dao.ElectricBoxDao; import com.welampiot.dto.ElectricBoxDTO; import com.welampiot.dto.ElectricModuleDTO; import com.welampiot.service.AirSwitchInfoService; import com.welampiot.service.ElectricBoxService; import com.welampiot.service.ElectricModuleService; import com.welampiot.utils.ToolUtils; import com.welampiot.vo.ElectricBoxReturnVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * ClassName: ElectricBoxServiceImpl * Package: com.welampiot.service.impl * Description: * * @Author: zhj_Start * @Create: 2023/3/25 - 14:46 * @Version: v1.0 */ @Service public class ElectricBoxServiceImpl implements ElectricBoxService { @Autowired private ElectricBoxDao electricBoxDao; @Autowired protected ElectricModuleService electricModuleService; @Autowired private ToolUtils toolUtils; @Autowired private AirSwitchInfoService airSwitchInfoService; @Override public ElectricBoxReturnVO getElectricBoxListBySectionId(ElectricBoxDTO dto) { ElectricBoxReturnVO electricBoxReturnVO = new ElectricBoxReturnVO(); electricBoxReturnVO.setTotal(electricBoxDao.getTotalByStatus(dto)); electricBoxReturnVO.setDevTotal(electricBoxDao.getTotalByStatus(dto)); electricBoxReturnVO.setOnlineTotal(electricBoxDao.getOnlineTotalByStatus(dto)); electricBoxReturnVO.setOfflineTotal(electricBoxDao.getOfflineTotalByStatus(dto)); List electricBoxList = electricBoxDao.getElectricBoxListBySectionId(dto); List electricBoxDTOS = new ArrayList<>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); electricBoxList.forEach(electricBoxDTO ->{ if (electricBoxDTO.getInstallDate() != null && !electricBoxDTO.getInstallDate().equals("")){ try { electricBoxDTO.setInstallDate(simpleDateFormat.format(simpleDateFormat.parse(electricBoxDTO.getInstallDate()))); } catch (ParseException e) { throw new RuntimeException(e); } }else { electricBoxDTO.setInstallDate(""); } if (electricBoxDTO.getExpirationDate() != null && !electricBoxDTO.getExpirationDate().equals("")){ try { electricBoxDTO.setExpirationDate(simpleDateFormat.format(simpleDateFormat.parse(electricBoxDTO.getExpirationDate()))); } catch (ParseException e) { throw new RuntimeException(e); } }else { electricBoxDTO.setExpirationDate(""); } if (electricBoxDTO.getOnlineCount() != null && electricBoxDTO.getOnlineCount() > 0){ electricBoxDTO.setOnline(1); }else { electricBoxDTO.setOnline(0); } List listByBoxId = electricModuleService.getListByBoxId(electricBoxDTO.getId()); List maps = new ArrayList<>(); for (ElectricModuleDTO e :listByBoxId) { Map objectObjectMap = new HashMap<>(); objectObjectMap.put("id",e.getId()); objectObjectMap.put("boxId",e.getBoxId()); objectObjectMap.put("address",e.getAddress()); objectObjectMap.put("type",e.getType()); maps.add(objectObjectMap); } electricBoxDTO.setModuleList(maps); if (electricBoxDTO.getDevType() == null) electricBoxDTO.setDevType(0); electricBoxDTOS.add(electricBoxDTO); }); electricBoxReturnVO.setList(electricBoxDTOS); return electricBoxReturnVO; } @Override public Integer getTotalByStatus(ElectricBoxDTO dto) { return electricBoxDao.getTotalByStatus(dto); } @Override public Integer getOnlineTotalByStatus(ElectricBoxDTO dto) { return electricBoxDao.getOnlineTotalByStatus(dto); } @Override public Integer getOfflineTotalByStatus(ElectricBoxDTO dto) { return electricBoxDao.getOfflineTotalByStatus(dto); } @Override public BaseResult add(ElectricBoxDTO dto) { if (dto.getAreaId() == 0 || dto.getAreaId() == null) return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR,dto.getVersion()); if (dto.getSectionId() == 0 || dto.getSectionId() == null) return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR,dto.getVersion()); if (dto.getName() == null || dto.getName().length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_ELECTRIC_BOX_NAME_ERROR,dto.getVersion()); ElectricBoxDTO electricBoxDTO = new ElectricBoxDTO(); electricBoxDTO.setSectionId(dto.getSectionId()); electricBoxDTO.setName(dto.getName()); if (electricBoxDao.checkData(electricBoxDTO).intValue() > 0) return toolUtils.response(InterfaceResultEnum.ELECTRIC_BOX_NAME_UNIQUE_ERROR,dto.getVersion()); if (dto.getModuleList() == null || dto.getModuleList().isEmpty()) return toolUtils.response(InterfaceResultEnum.LACK_ELECTRIC_MODULE_ERROR,dto.getVersion()); electricBoxDao.add(dto); List moduleList = dto.getModuleList(); for (Map map:moduleList) { ElectricModuleDTO electricModuleDTO = new ElectricModuleDTO(); if (map.containsKey("id")) electricModuleDTO.setId(Integer.parseInt((String) map.get("id"))); electricModuleDTO.setBoxId(dto.getId()); if (map.containsKey("address") && map.get("address").toString().length() > 0) { electricModuleDTO.setAddress((String) map.get("address")); }else { return toolUtils.response(InterfaceResultEnum.LACK_ELECTRIC_MODULE_ADDRESS_ERROR,dto.getVersion()); } electricModuleDTO.setType(Integer.parseInt((String) map.get("type"))); if (electricModuleDTO.getId() != null && electricModuleDTO.getId() > 0){ electricModuleService.add(electricModuleDTO); }else { electricModuleService.update(electricModuleDTO); } } return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,dto.getVersion()); } @Override public BaseResult update(ElectricBoxDTO dto) { if (dto.getAreaId() == 0 || dto.getAreaId() == null) return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR,dto.getVersion()); if (dto.getSectionId() == 0 || dto.getSectionId() == null) return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR,dto.getVersion()); if (dto.getName() == null || dto.getName().length() == 0) return toolUtils.response(InterfaceResultEnum.LACK_ELECTRIC_BOX_NAME_ERROR,dto.getVersion()); ElectricBoxDTO electricBoxDTO = new ElectricBoxDTO(); electricBoxDTO.setSectionId(dto.getSectionId()); electricBoxDTO.setName(dto.getName()); electricBoxDTO.setId(dto.getId()); if (electricBoxDao.checkData(electricBoxDTO).intValue() > 0) return toolUtils.response(InterfaceResultEnum.ELECTRIC_BOX_NAME_UNIQUE_ERROR,dto.getVersion()); if (dto.getModuleList() == null || dto.getModuleList().isEmpty()) return toolUtils.response(InterfaceResultEnum.LACK_ELECTRIC_MODULE_ERROR,dto.getVersion()); electricBoxDao.add(dto); List moduleList = dto.getModuleList(); for (Map map:moduleList) { ElectricModuleDTO electricModuleDTO = new ElectricModuleDTO(); if (map.containsKey("id")) electricModuleDTO.setId(Integer.parseInt((String) map.get("id"))); electricModuleDTO.setBoxId(dto.getId()); if (map.containsKey("address") && map.get("address").toString().length() > 0) { electricModuleDTO.setAddress((String) map.get("address")); }else { return toolUtils.response(InterfaceResultEnum.LACK_ELECTRIC_MODULE_ADDRESS_ERROR,dto.getVersion()); } electricModuleDTO.setType(Integer.parseInt((String) map.get("type"))); if (electricModuleDTO.getId() != null && electricModuleDTO.getId() > 0){ electricModuleService.add(electricModuleDTO); }else { electricModuleService.update(electricModuleDTO); } } electricBoxDao.update(dto); return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS,dto.getVersion()); } @Override public Integer checkData(ElectricBoxDTO dto) { return electricBoxDao.checkData(dto); } @Override public Integer delete(ElectricBoxDTO dto) { airSwitchInfoService.deleteByBoxId(dto.getId()); electricModuleService.deleteByBoxId(dto.getId()); return electricBoxDao.delete(dto); } @Override public ElectricBoxDTO getDetailsById(Integer id) { return electricBoxDao.getDetailsById(id); } @Override public void changeElectricBoxLocationById(ElectricBoxDTO dto) { electricBoxDao.changeElectricBoxLocationById(dto); } }