|
@@ -0,0 +1,141 @@
|
|
|
+package com.welampiot.service.impl;
|
|
|
+
|
|
|
+import com.welampiot.common.BaseResult;
|
|
|
+import com.welampiot.common.InterfaceResultEnum;
|
|
|
+import com.welampiot.controller.BaseController;
|
|
|
+import com.welampiot.dao.InverterDevDao;
|
|
|
+import com.welampiot.dto.InverterDevDTO;
|
|
|
+import com.welampiot.service.InverterDevService;
|
|
|
+import com.welampiot.service.InverterLogService;
|
|
|
+import com.welampiot.utils.ToolUtils;
|
|
|
+import com.welampiot.vo.InverterVO;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+@Service
|
|
|
+public class InverterDevServiceImpl extends BaseController implements InverterDevService {
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InverterDevDao inverterDevDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private InverterLogService inverterLogService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private ToolUtils toolUtils;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<InverterDevDTO> getInverterDevListByInverterVO(InverterVO inverterVO) {
|
|
|
+ inverterVO.setSectionList(getSectionList(inverterVO.getUsername()));
|
|
|
+ inverterVO.setPageAndCount(inverterVO.getPage(), inverterVO.getCount());
|
|
|
+ return inverterDevDao.getInverterDevListByInverterVO(inverterVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getInverterTotalByInverterVO(InverterVO inverterVO) {
|
|
|
+ return inverterDevDao.getInverterTotalByInverterVO(inverterVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer getOnlineInverterTotalByInverterVO(InverterVO inverterVO) {
|
|
|
+ return inverterDevDao.getOnlineInverterTotalByInverterVO(inverterVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void deleteInverterDataById(Integer id) {
|
|
|
+ inverterLogService.delInverterLogDataByInverterId(id);
|
|
|
+ inverterDevDao.deleteInverterDataById(id);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void addInverterData(InverterDevDTO inverterDevDTO) {
|
|
|
+ inverterDevDao.addInverterData(inverterDevDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateInverterData(InverterDevDTO inverterDevDTO) {
|
|
|
+ inverterDevDao.updateInverterData(inverterDevDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Integer checkInverterData(InverterDevDTO inverterDevDTO) {
|
|
|
+ return inverterDevDao.checkInverterData(inverterDevDTO);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public BaseResult<?> saveInverterDataByInverterVO(InverterVO inverterVO) {
|
|
|
+ BaseResult<?> baseResult = checkInverterField(inverterVO);
|
|
|
+ if (baseResult != null) return baseResult;
|
|
|
+
|
|
|
+ InverterDevDTO inverterDevDTO = new InverterDevDTO();
|
|
|
+ BeanUtils.copyProperties(inverterVO, inverterDevDTO);
|
|
|
+ if (inverterVO.getId() != null && inverterVO.getId() != 0) {
|
|
|
+ // 更新
|
|
|
+ updateInverterData(inverterDevDTO);
|
|
|
+ } else {
|
|
|
+ // 编辑
|
|
|
+ addInverterData(inverterDevDTO);
|
|
|
+ }
|
|
|
+ return toolUtils.response(InterfaceResultEnum.OPERATION_SUCCESS, inverterVO.getVersion());
|
|
|
+ }
|
|
|
+
|
|
|
+ private BaseResult<?> checkInverterField(InverterVO inverterVO) {
|
|
|
+ Integer version = inverterVO.getVersion();
|
|
|
+ if (inverterVO.getAreaId() == null || inverterVO.getAreaId() == 0)
|
|
|
+ return toolUtils.response(InterfaceResultEnum.LACK_AREA_ERROR, version);
|
|
|
+ if (inverterVO.getSectionId() == null || inverterVO.getSectionId() == 0)
|
|
|
+ return toolUtils.response(InterfaceResultEnum.LACK_SECTION_ERROR, version);
|
|
|
+ if (inverterVO.getName() == null || inverterVO.getName().trim().isEmpty())
|
|
|
+ return toolUtils.response(InterfaceResultEnum.LACK_NAME_ERROR, version);
|
|
|
+ if (inverterVO.getNumber() == null || inverterVO.getNumber().trim().isEmpty())
|
|
|
+ return toolUtils.response(InterfaceResultEnum.LACK_NUMBER_ERROR, version);
|
|
|
+ if (inverterVO.getAddress() == null || inverterVO.getAddress().trim().isEmpty())
|
|
|
+ return toolUtils.response(InterfaceResultEnum.LACK_ADDRESS_ERROR, version);
|
|
|
+
|
|
|
+ InverterDevDTO inverterDevDTO1 = new InverterDevDTO();
|
|
|
+ inverterDevDTO1.setAreaId(inverterVO.getAreaId());
|
|
|
+ inverterDevDTO1.setSectionId(inverterVO.getSectionId());
|
|
|
+ inverterDevDTO1.setName(inverterVO.getName());
|
|
|
+ inverterDevDTO1.setId(inverterVO.getId());
|
|
|
+ if (checkInverterData(inverterDevDTO1) > 0)
|
|
|
+ return toolUtils.response(InterfaceResultEnum.DEV_NAME_UNIQUE_ERROR, version);
|
|
|
+ inverterDevDTO1 = new InverterDevDTO();
|
|
|
+ inverterDevDTO1.setId(inverterVO.getId());
|
|
|
+ inverterDevDTO1.setAddress(inverterVO.getAddress());
|
|
|
+ if (checkInverterData(inverterDevDTO1) > 0)
|
|
|
+ return toolUtils.response(InterfaceResultEnum.DEV_ADDRESS_UNIQUE_ERROR, version);
|
|
|
+ inverterDevDTO1 = new InverterDevDTO();
|
|
|
+ inverterDevDTO1.setAreaId(inverterVO.getAreaId());
|
|
|
+ inverterDevDTO1.setSectionId(inverterVO.getSectionId());
|
|
|
+ inverterDevDTO1.setNumber(inverterVO.getNumber());
|
|
|
+ if (checkInverterData(inverterDevDTO1) > 0)
|
|
|
+ return toolUtils.response(InterfaceResultEnum.DEV_NUMBER_UNIQUE_ERROR, version);
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean openCloseInverter(Integer id, Integer status) {
|
|
|
+ InverterDevDTO inverterDevDTO = getInverterDetailsById(id);
|
|
|
+ if (inverterDevDTO == null) return false;
|
|
|
+ return sendSetInverterStatus(inverterDevDTO.getAddress(), status);
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean sendSetInverterStatus(String address, Integer status) {
|
|
|
+ String cmd = "0106DF00000" + status;
|
|
|
+ String sendTopic = "/WE/TransIn/" + address;
|
|
|
+ String backTopic = "/WE/TransOut/" + address;
|
|
|
+ String crc = toolUtils.getCRC(cmd);
|
|
|
+ cmd += crc;
|
|
|
+ String backResult = toolUtils.sendMqttCmd(sendTopic, toolUtils.hexString2Bytes(cmd), backTopic);
|
|
|
+ return toolUtils.checkCRC(backResult);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public InverterDevDTO getInverterDetailsById(Integer id) {
|
|
|
+ return inverterDevDao.getInverterDetailsById(id);
|
|
|
+ }
|
|
|
+}
|