diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/event/standardcal/listener/ProductionResultListener.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/event/standardcal/listener/ProductionResultListener.java index 81c84b5..4b3232c 100644 --- a/modules/carbon-track/src/main/java/com/thing/carbontrack/event/standardcal/listener/ProductionResultListener.java +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/event/standardcal/listener/ProductionResultListener.java @@ -50,7 +50,7 @@ public class ProductionResultListener { private final IotCarbonRatioService carbonRatioService; - private final String APPTYPE = "CK"; + private final String APPTYPE = "BASE"; private final String CHANGK = "CK"; diff --git a/modules/carbon-track/src/main/java/com/thing/carbontrack/productionResult/service/impl/IotCarbonProductionResultServiceImpl.java b/modules/carbon-track/src/main/java/com/thing/carbontrack/productionResult/service/impl/IotCarbonProductionResultServiceImpl.java index 32ebc06..d59c7a4 100644 --- a/modules/carbon-track/src/main/java/com/thing/carbontrack/productionResult/service/impl/IotCarbonProductionResultServiceImpl.java +++ b/modules/carbon-track/src/main/java/com/thing/carbontrack/productionResult/service/impl/IotCarbonProductionResultServiceImpl.java @@ -362,7 +362,7 @@ public class IotCarbonProductionResultServiceImpl } else { // 默认查最近两个月,如果没数据,则全表查询 LocalDateTime monthEnd = DateTimeUtils.getMonthEnd(LocalDateTime.now()); - LocalDateTime monthStart = DateTimeUtils.getMonthStart(monthEnd.minusMonths(1)); + LocalDateTime monthStart = DateTimeUtils.getMonthStart(monthEnd.minusMonths(10)); start = DateTimeUtils.toDate(monthStart); end = DateTimeUtils.toDate(monthEnd); List result = mapper.getLatestCarbonRank(keywords, carbonTypes, start, end); diff --git a/modules/configuration/src/main/java/com/thing/configuration/newmaterial/service/impl/IotNewSourceMaterialServiceImpl.java b/modules/configuration/src/main/java/com/thing/configuration/newmaterial/service/impl/IotNewSourceMaterialServiceImpl.java index 11c7a20..646c2c5 100644 --- a/modules/configuration/src/main/java/com/thing/configuration/newmaterial/service/impl/IotNewSourceMaterialServiceImpl.java +++ b/modules/configuration/src/main/java/com/thing/configuration/newmaterial/service/impl/IotNewSourceMaterialServiceImpl.java @@ -235,7 +235,7 @@ public class IotNewSourceMaterialServiceImpl extends BaseServiceImpl getInfoByGroupIds(List groupIds) { QueryWrapper wrapper = new QueryWrapper(); - wrapper.eq( "group_id", groupIds); + wrapper.in( "group_id", groupIds); return this.mapper.selectListByQuery(wrapper); } } \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/board/controller/IotVisualManageController.java b/modules/visual-design/src/main/java/com/thing/visual/board/controller/IotVisualManageController.java new file mode 100644 index 0000000..0f93f58 --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/board/controller/IotVisualManageController.java @@ -0,0 +1,155 @@ +package com.thing.visual.board.controller; + + +import cn.hutool.core.util.ObjectUtil; +import com.thing.common.core.annotation.LogOperation; +import com.thing.common.core.constants.Constant; +import com.thing.common.core.enumeration.IsDefaultEnum; +import com.thing.common.core.utils.JsonProcessingUtils; +import com.thing.common.core.validator.AssertUtils; +import com.thing.common.core.validator.ValidatorUtils; +import com.thing.common.core.validator.group.AddGroup; +import com.thing.common.core.validator.group.DefaultGroup; +import com.thing.common.core.validator.group.UpdateGroup; +import com.thing.common.core.web.response.PageData; +import com.thing.common.core.web.response.Result; +import com.thing.sys.security.context.UserContext; +import com.thing.visual.board.dto.IotVisualManageDTO; +import com.thing.visual.board.service.IotVisualManageService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; +import java.util.Set; + + +/** + * 组态大屏管理 + * + * @author xc + * @since 3.0 2023-05-10 + */ +@RestController +@RequestMapping("v2/visual/manage") +@Tag(name="新组态大屏管理") +public class IotVisualManageController { + @Autowired + private IotVisualManageService iotVisualManageService; + + @GetMapping("page") + @Operation(summary="分页") + @Parameters({ + @Parameter(name = Constant.PAGE, description = "当前页码,从1开始") , + @Parameter(name = Constant.LIMIT,description ="每页显示记录数") , + @Parameter(name = Constant.ORDER_FIELD,description ="排序字段") , + @Parameter(name = Constant.ORDER,description ="排序方式,可选值(asc、desc)"), + @Parameter(name ="name",description ="看板名称"), + @Parameter(name ="type",description ="看板类型") + }) + public Result> page(@RequestParam Map params){ + PageData page = iotVisualManageService.pageIotBoardManageDTO(params); + + return new Result>().ok(page); + } + + @GetMapping("{id}") + @Operation(summary="信息") + public Result get(@PathVariable("id") Long id){ + IotVisualManageDTO data = iotVisualManageService.getIotBoardManageDTO(id); + checkParam(data); + return new Result().ok(data); + } + + public static void checkParam(IotVisualManageDTO data) { + if(ObjectUtil.equals(data.getIsTemplate(), IsDefaultEnum.Y.getValue())) { + if(!"1001".equals(String.valueOf(UserContext.getTenantCode()))){ + data.setIsOperate("1"); + } + } + if (!String.valueOf(data.getTenantCode()).equals(String.valueOf(UserContext.getTenantCode()))){ + if(!UserContext.isAdmin()){ + data.setIsOperate("1"); + } + } + } + + @PostMapping + @Operation(summary="保存") + @LogOperation("保存") + public Result save(@RequestBody IotVisualManageDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + + return iotVisualManageService.saveIotBoardManageDTO(dto); + } + + @PutMapping + @Operation(summary="修改") + @LogOperation("修改") + public Result update(@RequestBody IotVisualManageDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + + iotVisualManageService.updateIotBoardManageDTO(dto); + + return new Result().ok("修改成功!"); + } + + @DeleteMapping + @Operation(summary="删除") + @LogOperation("删除") + public Result delete(@RequestBody Long[] ids){ + //效验数据 + AssertUtils.isArrayEmpty(ids, "id"); + + return iotVisualManageService.deleteIotBoardManageDTO(ids); + } + + @GetMapping("export") + @Operation(summary="导出") + @Parameters({ + @Parameter(name ="name",description ="看板名称"), + @Parameter(name ="type",description ="看板类型") + }) + public void export( @RequestParam Map params, HttpServletResponse response) throws Exception { + List list = iotVisualManageService.listIotBoardManageDTO(params); + JsonProcessingUtils.exportJson(response, list, "group.json"); + } + + @PostMapping("importJson") + @Operation(summary="json导入,返回失败的数据信息") + public Result> importJson(MultipartFile file, HttpServletRequest request) { + return new Result>().ok(iotVisualManageService.importJson(file, request)); + } + + + + @GetMapping("getAllTemplate") + @Operation(summary="获取所有为模板的大屏数据") + public Result> getAllTemplate(){ + return new Result>().ok(iotVisualManageService.getAllTemplate()); + } + + + @GetMapping("getAllType") + @Operation(summary="获取所有看板类型") + public Result> getAllType(){ + return new Result>().ok(iotVisualManageService.getAllType()); + } + + + @GetMapping("/copy/{id}") + @Operation(summary="复制") + public Result copy(@PathVariable("id") Long id){ + return iotVisualManageService.copy(id); + } + +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/board/dto/IotVisualManageDTO.java b/modules/visual-design/src/main/java/com/thing/visual/board/dto/IotVisualManageDTO.java new file mode 100644 index 0000000..54cd38c --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/board/dto/IotVisualManageDTO.java @@ -0,0 +1,66 @@ +package com.thing.visual.board.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.thing.common.core.utils.DateTimeUtils; +import com.thing.sys.biz.dto.SysMenuDTO; +import com.thing.visual.configuration.dto.IotVisualDesignDTO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + +/** + * 组态大屏管理 + * + * @author xc + * @since 3.0 2023-05-10 + */ +@Data +@Schema( name= "组态大屏管理") +public class IotVisualManageDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Schema(description = "看板id主键") + private Long id; + @Schema(description = "看板名称") + private String name; + @Schema(description = "看板类型") + private String type; + @Schema(description = "缩略图url") + private String thumbnailUrl; + @Schema(description = "看板详情的背景图片") + private String backgroundImage; + @Schema(description = "看板详情的颜色") + private String backgroundColor; + @Schema(description = "看板详情的对比度") + private String backgroundRepeat; + @Schema(description = "看板详情的尺寸") + private String backgroundSize; + @Schema(description = "是否默认背景") + private Boolean isDefaultBackImg; + @Schema(description = "是否为模板") + private Object isTemplate; + @Schema(description = "备注") + private String remarks; + @Schema(description = "配置菜单信息") + private SysMenuDTO sysMenuDTO; + @Schema(description = "看板预览url") + private String previewUrl; + @Schema(description = "模板id") + private String templateId; + private IotVisualDesignDTO iotConfigurationDesigDTO; + @Schema(description = "是否可操作编辑,0可编辑,1不可编辑") + private String isOperate; + @Schema(description = "创建时间") + @JsonFormat(pattern = DateTimeUtils.DATE_TIME_PATTERN_STR) + private Long createDate; + + @Schema(description = "所属企业(租户code)") + private Long tenantCode; + + +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/board/entity/IotVisualManageEntity.java b/modules/visual-design/src/main/java/com/thing/visual/board/entity/IotVisualManageEntity.java new file mode 100644 index 0000000..26e13a3 --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/board/entity/IotVisualManageEntity.java @@ -0,0 +1,56 @@ +package com.thing.visual.board.entity; + +import com.mybatisflex.annotation.Table; +import com.thing.common.orm.entity.BaseInfoEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serial; + +/** + * 组态大屏管理 + * + * @author xc + * @since 3.0 2023-05-10 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper=false) +@Table("iot_visual_manage") +public class IotVisualManageEntity extends BaseInfoEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * 看板名称 + */ + private String name; + /** + * 看板类型 + */ + private String type; + /** + * 缩略图url + */ + private String thumbnailUrl; + /** + * 看板详情的背景图片 + */ + private String backgroundImage; + /** + * 是否为模板 + */ + private Object isTemplate; + /** + * 备注 + */ + private String remarks; + + /** + * 看板预览url + */ + private String previewUrl; + +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/board/excel/IotVisualManageExcel.java b/modules/visual-design/src/main/java/com/thing/visual/board/excel/IotVisualManageExcel.java new file mode 100644 index 0000000..7fdb94a --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/board/excel/IotVisualManageExcel.java @@ -0,0 +1,28 @@ +package com.thing.visual.board.excel; + +import lombok.Data; + +import java.util.Date; + +/** + * 组态大屏管理 + * + * @author xc + * @since 3.0 2023-05-10 + */ +@Data +public class IotVisualManageExcel { + private Long id; + private String name; + private String type; + private String thumbnailUrl; + private Object isTemplate; + private String remarks; + private Long tenantCode; + private Long companyId; + private Long deptId; + private Long creator; + private Date createDate; + private Long updater; + private Date updateDate; +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/board/mapper/IotVisualManageMapper.java b/modules/visual-design/src/main/java/com/thing/visual/board/mapper/IotVisualManageMapper.java new file mode 100644 index 0000000..78bfa35 --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/board/mapper/IotVisualManageMapper.java @@ -0,0 +1,17 @@ +package com.thing.visual.board.mapper; + + +import com.thing.common.orm.mapper.PowerBaseMapper; +import com.thing.visual.board.entity.IotVisualManageEntity; +import org.apache.ibatis.annotations.Mapper; + +/** +* 组态大屏管理 +* +* @author xc +* @since 3.0 2023-05-10 +*/ +@Mapper +public interface IotVisualManageMapper extends PowerBaseMapper { + +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/board/service/IotVisualManageService.java b/modules/visual-design/src/main/java/com/thing/visual/board/service/IotVisualManageService.java new file mode 100644 index 0000000..d95ab65 --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/board/service/IotVisualManageService.java @@ -0,0 +1,42 @@ +package com.thing.visual.board.service; + +import com.thing.common.core.web.response.PageData; +import com.thing.common.core.web.response.Result; +import com.thing.common.orm.service.IBaseService; +import com.thing.visual.board.dto.IotVisualManageDTO; +import com.thing.visual.board.entity.IotVisualManageEntity; +import jakarta.servlet.http.HttpServletRequest; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * 组态大屏管理 + * + * @author xc + * @since 3.0 2023-05-10 + */ +public interface IotVisualManageService extends IBaseService { + + Result saveIotBoardManageDTO(IotVisualManageDTO dto); + + PageData pageIotBoardManageDTO(Map params); + + void updateIotBoardManageDTO(IotVisualManageDTO dto); + + Result deleteIotBoardManageDTO(Long[] ids); + + IotVisualManageDTO getIotBoardManageDTO(Long id); + + List importJson(MultipartFile file, HttpServletRequest request); + + List getAllTemplate(); + + Set getAllType(); + + Result copy(Long id); + + List listIotBoardManageDTO(Map params); +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/board/service/impl/IotVisualManageServiceImpl.java b/modules/visual-design/src/main/java/com/thing/visual/board/service/impl/IotVisualManageServiceImpl.java new file mode 100644 index 0000000..2c28c6e --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/board/service/impl/IotVisualManageServiceImpl.java @@ -0,0 +1,367 @@ +package com.thing.visual.board.service.impl; + +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.TypeReference; +import com.mybatisflex.core.query.QueryColumn; +import com.mybatisflex.core.query.QueryWrapper; +import com.thing.common.core.enumeration.SuperAdminEnum; +import com.thing.common.core.exception.ErrorCode; +import com.thing.common.core.exception.SysException; +import com.thing.common.core.utils.ConvertUtils; +import com.thing.common.core.utils.HttpContextUtils; +import com.thing.common.core.utils.JsonProcessingUtils; +import com.thing.common.core.web.response.PageData; +import com.thing.common.core.web.response.Result; +import com.thing.common.orm.service.impl.BaseServiceImpl; +import com.thing.sys.biz.dto.SysMenuDTO; +import com.thing.sys.biz.dto.SysRoleDTO; +import com.thing.sys.biz.entity.SysLanguageEntity; +import com.thing.sys.biz.entity.SysMenuEntity; +import com.thing.sys.biz.entity.SysRoleMenuEntity; +import com.thing.sys.biz.mapper.SysLanguageMapper; +import com.thing.sys.biz.mapper.SysRoleMenuMapper; +import com.thing.sys.biz.service.SysLanguageService; +import com.thing.sys.biz.service.SysMenuService; +import com.thing.sys.biz.service.SysRoleMenuService; +import com.thing.sys.biz.service.SysRoleService; +import com.thing.sys.security.context.TenantContext; +import com.thing.sys.security.domain.SecurityUser; +import com.thing.sys.security.domain.UserDetail; +import com.thing.util.TenantSubsetUtil; +import com.thing.visual.board.controller.IotVisualManageController; +import com.thing.visual.board.dto.IotVisualManageDTO; +import com.thing.visual.board.entity.IotVisualManageEntity; +import com.thing.visual.board.mapper.IotVisualManageMapper; +import com.thing.visual.board.service.IotVisualManageService; +import com.thing.visual.configuration.dto.IotVisualDesignDTO; +import com.thing.visual.configuration.entity.IotVisualDesignEntity; +import com.thing.visual.configuration.mapper.IotVisualDesignMapper; +import com.thing.visual.configuration.service.IotVisualDesignService; +import jakarta.servlet.http.HttpServletRequest; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.compress.utils.Lists; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.mybatisflex.core.query.QueryMethods.column; + +/** + * 组态大屏管理 + * + * @author xc + * @since 3.0 2023-05-10 + */ +@Service +public class IotVisualManageServiceImpl extends BaseServiceImpl implements IotVisualManageService { + + @Autowired + private SysMenuService sysMenuService; + @Autowired + private SysLanguageService sysLanguageService; + @Autowired + private SysRoleService sysRoleService; + @Autowired + private SysRoleMenuService sysRoleMenuService; + @Autowired + private SysLanguageMapper sysLanguageDao; + @Autowired + private SysRoleMenuMapper sysRoleMenuDao; + @Autowired + private TenantSubsetUtil tenantSubsetUtil; + @Autowired + private IotVisualDesignMapper iotConfigurationDesignDao; + @Autowired + private IotVisualDesignService iotVisualDesignService; + + @Override + public QueryWrapper getWrapper(Map params){ + QueryColumn nameColumn = column("name"); + QueryColumn idColumn = column("id::varchar"); + + QueryWrapper wrapper = new QueryWrapper(); + String type = (String) params.get("type"); + wrapper.like( "type", type,StringUtils.isNotBlank(type)); + String name = (String) params.get("name"); + if(StringUtils.isNotEmpty(name)){ + try { + Long key = Long.parseLong(name); + wrapper.and(nameColumn.like(name).or(idColumn.like(key))); + } catch (NumberFormatException e) { + wrapper.and(nameColumn.like(name)); + } + } + + String ids = (String) params.get("ids"); + if(StringUtils.isNotBlank(ids)&&!"null".equals(params.get("ids"))){ + List idList = Arrays.asList(ids.split(",")); + wrapper.in( "id", idList,CollectionUtils.isNotEmpty(idList)); + } + wrapper.in("tenant_code",tenantSubsetUtil.paramsAddTenantCodeList(true)); + return wrapper; + } + + + @Override + @Transactional + public Result saveIotBoardManageDTO(IotVisualManageDTO dto) { + QueryColumn is_template = column("is_template"); + QueryColumn tenant_code = column("tenant_code"); + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq( "type", dto.getType(),ObjectUtil.isNotEmpty(dto.getType())); + wrapper.eq( "name", dto.getName(),ObjectUtil.isNotEmpty(dto.getName())); + wrapper.and(is_template.eq(true).or(tenant_code.in(tenantSubsetUtil.paramsAddTenantCodeList(true)))); + + if(this.mapper.selectCountByQuery(wrapper)>0){ + return new Result().error("大屏看板已存在,请勿重复添加!"); + } + IotVisualManageEntity entity =ConvertUtils.convertWithTypeAdapt(dto, IotVisualManageEntity.class); + entity.setId(null); + this.mapper.insert(entity); + IotVisualDesignEntity designEntity = new IotVisualDesignEntity(); + designEntity.setBoardManageId(entity.getId()); + iotConfigurationDesignDao.insert(designEntity); + if(ObjectUtil.isNotNull(dto.getSysMenuDTO())&&ObjectUtil.isNotEmpty(dto.getSysMenuDTO().getName())){ + //新增菜单信息 + SysMenuDTO menuDTO = dto.getSysMenuDTO(); + menuDTO.setType(0); + menuDTO.setOpenStyle(0); + menuDTO.setSaView(1); + menuDTO.setUrl("scada/preview?id=" + entity.getId()); + SysMenuEntity sysMenuEntity = ConvertUtils.sourceToTarget(menuDTO, SysMenuEntity.class); + sysMenuService.save(sysMenuEntity); + sysLanguageService.saveOrUpdate("sys_menu", sysMenuEntity.getId(), "name", sysMenuEntity.getName(), HttpContextUtils.getLanguage()); + //将菜单分配给对应的租户/企业下的默认角色 + SysRoleDTO sysRoleDTO = sysRoleService.getDefaultRole(new HashMap<>(1)); + if (ObjectUtil.isNotNull(sysRoleDTO)){ + SysRoleMenuEntity sysRoleMenuEntity = new SysRoleMenuEntity(); + sysRoleMenuEntity.setRoleId(sysRoleDTO.getId()); + sysRoleMenuEntity.setMenuId(sysMenuEntity.getId()); + sysRoleMenuService.save(sysRoleMenuEntity); + } + } + if(StringUtils.isNotEmpty(dto.getTemplateId())){ + IotVisualDesignDTO configurationDesigDTO=null; + if(ObjectUtil.isNotNull(dto.getIotConfigurationDesigDTO())){ + configurationDesigDTO=dto.getIotConfigurationDesigDTO(); + }else { + configurationDesigDTO = iotVisualDesignService.getDetailByBoardManageId(String.valueOf(dto.getTemplateId())); + } + if(ObjectUtil.isNotNull(configurationDesigDTO)){ + configurationDesigDTO.setId(null); + configurationDesigDTO.setBoardManageId(entity.getId()); + configurationDesigDTO.setPageName(dto.getName()); + configurationDesigDTO.setApiSetIds(null); + iotVisualDesignService.saveDto(configurationDesigDTO); + } + } + return new Result().ok("添加成功!"); + } + + @Override + public PageData pageIotBoardManageDTO(Map params) { + PageData pageData = this.getPageData(params, IotVisualManageDTO.class); + pageData.getList().forEach(temp->{ + SysMenuDTO sysMenuDTO = sysMenuService.getByUrl("scada/preview?id=" + temp.getId()); + if (ObjectUtil.isNotNull(sysMenuDTO)) { + temp.setSysMenuDTO(sysMenuDTO); + } + IotVisualManageController.checkParam(temp); + + }); + + return pageData; + } + + @Override + public void updateIotBoardManageDTO(IotVisualManageDTO dto) { + //更新看板管理信息 + IotVisualManageEntity entity = ConvertUtils.sourceToTarget(dto, IotVisualManageEntity.class); + updateById(entity); +// QueryWrapper wrapper = new QueryWrapper(); +// wrapper.eq("board_manage_id",entity.getId()); +// IotVisualDesignEntity desigEntity = iotConfigurationDesigDao.selectOneByQuery(wrapper); +// desigEntity.setPageName(entity.getName()); + + if(ObjectUtil.isNotNull(dto.getSysMenuDTO())&&StringUtils.isNotEmpty(dto.getSysMenuDTO().getName())){ + //更新菜单信息 + SysMenuDTO menuDTO = dto.getSysMenuDTO(); + if (ObjectUtil.isNotNull(menuDTO.getId())) { + sysMenuService.update(menuDTO); + } else { + //新增菜单信息 + menuDTO.setType(0); + menuDTO.setOpenStyle(0); + menuDTO.setSaView(1); + menuDTO.setUrl("scada/preview?id=" + entity.getId()); + SysMenuEntity sysMenuEntity = ConvertUtils.sourceToTarget(menuDTO, SysMenuEntity.class); + sysMenuService.save(sysMenuEntity); + sysLanguageService.saveOrUpdate("sys_menu", sysMenuEntity.getId(), "name", sysMenuEntity.getName(), HttpContextUtils.getLanguage()); + + //将菜单分配给对应的租户/企业下的默认角色 + SysRoleDTO sysRoleDTO = sysRoleService.getDefaultRole(new HashMap<>(1)); + if (ObjectUtil.isNull(sysRoleDTO)) return; + SysRoleMenuEntity sysRoleMenuEntity = new SysRoleMenuEntity(); + sysRoleMenuEntity.setRoleId(sysRoleDTO.getId()); + sysRoleMenuEntity.setMenuId(sysMenuEntity.getId()); + sysRoleMenuService.save(sysRoleMenuEntity); + } + } else { + List entityList = mapper.selectListByQuery(QueryWrapper.create().in(IotVisualManageEntity::getId, entity.getId())); + List urlList = entityList.stream().map(item -> "scada/preview?id=" + item.getId()).collect(Collectors.toList()); + if(CollectionUtil.isNotEmpty(urlList)){ + List sysMenuDTOList = sysMenuService.getByUrlList(urlList); + if (CollectionUtil.isNotEmpty(sysMenuDTOList)) { + List menuIdList = sysMenuDTOList.stream().map(SysMenuDTO::getId).collect(Collectors.toList()); + sysRoleMenuDao.deleteByMenuIds(menuIdList); + //删除菜单表 + sysMenuService.batchDelete((Long[]) menuIdList.toArray()); + sysLanguageDao.deleteByQuery(QueryWrapper.create().in(SysLanguageEntity::getTableId, menuIdList)); + } + } + } + } + + + @Override + @Transactional + public Result deleteIotBoardManageDTO(Long[] ids) { + List entityList = mapper.selectListByQuery(QueryWrapper.create().in(IotVisualManageEntity::getId, ids)); + //删除角色与菜单的关联表 + List urlList = entityList.stream().map(item -> "scada/preview?id=" + item.getId()).collect(Collectors.toList()); + List sysMenuDTOList = sysMenuService.getByUrlList(urlList); + if (CollectionUtil.isNotEmpty(sysMenuDTOList)) { +// List menuIdList = sysMenuDTOList.stream().map(SysMenuDTO::getId).collect(Collectors.toList()); +// sysRoleMenuDao.deleteByMenuIds(menuIdList); +// //删除菜单表 +// sysMenuService.removeByIds(menuIdList); +// sysLanguageDao.deleteByQuery(QueryWrapper.create().in(SysLanguageEntity::getTableId, menuIdList)); + } + //删除大屏管理表 + batchDelete(ids); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.in("board_manage_id",ids); + iotConfigurationDesignDao.deleteByQuery(wrapper); + return new Result().ok("删除成功"); + } + + @Override + public IotVisualManageDTO getIotBoardManageDTO(Long id) { + IotVisualManageDTO data =this.getByIdAs(id, IotVisualManageDTO.class); + //id 页面id为。组态设计详情id + SysMenuDTO sysMenuDTO = sysMenuService.getByUrl("scada/preview?id=" + data.getId()); + + if (ObjectUtil.isNotNull(sysMenuDTO)) { + data.setSysMenuDTO(sysMenuDTO); + } + return data; + } + + + + @Override + public List importJson(MultipartFile file, HttpServletRequest request) { + List resultErrorList = new ArrayList<>(); + + String jsonString = JsonProcessingUtils.readJson(file); + List iotGroupList = JSON.parseObject(jsonString, new TypeReference<>() { + }); + if (CollectionUtil.isEmpty(iotGroupList)) { + throw new SysException("导入json为空,请检查json后再进行导入"); + } + for (IotVisualManageDTO temp : iotGroupList) { + temp.setTemplateId(Long.toString(temp.getId())); + if(ErrorCode.INTERNAL_SERVER_ERROR==this.saveIotBoardManageDTO(temp).getCode()){ + resultErrorList.add(temp); + }; + } + return resultErrorList; + } + + @Override + public List getAllTemplate() { + QueryColumn is_default = column("is_default"); + QueryColumn tenant_code = column("tenant_code"); + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("is_template", true); + UserDetail userDetail = SecurityUser.getUser(); + Long currentTenantCode = TenantContext.getTenantCode(userDetail); + if(!Objects.equals(userDetail.getSuperAdmin(), SuperAdminEnum.YES.value()) + || !Objects.equals(currentTenantCode, userDetail.getTenantCode())) { + wrapper.and(is_default.eq(0).or(tenant_code.in(tenantSubsetUtil.paramsAddTenantCodeList(true)))); + } + List iotVisualManageDTOS = ConvertUtils.sourceToTarget(mapper.selectListByQuery(wrapper), IotVisualManageDTO.class); + return iotVisualManageDTOS.stream().sorted(Comparator.comparing(IotVisualManageDTO::getCreateDate).reversed()).collect(Collectors.toList()); + } + + @Override + public Set getAllType() { + Set result = new HashSet<>(); + QueryWrapper wrapper = new QueryWrapper(); + UserDetail userDetail = SecurityUser.getUser(); + Long currentTenantCode = TenantContext.getTenantCode(userDetail); + wrapper.eq("tenant_code",currentTenantCode); + wrapper.select("type"); + this.mapper.selectListByQuery(wrapper).forEach(temp->{ + result.add(temp.getType()); + }); + return result; + } + + @Override + @Transactional + public Result copy(Long id) { + IotVisualManageDTO data =this.getByIdAs(id, IotVisualManageDTO.class); + String name = data.getName()+"_COPY"+UUID.randomUUID().toString().substring(1,5); + data.setId(null); + data.setName(name); + this.saveDto(data); + IotVisualDesignDTO desigDTO = iotVisualDesignService.getDetailByBoardManageId(String.valueOf(id)); + if(ObjectUtil.isNotNull(desigDTO)){ + desigDTO.setBoardManageId(data.getId()); + desigDTO.setId(null); + desigDTO.setPageName(desigDTO.getPageName()+"_COPY"+UUID.randomUUID().toString().substring(1,5)); + iotVisualDesignService.saveDto(desigDTO); + } + return new Result().ok("复制成功"); + } + + @Override + public List listIotBoardManageDTO(Map params) { + String val =""; + List list = this.listAs(params, IotVisualManageDTO.class); + list.forEach(temp->{ + IotVisualDesignDTO desigDTO = iotVisualDesignService.getDetailByBoardManageId(temp.getId().toString()); + if(ObjectUtil.isNotNull(desigDTO)){ + JSONObject object = JSONObject.parseObject(desigDTO.getPictureData()); + JSONArray object1 = JSONArray.parseArray(JSONObject.toJSONString(object.get("nodes"))); + JSONArray object2 = new JSONArray(); + object1.parallelStream().forEach(info->{ + JSONObject o1 = JSON.parseObject(info.toString()); + JSONObject o2 = JSONObject.parseObject(o1.getString("properties")); + o2.put("dynamic",JSONObject.parseObject(val)); + o1.put("properties",o2); + object2.add(o1); + }); + object.put("nodes",object2); + desigDTO.setPictureData(JSONObject.toJSONString(object)); + desigDTO.setApiSetIds(""); + desigDTO.setIotThingApiDTOList(Lists.newArrayList()); + temp.setIotConfigurationDesigDTO(desigDTO); + } + }); + return list; + } +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/component/service/impl/IotVisualComponentServiceImpl.java b/modules/visual-design/src/main/java/com/thing/visual/component/service/impl/IotVisualComponentServiceImpl.java index 2fd6725..9511ef6 100644 --- a/modules/visual-design/src/main/java/com/thing/visual/component/service/impl/IotVisualComponentServiceImpl.java +++ b/modules/visual-design/src/main/java/com/thing/visual/component/service/impl/IotVisualComponentServiceImpl.java @@ -77,7 +77,7 @@ public class IotVisualComponentServiceImpl extends BaseServiceImpl getInfoByGroupIds(List groupIds) { QueryWrapper wrapper = new QueryWrapper(); - wrapper.eq( "group_id", groupIds); + wrapper.in( "group_id", groupIds); return this.mapper.selectListByQuery(wrapper); } diff --git a/modules/visual-design/src/main/java/com/thing/visual/configuration/controller/IotVisualDesignController.java b/modules/visual-design/src/main/java/com/thing/visual/configuration/controller/IotVisualDesignController.java new file mode 100644 index 0000000..2af446d --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/configuration/controller/IotVisualDesignController.java @@ -0,0 +1,74 @@ +package com.thing.visual.configuration.controller; + +import com.thing.common.core.annotation.LogOperation; +import com.thing.common.core.validator.ValidatorUtils; +import com.thing.common.core.validator.group.AddGroup; +import com.thing.common.core.validator.group.DefaultGroup; +import com.thing.common.core.validator.group.UpdateGroup; +import com.thing.common.core.web.response.Result; +import com.thing.visual.configuration.dto.IotVisualDesignDTO; +import com.thing.visual.configuration.service.IotVisualDesignService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Parameters; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + + +/** +* 组态设计管理 +* +* @author xc +* @since 3.0 2023-05-29 +*/ +@RestController +@RequestMapping("v2/visual/design") +@Tag(name="新组态设计管理") +public class IotVisualDesignController { + @Autowired + private IotVisualDesignService iotVisualDesignService; + + @GetMapping("{id}") + @Operation(summary="信息") + public Result get(@PathVariable("id") Long id){ + IotVisualDesignDTO data = iotVisualDesignService.getIotConfigurationDesigDTOById(id); + + return new Result().ok(data); + } + + @PostMapping + @Operation(summary="保存") + @LogOperation("保存 boardManageId必传") + public Result save(@RequestBody IotVisualDesignDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + + iotVisualDesignService.saveIotConfigurationDesigDTO(dto); + + return new Result(); + } + + @PutMapping + @Operation(summary="修改") + @LogOperation("修改") + public Result update(@RequestBody IotVisualDesignDTO dto){ + //效验数据 + ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class); + + iotVisualDesignService.updateIotConfigurationDesigDTO(dto); + + return new Result(); + } + + @GetMapping("getDetailByBoardManageId") + @Operation(summary="获取组态设计信息,根据组态看板id") + @Parameters({ + @Parameter(name ="boardManageId", description = "组态看板id"), + }) + public Result getDetailByBoardManageId(String boardManageId){ + IotVisualDesignDTO data = iotVisualDesignService.getDetailByBoardManageId(boardManageId); + + return new Result().ok(data); + } +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/configuration/dto/IotVisualDesignDTO.java b/modules/visual-design/src/main/java/com/thing/visual/configuration/dto/IotVisualDesignDTO.java new file mode 100644 index 0000000..a33be77 --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/configuration/dto/IotVisualDesignDTO.java @@ -0,0 +1,43 @@ +package com.thing.visual.configuration.dto; + +import com.thing.thing.api.dto.IotThingApiDTO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serial; +import java.io.Serializable; +import java.util.List; + +/** +* 组态设计管理 +* +* @author xc +* @since 3.0 2023-05-29 +*/ +@Data +@Schema( name= "组态设计管理") +public class IotVisualDesignDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + @Schema(description = "主键id") + private Long id; + @Schema(description = "组态看板id") + private Long boardManageId; + + @Schema(description = "页面名称") + private String pageName; + + @Schema(description = "图数据") + private String pictureData; + @Schema(description = "缩略图") + private String thumbnailUrl; + @Schema(description = "超级apiIds,多个id以英文逗号,分割") + private String apiSetIds; + @Schema(description = "超级api详细信息集合,用于组态设计编辑/查看,回显使用") + private List iotThingApiDTOList; + public String previewUrl; + + @Schema(description = "boardType") + private String boardType; +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/configuration/entity/IotVisualDesignEntity.java b/modules/visual-design/src/main/java/com/thing/visual/configuration/entity/IotVisualDesignEntity.java new file mode 100644 index 0000000..c521833 --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/configuration/entity/IotVisualDesignEntity.java @@ -0,0 +1,51 @@ +package com.thing.visual.configuration.entity; + +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.Table; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +/** + * 组态设计管理 + * + * @author xc + * @since 3.0 2023-05-29 + */ +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper=false) +@Table("iot_visual_design") +public class IotVisualDesignEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @Id + private Long id; + /** + * 组态看板id + */ + private Long boardManageId; + + /** + * 页面名称 + */ + private String pageName; + + /** + * 图数据 + */ + private String pictureData; + + /** + *超级apiid,多个id以英文逗号,分割 + */ + private String apiSetIds; + + /** + * boardType + */ + private String boardType; +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/configuration/mapper/IotVisualDesignMapper.java b/modules/visual-design/src/main/java/com/thing/visual/configuration/mapper/IotVisualDesignMapper.java new file mode 100644 index 0000000..a66cdd5 --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/configuration/mapper/IotVisualDesignMapper.java @@ -0,0 +1,16 @@ +package com.thing.visual.configuration.mapper; + +import com.thing.common.orm.mapper.PowerBaseMapper; +import com.thing.visual.configuration.entity.IotVisualDesignEntity; +import org.apache.ibatis.annotations.Mapper; + +/** +* 组态设计管理 +* +* @author xc +* @since 3.0 2023-05-29 +*/ +@Mapper +public interface IotVisualDesignMapper extends PowerBaseMapper { + +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/configuration/service/IotVisualDesignService.java b/modules/visual-design/src/main/java/com/thing/visual/configuration/service/IotVisualDesignService.java new file mode 100644 index 0000000..8b5e97a --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/configuration/service/IotVisualDesignService.java @@ -0,0 +1,28 @@ +package com.thing.visual.configuration.service; + +import com.thing.common.orm.service.IBaseService; +import com.thing.visual.configuration.dto.IotVisualDesignDTO; +import com.thing.visual.configuration.entity.IotVisualDesignEntity; + +import java.util.List; + +/** + * 组态设计管理 + * + * @author xc + * @since 3.0 2023-05-29 + */ +public interface IotVisualDesignService extends IBaseService { + + IotVisualDesignDTO getDetailByBoardManageId(String boardManageId); + + + List getDetailsByBoardManageIds(List ids); + + + void saveIotConfigurationDesigDTO(IotVisualDesignDTO dto); + + void updateIotConfigurationDesigDTO(IotVisualDesignDTO dto); + + IotVisualDesignDTO getIotConfigurationDesigDTOById(Long id); +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/configuration/service/impl/IotVisualDesignServiceImpl.java b/modules/visual-design/src/main/java/com/thing/visual/configuration/service/impl/IotVisualDesignServiceImpl.java new file mode 100644 index 0000000..246cd2b --- /dev/null +++ b/modules/visual-design/src/main/java/com/thing/visual/configuration/service/impl/IotVisualDesignServiceImpl.java @@ -0,0 +1,140 @@ +package com.thing.visual.configuration.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.mybatisflex.core.query.QueryWrapper; +import com.thing.common.core.utils.ConvertUtils; +import com.thing.common.orm.service.impl.BaseServiceImpl; +import com.thing.thing.api.dto.IotThingApiDTO; +import com.thing.thing.api.mapper.IotThingApiMapper; +import com.thing.visual.board.dto.IotVisualManageDTO; +import com.thing.visual.board.entity.IotVisualManageEntity; +import com.thing.visual.board.service.IotVisualManageService; +import com.thing.visual.configuration.dto.IotVisualDesignDTO; +import com.thing.visual.configuration.entity.IotVisualDesignEntity; +import com.thing.visual.configuration.mapper.IotVisualDesignMapper; +import com.thing.visual.configuration.service.IotVisualDesignService; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 组态设计管理 + * + * @author xc + * @since 3.0 2023-05-29 + */ +@Service +public class IotVisualDesignServiceImpl extends BaseServiceImpl implements IotVisualDesignService { + + @Autowired + private IotVisualManageService iotVisualManageService; + @Autowired + IotThingApiMapper iotThingApiDao; + @Override + public QueryWrapper getWrapper(Map params){ + QueryWrapper wrapper = new QueryWrapper(); + return wrapper; + } + @Override + public IotVisualDesignDTO getDetailByBoardManageId(String boardManageId) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("board_manage_id",Long.parseLong(boardManageId)); + IotVisualDesignEntity entity = this.mapper.selectOneByQuery(wrapper); + if(ObjectUtil.isNotNull(entity)){ + IotVisualDesignDTO dto = ConvertUtils.convertWithTypeAdapt(entity, IotVisualDesignDTO.class); + if(StringUtils.isNotBlank(entity.getApiSetIds())){ + List apiIdList = Arrays.stream(entity.getApiSetIds().split(",")) + .map(Long::valueOf) + .collect(Collectors.toList()); + if(!apiIdList.isEmpty()){ + dto.setIotThingApiDTOList( ConvertUtils.sourceToTarget(iotThingApiDao.selectListByIds(apiIdList), IotThingApiDTO.class)); + } + } + IotVisualManageEntity manageDTO = iotVisualManageService.getById(Long.parseLong(boardManageId)); + dto.setThumbnailUrl(manageDTO.getThumbnailUrl()); + dto.setPreviewUrl(manageDTO.getPreviewUrl()); + return dto; + } + return null; + } + + @Override + public List getDetailsByBoardManageIds(List ids) { + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.in("board_manage_id",ids); + List entitys = mapper.selectListByQuery(wrapper); + if(ObjectUtil.isNotNull(entitys)){ + return ConvertUtils.sourceToTarget(entitys, IotVisualDesignDTO.class); + } + return null; + } + + @Override + @Transactional + public void saveIotConfigurationDesigDTO(IotVisualDesignDTO dto) { + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("board_manage_id",dto.getBoardManageId()); + IotVisualDesignEntity entity = mapper.selectOneByQuery(wrapper); + if(ObjectUtil.isNotNull(entity)){ + dto.setId(entity.getId()); + this.updateDto(dto); + }else { + this.saveDto(dto); + } + this.updateIotBoardManageDTO(dto); + } + + @Override + @Transactional + public void updateIotConfigurationDesigDTO(IotVisualDesignDTO dto) { + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("board_manage_id",dto.getBoardManageId()); + IotVisualDesignEntity entity = this.mapper.selectOneByQuery(wrapper); + if(ObjectUtil.isNotNull(entity)){ + dto.setId(entity.getId()); + this.updateDto(dto); + }else { + this.saveDto(dto); + } + this.updateIotBoardManageDTO(dto); + } + + @Override + public IotVisualDesignDTO getIotConfigurationDesigDTOById(Long id) { + + QueryWrapper wrapper = new QueryWrapper(); + wrapper.eq("board_manage_id",id); + IotVisualDesignDTO data = this.getOneAs(wrapper, IotVisualDesignDTO.class); + if(ObjectUtil.isNotEmpty(data)){ + if(StringUtils.isNotBlank(data.getApiSetIds())){ + List apiIds = Arrays.asList(data.getApiSetIds().split(",")); + if(!apiIds.isEmpty()){ + data.setIotThingApiDTOList( ConvertUtils.sourceToTarget(iotThingApiDao.selectListByIds(apiIds), IotThingApiDTO.class)); + } + } + + } + return data; + } + + + /** + * 修改组态看板缩略图字段 + * @param dto + */ + public void updateIotBoardManageDTO(IotVisualDesignDTO dto){ + IotVisualManageDTO iotVisualManageDTO = new IotVisualManageDTO(); + iotVisualManageDTO.setId(dto.getBoardManageId()); + iotVisualManageDTO.setThumbnailUrl(dto.getThumbnailUrl()); + iotVisualManageDTO.setPreviewUrl(dto.getPreviewUrl()); + iotVisualManageService.updateDto(iotVisualManageDTO); + } +} \ No newline at end of file diff --git a/modules/visual-design/src/main/java/com/thing/visual/group/controller/IotVisualGroupController.java b/modules/visual-design/src/main/java/com/thing/visual/group/controller/IotVisualGroupController.java index 141d4f0..a8394d6 100644 --- a/modules/visual-design/src/main/java/com/thing/visual/group/controller/IotVisualGroupController.java +++ b/modules/visual-design/src/main/java/com/thing/visual/group/controller/IotVisualGroupController.java @@ -12,6 +12,7 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.MapUtils; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -88,10 +89,19 @@ public class IotVisualGroupController { return new Result<>(); } - @DeleteMapping("group") + @PostMapping("deleteGroup") @Operation(summary="删除 这个接口删除一级左侧列表里面的数据,传入组名称") - public Result deleteGroup(@RequestParam(required = false) String name, @RequestParam(required = true) String type){ - return new Result().ok(iotVisualGroupService.deleteGroup(name,type)); + public Result deleteGroup(@RequestBody Map param){ + String name = MapUtils.getString(param,"name"); + String type = MapUtils.getString(param,"type"); + Result result = new Result(); + try { + result.setCode(200); + result.setMsg(iotVisualGroupService.deleteGroup(name,type)); + } catch (Exception e) { + result.setCode(-1); + } + return result; } diff --git a/modules/visual-design/src/main/java/com/thing/visual/group/service/impl/IotVisualGroupServiceImpl.java b/modules/visual-design/src/main/java/com/thing/visual/group/service/impl/IotVisualGroupServiceImpl.java index a4afe8f..529c0b8 100644 --- a/modules/visual-design/src/main/java/com/thing/visual/group/service/impl/IotVisualGroupServiceImpl.java +++ b/modules/visual-design/src/main/java/com/thing/visual/group/service/impl/IotVisualGroupServiceImpl.java @@ -83,13 +83,11 @@ public class IotVisualGroupServiceImpl extends BaseServiceImpl sortInfo = this.getNameSort(dto.getName(),dto.getType()); if(dto.getOldBusinessName().equals(dto.getBusinessName())){ moveItem(sortInfo,dto.getOldBsSort()-1,dto.getBsSort()-1,null); - //重置sort字段 - updateSortValues(sortInfo); }else { moveItem(sortInfo,dto.getOldBsSort()-1,dto.getBsSort()-1,dto.getBusinessName()); - //重置sort字段 - updateSortValues(sortInfo); } + //重置sort字段 + updateSortValues(sortInfo); sortInfo.forEach(temp->{ if(dto.getBusinessName().equals(temp.getName())){ UpdateChain.of(IotVisualGroupEntity.class)