123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573 |
- package com.huaxu.service;
- import com.baomidou.mybatisplus.core.metadata.IPage;
- import com.huaxu.common.Reflections;
- import com.huaxu.common.StringUtils;
- import com.huaxu.dao.SceneImageMapper;
- import com.huaxu.dao.SceneMapper;
- import com.huaxu.dto.AlarmDetailsDto;
- import com.huaxu.dto.DeviceDto;
- import com.huaxu.entity.DeviceSceneEntity;
- import com.huaxu.entity.SceneEntity;
- import com.huaxu.entity.SceneImageEntity;
- import com.huaxu.entity.SceneTypeEntity;
- import com.huaxu.model.AjaxMessage;
- import com.huaxu.model.LoginUser;
- import com.huaxu.model.ResultStatus;
- import com.huaxu.util.OrgInfoUtil;
- import com.huaxu.util.Snowflake;
- import com.huaxu.util.UserUtil;
- import javafx.scene.Scene;
- import org.apache.ibatis.annotations.Param;
- import org.springframework.beans.BeanUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import javax.annotation.Resource;
- import org.springframework.transaction.annotation.Transactional;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.*;
- import static com.google.common.collect.Lists.newArrayList;
- @Service
- public class SceneService extends ServiceImpl<SceneMapper, SceneEntity> {
- @Resource
- private SceneMapper sceneMapper;
- @Resource
- private SceneImageService sceneImageService;
- @Autowired
- private OrgInfoUtil orgInfoUtil;
- @Autowired
- private DeviceSceneService deviceSceneService;
- @Autowired
- private AlarmDetailsService alarmDetailsService;
-
- public IPage<SceneEntity> findPage(IPage<SceneEntity> page, SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
-
- sceneEntity.setPermissonType(currentUser.getPermissonType());
-
- Page<SceneEntity> sceneEntityPage = sceneMapper.findPage(page, sceneEntity);
-
- List<SceneEntity> sceneEntities = newArrayList();
- for (SceneEntity item : sceneEntityPage.getRecords()) {
- sceneEntities.addAll(findByParentLike(item.getId()));
- }
- for (SceneEntity item : sceneEntities) {
- if (item.getCompanyOrgId() != null) {
- item.setCompanyOrgName(orgInfoUtil.getOrgName(item.getCompanyOrgId().intValue()));
- }
- if (item.getDeptOrgId() != null) {
- item.setDeptOrgName(orgInfoUtil.getOrgName(item.getDeptOrgId().intValue()));
- }
- }
- List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
- sceneEntityPage.setRecords(sceneTree);
- return sceneEntityPage;
- }
- public static List<SceneEntity> getSceneTree(List<SceneEntity> list, Long id, Integer leve) {
- List<SceneEntity> temList = newArrayList();
- if (list != null) {
- for (SceneEntity sceneEntity : list) {
- if (id.equals(sceneEntity.getParentSceneId())) {
- List<SceneEntity> chidren = getSceneTree(list, sceneEntity.getId(), ++leve);
- SceneEntity temMeanu = new SceneEntity();
- BeanUtils.copyProperties(sceneEntity, temMeanu);
- temMeanu.setChildren(chidren);
- temList.add(temMeanu);
- leve--;
- }
- }
- }
- if (temList.size() > 0) {
- return temList;
- } else {
- return null;
- }
- }
-
- public List<SceneEntity> findAllList(SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
-
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> sceneEntities = sceneMapper.findList(sceneEntity);
- List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
- return sceneTree;
- }
-
- public List<SceneEntity> findList(SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
-
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- return sceneMapper.findList(sceneEntity);
- }
-
- @Transactional(rollbackFor = Exception.class)
- public boolean delSceneByIds(Long[] ids) {
- return this.removeByIds(Arrays.asList(ids));
- }
-
- public boolean delSceneById(Long id) {
- return this.removeById(id);
- }
-
- public boolean addScene(SceneEntity scene) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- if (currentUser != null) {
- scene.setCreateBy(currentUser.getName());
- scene.setUpdateBy(currentUser.getName());
- scene.setDateUpdate(new Date());
- scene.setDateCreate(new Date());
- }
- if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0) {
- scene.setDeptOrgId(null);
- }
-
- if (scene.getParentSceneId() == null || StringUtils.isBlank(scene.getParentSceneId().toString())) {
- scene.setParentSceneId(Long.valueOf(0));
- } else {
- scene.setParentSceneId(scene.getParentSceneId());
- }
- if (scene.getParentSceneId() == null) {
- scene.setParentSceneIds("0,");
- }
-
- SceneEntity sceneEntity = sceneMapper.findSceneById(scene.getParentSceneId());
- if (this.save(scene)) {
- Long id = scene.getId();
-
- if (sceneEntity != null) {
- scene.setParentSceneIds(sceneEntity.getParentSceneIds() + id + ",");
- } else {
- scene.setParentSceneIds("0," + id + ",");
- }
- sceneMapper.updateById(scene);
-
- if (scene.getSceneImages() != null) {
- for (SceneImageEntity sceneImage : scene.getSceneImages()) {
- sceneImage.setCreateBy(currentUser.getName());
- sceneImage.setDateCreate(new Date());
- sceneImage.setDateUpdate(new Date());
- sceneImage.setSceneId(id);
- sceneImage.setStatus(1);
- sceneImage.setUpdateBy(currentUser.getName());
- }
- sceneImageService.saveBatch(scene.getSceneImages());
- }
- return true;
- }
- return false;
- }
-
- public List<SceneEntity> findByParentLike(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- SceneEntity scene = new SceneEntity();
- if (id != null) {
- scene.setParentSceneIds("%," + id + ",%");
- }
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- scene.setProgramItems(currentUser.getProgramItemList());
- scene.setUserType(currentUser.getType());
-
- scene.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
- return list;
- }
-
- public List<Long> findByParentIdsLike(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- SceneEntity scene = new SceneEntity();
- if (id != null) {
- scene.setParentSceneIds("%," + id + ",%");
- }
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- scene.setProgramItems(currentUser.getProgramItemList());
- scene.setUserType(currentUser.getType());
-
- scene.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
- List<Long> longs = newArrayList();
- for (SceneEntity item : list) {
- longs.add(item.getId());
- }
- return longs;
- }
-
- public List<Long> findByParentIdsByCom(Long id) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- SceneEntity scene = new SceneEntity();
- scene.setTenantId(currentUser.getTenantId());
- scene.setStatus(1);
- scene.setCompanyOrgId(id);
- scene.setProgramItems(currentUser.getProgramItemList());
- scene.setUserType(currentUser.getType());
-
- scene.setPermissonType(currentUser.getPermissonType());
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(scene);
- List<Long> longs = newArrayList();
- for (SceneEntity item : list) {
- longs.add(item.getId());
- }
- return longs;
- }
-
- public boolean updateSceneById(SceneEntity scene) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- scene.setUpdateBy(currentUser.getName());
- if (scene.getDeptOrgId() != null && scene.getDeptOrgId() == 0) {
- scene.setDeptOrgId(null);
- }
-
- SceneEntity cScene = sceneMapper.findSceneById(scene.getId());
- String oldParentIds = cScene.getParentSceneIds();
-
- if (scene.getParentSceneId() == null || StringUtils.isBlank(scene.getParentSceneId().toString())) {
- scene.setParentSceneId(Long.valueOf(0));
- } else {
- scene.setParentSceneId(scene.getParentSceneId());
- }
- if (scene.getParentSceneId() == null) {
- scene.setParentSceneIds("0,");
- }
-
- SceneEntity sceneEntity = sceneMapper.findSceneById(scene.getParentSceneId());
- if (this.updateById(scene)) {
-
- if (sceneEntity != null) {
- scene.setParentSceneIds(sceneEntity.getParentSceneIds() + scene.getId() + ",");
- } else {
- scene.setParentSceneIds("0," + scene.getId() + ",");
- }
- sceneMapper.updateById(scene);
-
- Class<SceneEntity> entityClass = Reflections.getClassGenricType(getClass(), 1);
- SceneEntity o = null;
- try {
- o = entityClass.newInstance();
- } catch (Exception e) {
- }
- o.setParentSceneIds("%," + scene.getId() + ",%");
- List<SceneEntity> list = sceneMapper.findByParentIdsLike(o);
- for (SceneEntity e : list) {
- if (!e.getId().equals(scene.getId()) && e.getParentSceneId() != null && oldParentIds != null) {
- e.setParentSceneIds(e.getParentSceneIds().replace(oldParentIds, scene.getParentSceneIds()));
- e.setDeptOrgId(scene.getDeptOrgId());
- e.setCompanyOrgId(scene.getCompanyOrgId());
- sceneMapper.updateById(e);
- }
- }
-
- sceneImageService.updateBySceneId(scene.getId());
-
- if (scene.getSceneImages() != null) {
- for (SceneImageEntity sceneImage : scene.getSceneImages()) {
- sceneImage.setCreateBy(currentUser.getName());
- sceneImage.setDateCreate(new Date());
- sceneImage.setDateUpdate(new Date());
- sceneImage.setSceneId(scene.getId());
- sceneImage.setStatus(1);
- sceneImage.setUpdateBy(currentUser.getName());
- }
- sceneImageService.saveBatch(scene.getSceneImages());
- }
- return true;
- }
- return false;
- }
-
- public SceneEntity findSceneById(Long id) {
- SceneEntity sceneEntity = sceneMapper.findSceneById(id);
- SceneImageEntity sceneImageEntity = new SceneImageEntity();
- sceneImageEntity.setSceneId(id);
- List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
- sceneEntity.setSceneImages(sceneImageEntities);
- return sceneEntity;
- }
-
- public SceneEntity findSceneByIdForApp(Long id) {
- SceneEntity sceneEntity = sceneMapper.findSceneById(id);
- SceneImageEntity sceneImageEntity = new SceneImageEntity();
- sceneImageEntity.setSceneId(id);
- sceneImageEntity.setImageType(3L);
- List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
- sceneEntity.setSceneImages(sceneImageEntities);
- return sceneEntity;
- }
- public List<SceneEntity> findBySceneTypeIds(Long[] Ids) {
- return sceneMapper.findBySceneTypeIds(Ids);
- }
- public List<SceneEntity> findByParentSceneIds(Long[] Ids) {
- return sceneMapper.findByParentSceneIds(Ids);
- }
- public List<SceneEntity> selectByTypeName(SceneEntity sceneEntity) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
-
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- return sceneMapper.selectByTypeName(sceneEntity);
- }
- public List<SceneEntity> findByParentId(Long id) {
- SceneEntity sceneEntity = new SceneEntity();
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
-
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- if (id != null) {
- sceneEntity.setParentSceneIds("%," + id + ",%");
- }
- List<SceneEntity> sceneEntities = sceneMapper.findByParentId(sceneEntity);
- for (SceneEntity item : sceneEntities) {
- SceneImageEntity sceneImageEntity = new SceneImageEntity();
- sceneImageEntity.setSceneId(item.getId());
- List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
- item.setSceneImages(sceneImageEntities);
- }
- List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
- return sceneTree;
- }
- public List<SceneEntity> findByParentIdForAPP(Long id) {
- SceneEntity sceneEntity = new SceneEntity();
- LoginUser currentUser = UserUtil.getCurrentUser();
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
-
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- if (id != null) {
- sceneEntity.setParentSceneIds("%," + id + ",%");
- }
- List<SceneEntity> sceneEntities = sceneMapper.findByParentId(sceneEntity);
- for (SceneEntity item : sceneEntities) {
- SceneImageEntity sceneImageEntity = new SceneImageEntity();
- sceneImageEntity.setSceneId(item.getId());
- sceneImageEntity.setImageType(3L);
- List<SceneImageEntity> sceneImageEntities = sceneImageService.findList(sceneImageEntity);
- item.setSceneImages(sceneImageEntities);
-
- List<AlarmDetailsDto> alarmList = alarmDetailsService.selectBySceneId(item.getId().intValue());
- if (alarmList.size() > 0) {
- item.setIsAlarm(1);
- } else {
- item.setIsAlarm(0);
- }
- }
- List<SceneEntity> sceneTree = getSceneTree(sceneEntities, Long.valueOf(0), 1);
- return sceneTree;
- }
-
- public SceneEntity findParentSceneById(Long id) {
- return sceneMapper.findParentSceneById(id);
- }
- public void saveUpdateBatch(List<DeviceSceneEntity> deviceScenes) {
-
- }
- public List<SceneEntity> selectByTypeNameForCom(SceneEntity sceneEntity, Long companyOrgId) {
- LoginUser currentUser = UserUtil.getCurrentUser();
- if (currentUser != null) {
- sceneEntity.setTenantId(currentUser.getTenantId());
- sceneEntity.setProgramItems(currentUser.getProgramItemList());
- sceneEntity.setUserType(currentUser.getType());
-
- sceneEntity.setPermissonType(currentUser.getPermissonType());
- }
- sceneEntity.setCompanyOrgId(companyOrgId);
- return sceneMapper.selectByTypeName(sceneEntity);
- }
- public List<Map<String,Object>> selectAlarmSceneAndDevice(SceneEntity sceneEntity, String startDate, String endDate){
- return sceneMapper.selectAlarmSceneAndDevice(sceneEntity, startDate, endDate);
- }
- public List<Map<String,Object>> selectMonthAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort) throws ParseException {
- int days = differentDaysByMillisecond(startDate,endDate);
- List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
- List<Map<String,Object>> list = sceneMapper.selectMonthAlarmTimes(sceneEntity,startDate,endDate,sort);
- for(int i=0; i<days; i++) {
- String strDate = subDay(startDate,i);
- Map<String, Object> data = new HashMap<>();
- data.put("数量", 0);
- data.put("日期", strDate);
- data.put("序号",i+1);
- result.add(data);
- }
- for(int i=0;i<list.size();i++){
- Map<String,Object> map =list.get(i);
- int day = Integer.parseInt(map.get("日期").toString().substring(8,10));
- result.get(day-1).put("数量",map.get("数量"));
- }
- return result;
- }
- public List<Map<String,Object>> selectYearAlarmTimes(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate,@Param("sort") int sort) throws ParseException {
- int months = differentMonths(startDate,endDate);
- List<Map<String,Object>> list = sceneMapper.selectYearAlarmTimes(sceneEntity,startDate,endDate,sort);
- List<Map<String,Object>> result = new ArrayList<Map<String,Object>>();
- for(int i=0; i<months; i++) {
- String strDate = startDate.substring(0, 4) + String.format("-%02d", i + 1);
- Map<String, Object> data = new HashMap<>();
- data.put("数量", 0);
- data.put("日期", strDate);
- data.put("序号",i+1);
- result.add(data);
- }
- for(int i=0;i<list.size();i++){
- Map<String,Object> map =list.get(i);
- int month = Integer.parseInt(map.get("日期").toString().substring(5,7));
- result.get(month-1).put("数量",map.get("数量"));
- }
- return result;
- }
- public List<Map<String,Object>> selectAlarmLable(@Param("scene") SceneEntity sceneEntity, @Param("startDate") String startDate, @Param("endDate") String endDate, @Param("sort") int sort){
- return sceneMapper.selectAlarmLable(sceneEntity, startDate, endDate, sort);
- }
- public List<Map<String,Object>> selectAlarmDeviceIdBySenceId(int id){
- return sceneMapper.selectAlarmDeviceIdBySenceId(id);
- }
- public int differentDaysByMillisecond(String date1,String date2) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date dt1 = sdf.parse(date1);
- Date dt2 = sdf.parse(date2);
- int days = (int) ((dt2.getTime() - dt1.getTime()) / (1000*3600*24));
- return days;
- }
-
- public int differentMonths(String startDate,String endDate) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date fromDate = sdf.parse(startDate);
- Date toDate = sdf.parse(endDate);
- Calendar from = Calendar.getInstance();
- from.setTime(fromDate);
- Calendar to = Calendar.getInstance();
- to.setTime(toDate);
-
- int fromYear = from.get(Calendar.YEAR);
- int fromMonth = from.get(Calendar.MONTH);
- int toYear = to.get(Calendar.YEAR);
- int toMonth = to.get(Calendar.MONTH);
-
- int month = toYear * 12 + toMonth - (fromYear * 12 + fromMonth);
-
- return month;
- }
-
- private String subDay(String date, int n) throws ParseException {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
- Date dt = sdf.parse(date);
- Calendar rightNow = Calendar.getInstance();
- rightNow.setTime(dt);
- rightNow.add(Calendar.DATE, n);
- Date dt1 = rightNow.getTime();
- String reStr = sdf.format(dt1);
- return reStr;
- }
- }
|