package com.doumee.service.business.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; import com.doumee.core.utils.Utils; import com.doumee.dao.business.YwElectricalDataMapper; import com.doumee.dao.business.model.YwElectrical; import com.doumee.dao.business.model.YwElectricalData; import com.doumee.dao.business.model.YwElectricalRoom; import com.doumee.service.business.YwElectricalBizService; import com.doumee.service.business.YwElectricalDataService; import com.doumee.service.business.YwWorkDeskEnergyService; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.util.List; /** * 电表抄表数据Service实现 */ @Service public class YwElectricalDataServiceImpl implements YwElectricalDataService { @Autowired private YwElectricalDataMapper ywElectricalDataMapper; @Autowired private YwElectricalBizService ywElectricalBizService; @Autowired private YwWorkDeskEnergyService ywWorkDeskEnergyService; @Override public Integer create(YwElectricalData ywElectricalData) { ywElectricalDataMapper.insert(ywElectricalData); return ywElectricalData.getId(); } @Override public void deleteById(Integer id) { ywElectricalDataMapper.deleteById(id); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } for (Integer id : ids) { deleteById(id); } } @Override public void deleteById(Integer id, LoginUserInfo user) { ywElectricalDataMapper.deleteById(id); } @Override public void deleteByIdInBatch(List ids, LoginUserInfo user) { if (CollectionUtils.isEmpty(ids)) { return; } for (Integer id : ids) { deleteById(id, user); } } @Override public void delete(YwElectricalData ywElectricalData) { UpdateWrapper deleteWrapper = new UpdateWrapper<>(ywElectricalData); ywElectricalDataMapper.delete(deleteWrapper); } @Override public void updateById(YwElectricalData ywElectricalData) { ywElectricalDataMapper.updateById(ywElectricalData); } @Override public void updateByIdInBatch(List ywElectricalDatas) { if (CollectionUtils.isEmpty(ywElectricalDatas)) { return; } for (YwElectricalData ywElectricalData : ywElectricalDatas) { this.updateById(ywElectricalData); } } @Override public YwElectricalData findById(Integer id) { return ywElectricalDataMapper.selectById(id); } @Override public YwElectricalData findOne(YwElectricalData ywElectricalData) { QueryWrapper wrapper = new QueryWrapper<>(ywElectricalData).last("limit 1"); return ywElectricalDataMapper.selectOne(wrapper); } @Override public List findList(YwElectricalData ywElectricalData) { QueryWrapper wrapper = new QueryWrapper<>(ywElectricalData); return ywElectricalDataMapper.selectList(wrapper); } @Override public PageData findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); YwElectricalData model = pageWrap.getModel() == null ? new YwElectricalData() : pageWrap.getModel(); Utils.MP.blankToNull(model); MPJLambdaWrapper queryWrapper = new MPJLambdaWrapper<>(); queryWrapper.selectAll(YwElectricalData.class) .selectAs(YwElectrical::getName, YwElectricalData::getElectricalName) .selectAs(YwElectrical::getId, YwElectricalData::getElectricalId) .leftJoin(YwElectrical.class, on -> on .eq(YwElectrical::getAddress, YwElectricalData::getAddress) .eq(YwElectrical::getIsdeleted, Constants.ZERO)) .eq(YwElectricalData::getIsdeleted, Constants.ZERO); if (StringUtils.isNotBlank(model.getMeterKeyword())) { String kw = model.getMeterKeyword().trim(); queryWrapper.and(w -> w.like(YwElectricalData::getAddress, kw) .or().like(YwElectricalData::getName, kw) .or().like(YwElectrical::getName, kw)); } if (model.getRoomId() != null) { queryWrapper.innerJoin(YwElectricalRoom.class, on -> on .eq(YwElectricalRoom::getObjId, YwElectrical::getId) .eq(YwElectricalRoom::getType, Constants.ZERO) .eq(YwElectricalRoom::getIsdeleted, Constants.ZERO)) .eq(YwElectricalRoom::getRoomId, model.getRoomId()); } if (model.getReadTimeBegin() != null) { String begin = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") .format(Utils.Date.getStart(model.getReadTimeBegin())); queryWrapper.and(w -> w.and(w1 -> w1.isNotNull(YwElectricalData::getAddTime) .ne(YwElectricalData::getAddTime, "") .ge(YwElectricalData::getAddTime, begin)) .or(w2 -> w2.and(w3 -> w3.isNull(YwElectricalData::getAddTime) .or().eq(YwElectricalData::getAddTime, "")) .ge(YwElectricalData::getCreateDate, Utils.Date.getStart(model.getReadTimeBegin())))); } if (model.getReadTimeEnd() != null) { String end = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") .format(Utils.Date.getEnd(model.getReadTimeEnd())); queryWrapper.and(w -> w.and(w1 -> w1.isNotNull(YwElectricalData::getAddTime) .ne(YwElectricalData::getAddTime, "") .le(YwElectricalData::getAddTime, end)) .or(w2 -> w2.and(w3 -> w3.isNull(YwElectricalData::getAddTime) .or().eq(YwElectricalData::getAddTime, "")) .le(YwElectricalData::getCreateDate, Utils.Date.getEnd(model.getReadTimeEnd())))); } queryWrapper.orderByDesc(YwElectricalData::getAddTime) .orderByDesc(YwElectricalData::getCreateDate) .orderByDesc(YwElectricalData::getId); IPage result = ywElectricalDataMapper.selectJoinPage(page, YwElectricalData.class, queryWrapper); PageData pageData = PageData.from(result); ywElectricalBizService.enrichDataList(pageData.getRecords()); return pageData; } @Override public long count(YwElectricalData ywElectricalData) { QueryWrapper wrapper = new QueryWrapper<>(ywElectricalData); return ywElectricalDataMapper.selectCount(wrapper); } @Override public String syncFromPlatform() { return ywElectricalBizService.syncMeterDataFromPlatform(); } @Override public String syncFromPlatform(String readTimeBegin, String readTimeEnd) { String syncMsg = ywElectricalBizService.syncMeterDataFromPlatform(readTimeBegin, readTimeEnd); String statsMsg = ywWorkDeskEnergyService.refreshElectricalDailyStatsForRange(readTimeBegin, readTimeEnd); return syncMsg + ";" + statsMsg; } }