Browse Source

Merge pull request 'master' (#32) from master into V3

Reviewed-on: http://git.lrdaiot.cn:9000/thing/thing_api/pulls/32
qingyuan_dev_new
夏超 2 years ago
parent
commit
147f258c77
  1. 2
      modules/carbon-track/src/main/java/com/thing/carbontrack/event/standardcal/listener/ProductionResultListener.java
  2. 2
      modules/carbon-track/src/main/java/com/thing/carbontrack/productionResult/service/impl/IotCarbonProductionResultServiceImpl.java
  3. 6
      modules/carbon-track/src/main/java/com/thing/carbontrack/screen/service/impl/IotCarbonScreenServiceImpl.java
  4. 2
      modules/configuration/src/main/java/com/thing/configuration/newmaterial/service/impl/IotNewSourceMaterialServiceImpl.java
  5. 4
      modules/equipment/src/main/java/com/thing/eq/eqbxwx/controller/EqWxPlanController.java
  6. 5
      modules/equipment/src/main/java/com/thing/eq/eqbxwx/service/impl/EqBxServiceImpl.java
  7. 2
      modules/equipment/src/main/java/com/thing/eq/eqbxwx/service/impl/EqWxPlanServiceImpl.java
  8. 4
      modules/equipment/src/main/java/com/thing/eq/eqby/dto/EqByDTO.java
  9. 4
      modules/equipment/src/main/java/com/thing/eq/eqby/entity/EqByDetailEntity.java
  10. 33
      modules/equipment/src/main/java/com/thing/eq/eqby/service/impl/EqByServiceImpl.java
  11. 5
      modules/equipment/src/main/java/com/thing/eq/eqcheck/dto/EqPatrolCheckRecordDTO.java
  12. 1
      modules/equipment/src/main/java/com/thing/eq/eqcheck/mapper/EqSpotCheckRecordMapper.java
  13. 3
      modules/equipment/src/main/java/com/thing/eq/eqcheck/service/impl/EqPatrolCheckPlanServiceImpl.java
  14. 10
      modules/equipment/src/main/java/com/thing/eq/eqcheck/service/impl/EqPatrolCheckRecordServiceImpl.java
  15. 19
      modules/equipment/src/main/java/com/thing/eq/eqcheck/service/impl/EqSpotCheckRecordServiceImpl.java
  16. 4
      modules/equipment/src/main/java/com/thing/eq/eqpartrecord/entity/EqPartRecordEntity.java
  17. 12
      modules/equipment/src/main/java/com/thing/eq/equsergroup/controller/EqUserGroupController.java
  18. 25
      modules/equipment/src/main/java/com/thing/eq/equsergroup/dto/UserInfoDTO.java
  19. 3
      modules/equipment/src/main/java/com/thing/eq/equsergroup/service/EqUserGroupService.java
  20. 26
      modules/equipment/src/main/java/com/thing/eq/equsergroup/service/impl/EqUserGroupServiceImpl.java
  21. 38
      modules/equipment/src/main/resources/mapper/eqcheck/EqSpotCheckRecordMapper.xml
  22. 155
      modules/visual-design/src/main/java/com/thing/visual/board/controller/IotVisualManageController.java
  23. 56
      modules/visual-design/src/main/java/com/thing/visual/board/dto/IotVisualManageDTO.java
  24. 52
      modules/visual-design/src/main/java/com/thing/visual/board/entity/IotVisualManageEntity.java
  25. 28
      modules/visual-design/src/main/java/com/thing/visual/board/excel/IotVisualManageExcel.java
  26. 17
      modules/visual-design/src/main/java/com/thing/visual/board/mapper/IotVisualManageMapper.java
  27. 42
      modules/visual-design/src/main/java/com/thing/visual/board/service/IotVisualManageService.java
  28. 367
      modules/visual-design/src/main/java/com/thing/visual/board/service/impl/IotVisualManageServiceImpl.java
  29. 2
      modules/visual-design/src/main/java/com/thing/visual/component/service/impl/IotVisualComponentServiceImpl.java
  30. 74
      modules/visual-design/src/main/java/com/thing/visual/configuration/controller/IotVisualDesignController.java
  31. 44
      modules/visual-design/src/main/java/com/thing/visual/configuration/dto/IotVisualDesignDTO.java
  32. 45
      modules/visual-design/src/main/java/com/thing/visual/configuration/entity/IotVisualDesignEntity.java
  33. 16
      modules/visual-design/src/main/java/com/thing/visual/configuration/mapper/IotVisualDesignMapper.java
  34. 28
      modules/visual-design/src/main/java/com/thing/visual/configuration/service/IotVisualDesignService.java
  35. 146
      modules/visual-design/src/main/java/com/thing/visual/configuration/service/impl/IotVisualDesignServiceImpl.java
  36. 16
      modules/visual-design/src/main/java/com/thing/visual/group/controller/IotVisualGroupController.java
  37. 6
      modules/visual-design/src/main/java/com/thing/visual/group/service/impl/IotVisualGroupServiceImpl.java

2
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";

2
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<SimpleProductionCarbon> result = mapper.getLatestCarbonRank(keywords, carbonTypes, start, end);

6
modules/carbon-track/src/main/java/com/thing/carbontrack/screen/service/impl/IotCarbonScreenServiceImpl.java

@ -87,7 +87,11 @@ public class IotCarbonScreenServiceImpl implements IotCarbonScreenService {
//常熟开关厂企业物编码被搞乱了临时处理
if(tenantCode.equals(463020701385752576L)){
return tsKvService.findTsKvByCodeAndAttrs("CO_" + 91320581142037132L+"W", attrCodes, startTs, endTs, true);
}else {
}
else if(tenantCode.equals(460730634407510016L)){
return tsKvService.findTsKvByCodeAndAttrs("G_001", attrCodes, startTs, endTs, true);
}
else {
return tsKvService.findTsKvByCodeAndAttrs("CO_" + tenantCode, attrCodes, startTs, endTs, true);
}
}

2
modules/configuration/src/main/java/com/thing/configuration/newmaterial/service/impl/IotNewSourceMaterialServiceImpl.java

@ -235,7 +235,7 @@ public class IotNewSourceMaterialServiceImpl extends BaseServiceImpl<IotNewSourc
public List<IotNewSourceMaterialEntity> getInfoByGroupIds(List<Long> groupIds) {
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq( "group_id", groupIds);
wrapper.in( "group_id", groupIds);
return this.mapper.selectListByQuery(wrapper);
}
}

4
modules/equipment/src/main/java/com/thing/eq/eqbxwx/controller/EqWxPlanController.java

@ -187,8 +187,8 @@ public class EqWxPlanController {
throw new SysException("维修计划不存在");
}
//
// EqWxInfoRes eqWxInfoRes = new EqWxInfoRes();
// BeanUtils.copyProperties(data, eqWxInfoRes);
EqWxInfoRes eqWxInfoRes = new EqWxInfoRes();
BeanUtils.copyProperties(data, eqWxInfoRes);
// 查询设备信息
ThingDTO thingDTO = new ThingDTO();
ThingDTO thingInfo = iotThingBaseInfoService.getThingInfo(thingDTO, data.getThingId(), null, "1", String.valueOf(relationTypeId));

5
modules/equipment/src/main/java/com/thing/eq/eqbxwx/service/impl/EqBxServiceImpl.java

@ -6,6 +6,7 @@ import com.mybatisflex.core.query.QueryWrapper;
import com.thing.common.core.constants.Constant;
import com.thing.common.core.web.response.PageData;
import com.thing.common.orm.service.impl.BaseServiceImpl;
import com.thing.common.orm.utils.IdGenerator;
import com.thing.eq.eqbxwx.dto.EqBxDTO;
import com.thing.eq.eqbxwx.dto.EqWxPlanAddDTO;
import com.thing.eq.eqbxwx.entity.EqBxEntity;
@ -257,8 +258,8 @@ public class EqBxServiceImpl extends BaseServiceImpl<EqBxMapper, EqBxEntity> imp
dto.setBxNo(lastNo);
dto.setTenantCode(UserContext.getRealTenantCode());
// Long eqBxId = IdWorker.getId();
// dto.setId(eqBxId);
Long eqBxId = IdGenerator.nextId();
dto.setId(eqBxId);
if ("1".equals(dto.getInWx())) {
dto.setWxStatus("1");

2
modules/equipment/src/main/java/com/thing/eq/eqbxwx/service/impl/EqWxPlanServiceImpl.java

@ -297,7 +297,7 @@ public class EqWxPlanServiceImpl extends BaseServiceImpl<EqWxPlanMapper, EqWxPla
replacementDTO.setWxPlanId(dto.getId());
});
}
eqWxReplacementService.saveDto(ConvertUtils.sourceToTarget(replacementDTOS, EqWxReplacementEntity.class));
eqWxReplacementService.saveBatch(ConvertUtils.sourceToTarget(replacementDTOS, EqWxReplacementEntity.class));
}
// 重新赋值备件的各个使用总数

4
modules/equipment/src/main/java/com/thing/eq/eqby/dto/EqByDTO.java

@ -80,4 +80,8 @@ public class EqByDTO extends BaseDTO implements Serializable {
@JsonFormat(pattern = DateTimeUtils.DATE_TIME_PATTERN_STR)
private Date updateDate;
private Long deptId;
private Long tenantCode;
}

4
modules/equipment/src/main/java/com/thing/eq/eqby/entity/EqByDetailEntity.java

@ -1,7 +1,9 @@
package com.thing.eq.eqby.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import com.mybatisflex.core.keygen.KeyGenerators;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -19,7 +21,7 @@ import java.util.Date;
public class EqByDetailEntity {
private static final long serialVersionUID = 1L;
@Id
@Id(keyType = KeyType.Generator,value = KeyGenerators.snowFlakeId)
private Long id;
/**
* 保养id

33
modules/equipment/src/main/java/com/thing/eq/eqby/service/impl/EqByServiceImpl.java

@ -37,6 +37,7 @@ import com.thing.sys.biz.service.SysDictDataService;
import com.thing.sys.biz.service.SysDictTypeService;
import com.thing.sys.biz.service.SysUserService;
import com.thing.sys.security.context.TenantContext;
import com.thing.sys.security.context.UserContext;
import com.thing.sys.security.domain.SecurityUser;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
@ -239,19 +240,11 @@ public class EqByServiceImpl extends BaseServiceImpl<EqByMapper, EqByEntity> imp
// Long id = IdWorker.getId();
// dto.setId(id);
dto.setCreator(null);
dto.setCreateDate(null);
dto.setCreateDate(new Date());
dto.setUpdater(null);
dto.setUpdateDate(null);
//部位保养明细记录
if (CollectionUtil.isNotEmpty(dto.getEqByDetailDTOList())) {
for (EqByDetailDTO eqByDetailDTO : dto.getEqByDetailDTOList()) {
EqByTemplateDetailDTO detailDTO = eqByTemplateDetailService.getByIdAs(eqByDetailDTO.getByTemplateDetailId(),EqByTemplateDetailDTO.class);
BeanUtils.copyProperties(detailDTO, eqByDetailDTO);
//调整
// eqByDetailDTO.setId(IdWorker.getId());
// eqByDetailDTO.setById(id);
}
}
dto.setUpdateDate(new Date());
dto.setTenantCode(TenantContext.getTenantCode(SecurityUser.getUser()));
//当前时间作为保养执行时间
Long currentTime = System.currentTimeMillis();
if (dto.getByStartTime().getTime() >= eqByPlanDTO.getPlanEndTime().getTime()){
@ -316,13 +309,21 @@ public class EqByServiceImpl extends BaseServiceImpl<EqByMapper, EqByEntity> imp
dto.setByNo(lastNo);
//保存保养记录
saveDto(dto);
//部位保养明细记录
if (CollectionUtil.isNotEmpty(dto.getEqByDetailDTOList())) {
for (EqByDetailDTO eqByDetailDTO : dto.getEqByDetailDTOList()) {
EqByTemplateDetailDTO detailDTO = eqByTemplateDetailService.getByIdAs(eqByDetailDTO.getByTemplateDetailId(),EqByTemplateDetailDTO.class);
eqByDetailDTO.setById(dto.getId());
BeanUtils.copyProperties(detailDTO, eqByDetailDTO);
}
}
//保存保养明细记录
eqByDetailService.saveDto(ConvertUtils.sourceToTarget(dto.getEqByDetailDTOList(), EqByDetailEntity.class));
List<EqByDetailEntity> eqByDetailEntities = ConvertUtils.sourceToTarget(dto.getEqByDetailDTOList(), EqByDetailEntity.class);
eqByDetailService.saveBatch(eqByDetailEntities);
//更新库存 调整
// updateStock(id, dto);
updateStock(dto.getId(), dto);
//更新部件更换记录
eqPartRecordService.saveDto(ConvertUtils.sourceToTarget(dto.getThingParts(), EqPartRecordEntity.class));
eqPartRecordService.saveBatch(ConvertUtils.sourceToTarget(dto.getThingParts(), EqPartRecordEntity.class));
}

5
modules/equipment/src/main/java/com/thing/eq/eqcheck/dto/EqPatrolCheckRecordDTO.java

@ -71,4 +71,9 @@ public class EqPatrolCheckRecordDTO extends BaseDTO implements Serializable {
@Schema(description = "设备id")
private Long thingId;
@Schema(description = "创建时间")
private Date createDate;
@Schema(description = "更新时间")
private Date updateDate;
}

1
modules/equipment/src/main/java/com/thing/eq/eqcheck/mapper/EqSpotCheckRecordMapper.java

@ -23,4 +23,5 @@ public interface EqSpotCheckRecordMapper extends PowerBaseMapper<EqSpotCheckReco
List<EqSpotCheckRecordDTO> searchRecord(@Param("params") Map<String, Object> params);
List<EqSpotCheckRecordDTO> searchRecordList(@Param("params")Map<String, Object> params);
}

3
modules/equipment/src/main/java/com/thing/eq/eqcheck/service/impl/EqPatrolCheckPlanServiceImpl.java

@ -535,6 +535,9 @@ public class EqPatrolCheckPlanServiceImpl extends BaseServiceImpl<EqPatrolCheckP
recordDTO.setTip(dto.getRemark());
recordDTO.setCheckTime(actCheckTime);
recordDTO.setPatrolCheckPlanId(checkPlanDTO.getId());
recordDTO.setTenantCode(TenantContext.getTenantCode(SecurityUser.getUser()));
recordDTO.setCreateDate(new Date());
recordDTO.setUpdateDate(new Date());
if (StringUtils.equals("0",checkPlanDTO.getType())){
recordDTO.setCheckPlanTime(DateTimeUtils.format(checkPlanDTO.getPlanStartTime(), DateTimeUtils.DATE_TIME_PATTERN_STR + " 至 " + DateTimeUtils.format(checkPlanDTO.getCheckEndTime(), DateTimeUtils.DATE_TIME_PATTERN_STR)));
}else{

10
modules/equipment/src/main/java/com/thing/eq/eqcheck/service/impl/EqPatrolCheckRecordServiceImpl.java

@ -8,6 +8,7 @@ import com.thing.common.core.utils.ConvertUtils;
import com.thing.common.orm.service.impl.BaseServiceImpl;
import com.thing.eq.checkresult.dto.CheckResultDTO;
import com.thing.eq.checkresult.service.CheckResultService;
import com.thing.eq.eqby.entity.EqByDetailEntity;
import com.thing.eq.eqcheck.dto.EqCheckSettingDTO;
import com.thing.eq.eqcheck.dto.EqPatrolCheckRecordDTO;
import com.thing.eq.eqcheck.dto.EqPatrolCheckRecordResDTO;
@ -97,7 +98,8 @@ public class EqPatrolCheckRecordServiceImpl extends BaseServiceImpl<EqPatrolChec
}
String lastNo = SerialNumberUnit.generateChildNumber(checkPlanEntity.getPatrolCheckPlanNo(), recordEntity.getPatrolCheckRecordNo());
eqPatrolCheckRecordDTO.setPatrolCheckRecordNo(lastNo);
saveDto(eqPatrolCheckRecordDTO);
EqPatrolCheckRecordEntity eqPatrolCheckRecordEntity = ConvertUtils.sourceToTarget(eqPatrolCheckRecordDTO, EqPatrolCheckRecordEntity.class);
save(eqPatrolCheckRecordEntity);
if (Objects.isNull(eqPatrolCheckRecordDTO)) {
throw new SysException("巡检结果保存失败");
@ -105,7 +107,7 @@ public class EqPatrolCheckRecordServiceImpl extends BaseServiceImpl<EqPatrolChec
if (eqPatrolCheckRecordDTO.getThingId() !=null){
eqScrapService.checkThingStatus(eqPatrolCheckRecordDTO.getThingId());
CheckResultDTO checkResult = new CheckResultDTO();
checkResult.setCheckRecordId(eqPatrolCheckRecordDTO.getId());
checkResult.setCheckRecordId(eqPatrolCheckRecordEntity.getId());
checkResult.setType("1");
checkResult.setThingId(eqPatrolCheckRecordDTO.getThingId());
checkResult.setCheckPlanId(eqPatrolCheckRecordDTO.getPatrolCheckPlanId());
@ -119,7 +121,7 @@ public class EqPatrolCheckRecordServiceImpl extends BaseServiceImpl<EqPatrolChec
eqScrapService.checkThingStatus(thingId);
CheckResultDTO checkResult = new CheckResultDTO();
checkResult.setCheckRecordId(eqPatrolCheckRecordDTO.getId());
checkResult.setCheckRecordId(eqPatrolCheckRecordEntity.getId());
checkResult.setType("1");
checkResult.setThingId(thingId);
checkResult.setCheckPlanId(eqPatrolCheckRecordDTO.getPatrolCheckPlanId());
@ -128,7 +130,7 @@ public class EqPatrolCheckRecordServiceImpl extends BaseServiceImpl<EqPatrolChec
}
}
return eqPatrolCheckRecordDTO.getId();
return eqPatrolCheckRecordEntity.getId();
}
@Override

19
modules/equipment/src/main/java/com/thing/eq/eqcheck/service/impl/EqSpotCheckRecordServiceImpl.java

@ -4,6 +4,7 @@ import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
import com.thing.common.core.exception.SysException;
import com.thing.common.core.utils.DateTimeUtils;
import com.thing.common.core.utils.PageUtils;
import com.thing.common.orm.service.impl.BaseServiceImpl;
import com.thing.eq.eqcheck.dto.EqSpotCheckRecordDTO;
import com.thing.eq.eqcheck.entity.EqSpotCheckPlanEntity;
@ -15,6 +16,7 @@ import com.thing.eq.eqmanager.service.EqScrapService;
import com.thing.eq.utils.SerialNumberUnit;
import com.thing.sys.security.context.TenantContext;
import com.thing.sys.security.domain.SecurityUser;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -60,9 +62,14 @@ public class EqSpotCheckRecordServiceImpl extends BaseServiceImpl<EqSpotCheckRec
int limit = Integer.parseInt(String.valueOf(params.get("limit")));
getParam(params);
Page<EqSpotCheckRecordDTO> eqSpotCheckPlanList = eqSpotCheckRecordDao.searchRecord(new Page<>(page, limit), params);
Page<EqSpotCheckRecordDTO> eqSpotCheckPlanList = new Page<>();
// Page<EqSpotCheckRecordDTO> eqSpotCheckPlanList = eqSpotCheckRecordDao.searchRecord(new Page<>(page, limit), params);
List<EqSpotCheckRecordDTO> eqSpotCheckPlanList1 = eqSpotCheckRecordDao.searchRecordList(params);
List<EqSpotCheckRecordDTO> eqSpotCheckRecordDTOS = PageUtils.startPage(eqSpotCheckPlanList1, page, limit);
eqSpotCheckPlanList.setRecords(eqSpotCheckRecordDTOS);
eqSpotCheckPlanList.setPageNumber(page);
eqSpotCheckPlanList.setPageSize(limit);
eqSpotCheckPlanList.setTotalRow(CollectionUtils.size(eqSpotCheckPlanList1));
return eqSpotCheckPlanList;
}
@ -145,10 +152,12 @@ public class EqSpotCheckRecordServiceImpl extends BaseServiceImpl<EqSpotCheckRec
String lastNo = SerialNumberUnit.generateChildNumber(checkPlanEntity.getSpotCheckNo(), spotCheckRecordEntity.getSpotCheckRecordNo());
dto.setSpotCheckRecordNo(lastNo);
dto.setCreateDate(new Date());
dto.setUpdateDate(new Date());
dto.setTenantCode(TenantContext.getTenantCode(SecurityUser.getUser()));
saveDto(dto);
checkPlanEntity.setLastCheckTime(dto.getCheckTime());
// checkPlanEntity.setLastCheckTime(dto.getCheckTime());
eqSpotCheckPlanService.updateById(checkPlanEntity);
}
}

4
modules/equipment/src/main/java/com/thing/eq/eqpartrecord/entity/EqPartRecordEntity.java

@ -1,7 +1,9 @@
package com.thing.eq.eqpartrecord.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import com.mybatisflex.core.keygen.KeyGenerators;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -22,7 +24,7 @@ public class EqPartRecordEntity {
/**
* id
*/
@Id
@Id(keyType = KeyType.Generator,value = KeyGenerators.snowFlakeId)
private Long id;
/**
* 更换数量

12
modules/equipment/src/main/java/com/thing/eq/equsergroup/controller/EqUserGroupController.java

@ -18,6 +18,7 @@ import com.thing.eq.eqby.service.EqByPlanService;
import com.thing.eq.eqcheck.dto.EqPatrolCheckPlanDTO;
import com.thing.eq.eqcheck.service.EqPatrolCheckPlanService;
import com.thing.eq.equsergroup.dto.EqUserGroupDTO;
import com.thing.eq.equsergroup.dto.UserInfoDTO;
import com.thing.eq.equsergroup.excel.EqUserGroupExcel;
import com.thing.eq.equsergroup.service.EqUserGroupService;
import com.thing.sys.security.context.TenantContext;
@ -90,6 +91,17 @@ public class EqUserGroupController {
return new Result<List<EqUserGroupDTO>>().ok(data);
}
@GetMapping("groupList")
@Operation(summary="用户组用户列表")
@Parameters({
@Parameter(name = "groupId", description = "组id")
})
// @RequiresPermissions("equsergroup:equsergroup:info")
public Result<List<UserInfoDTO>> groupList(@Parameter(hidden = true) @RequestParam Map<String, Object> params){
List<UserInfoDTO> data = eqUserGroupService.groupList(params);
return new Result<List<UserInfoDTO>>().ok(data);
}
@PostMapping
@Operation(summary="保存")
@LogOperation("保存")

25
modules/equipment/src/main/java/com/thing/eq/equsergroup/dto/UserInfoDTO.java

@ -0,0 +1,25 @@
package com.thing.eq.equsergroup.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
/**
* 用户组
*
* @author xiezw 806671840@qq.com
* @since 3.0 2022-06-24
*/
@Data
@Schema(description = "组用户信息")
public class UserInfoDTO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "用户id")
private Long userId;
@Schema(description = "名称")
private String userName;
}

3
modules/equipment/src/main/java/com/thing/eq/equsergroup/service/EqUserGroupService.java

@ -6,6 +6,7 @@ package com.thing.eq.equsergroup.service;
import com.thing.common.core.web.response.PageData;
import com.thing.common.orm.service.IBaseService;
import com.thing.eq.equsergroup.dto.EqUserGroupDTO;
import com.thing.eq.equsergroup.dto.UserInfoDTO;
import com.thing.eq.equsergroup.entity.EqUserGroupEntity;
import java.util.List;
@ -30,4 +31,6 @@ public interface EqUserGroupService extends IBaseService<EqUserGroupEntity> {
EqUserGroupDTO getByNameNoCurrenId(String name, Long tenantCode, Long id);
PageData<EqUserGroupDTO> page(Map<String, Object> params);
List<UserInfoDTO> groupList(Map<String, Object> params);
}

26
modules/equipment/src/main/java/com/thing/eq/equsergroup/service/impl/EqUserGroupServiceImpl.java

@ -1,5 +1,6 @@
package com.thing.eq.equsergroup.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.map.MapUtil;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.core.query.QueryWrapper;
@ -7,6 +8,7 @@ import com.thing.common.core.utils.ConvertUtils;
import com.thing.common.core.web.response.PageData;
import com.thing.common.orm.service.impl.BaseServiceImpl;
import com.thing.eq.equsergroup.dto.EqUserGroupDTO;
import com.thing.eq.equsergroup.dto.UserInfoDTO;
import com.thing.eq.equsergroup.entity.EqUserGroupEntity;
import com.thing.eq.equsergroup.mapper.EqUserGroupMapper;
import com.thing.eq.equsergroup.service.EqUserGroupService;
@ -61,6 +63,30 @@ public class EqUserGroupServiceImpl extends BaseServiceImpl<EqUserGroupMapper, E
return new PageData<>(pageList.getRecords(), pageList.getTotalRow());
}
@Override
public List<UserInfoDTO> groupList(Map<String, Object> params) {
List<UserInfoDTO> result = new ArrayList<>();
params.put("tenantCode", TenantContext.getTenantCode(SecurityUser.getUser()));
Long groupId = Long.parseLong(params.get("groupId").toString());
EqUserGroupDTO eqUserGroupDTO = mapper.selectByid(groupId);
//调整
String userId = eqUserGroupDTO.getUserId();
String[] split = userId.split(",");
List<Long> longs = new ArrayList<>();
for (String s : split) {
longs.add(Long.parseLong(s));
UserInfoDTO userInfoDTO = new UserInfoDTO();
List<String> planUserName = sysUserService.getUserNameLists(longs);
if (CollectionUtil.isEmpty(planUserName)){
continue;
}
userInfoDTO.setUserId(Long.parseLong(s));
userInfoDTO.setUserName(planUserName.get(0));
result.add(userInfoDTO);
}
return result;
}
@Override
public void save(EqUserGroupDTO dto) {
EqUserGroupEntity eqUserGroupEntity = ConvertUtils.sourceToTarget(dto, EqUserGroupEntity.class);

38
modules/equipment/src/main/resources/mapper/eqcheck/EqSpotCheckRecordMapper.xml

@ -60,5 +60,43 @@
</where>
order by record.create_date desc
</select>
<select id="searchRecordList" resultType="com.thing.eq.eqcheck.dto.EqSpotCheckRecordDTO">
select
record.*,
thing.code as thingCode,
thing.name as thingName,
base.standard as thingStandard,
base.eq_code as eqCode
from
eq_spot_check_record record
left join iot_thing_entity thing on thing.id = record.thing_id
left join iot_thing_base_info base on base.thing_id = thing.id
<where>
<if test="params.spotPlanId!=null">
record.spot_check_id = #{params.spotPlanId}
</if>
<if test="params.code!=null and params.code.trim() !=''">
and thing.code like concat('%',#{params.code}::varchar,'%')
</if>
<if test="params.name!=null and params.name.trim() !=''">
and thing.name like concat('%',#{params.name}::varchar,'%')
</if>
<if test="params.startTime!=null and params.endTime !=null">
and record.check_time is not null
and record.check_time <![CDATA[ >= ]]> #{params.startTime}
and record.check_time <![CDATA[ < ]]> #{params.endTime}
</if>
<if test="params.useId!=null">
and record.user_Id = #{params.useId}
</if>
<if test="params.spotCheckRecordNo!=null and params.spotCheckRecordNo.trim() !=''">
and record.spot_check_record_no like concat('%',#{params.spotCheckRecordNo}::varchar,'%')
</if>
<if test="params.tenantCode != null">
and record.tenant_code = #{params.tenantCode}
</if>
</where>
order by record.create_date desc
</select>
</mapper>

155
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<PageData<IotVisualManageDTO>> page(@RequestParam Map<String, Object> params){
PageData<IotVisualManageDTO> page = iotVisualManageService.pageIotBoardManageDTO(params);
return new Result<PageData<IotVisualManageDTO>>().ok(page);
}
@GetMapping("{id}")
@Operation(summary="信息")
public Result<IotVisualManageDTO> get(@PathVariable("id") Long id){
IotVisualManageDTO data = iotVisualManageService.getIotBoardManageDTO(id);
checkParam(data);
return new Result<IotVisualManageDTO>().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<String, Object> params, HttpServletResponse response) throws Exception {
List<IotVisualManageDTO> list = iotVisualManageService.listIotBoardManageDTO(params);
JsonProcessingUtils.exportJson(response, list, "group.json");
}
@PostMapping("importJson")
@Operation(summary="json导入,返回失败的数据信息")
public Result<List<IotVisualManageDTO>> importJson(MultipartFile file, HttpServletRequest request) {
return new Result<List<IotVisualManageDTO>>().ok(iotVisualManageService.importJson(file, request));
}
@GetMapping("getAllTemplate")
@Operation(summary="获取所有为模板的大屏数据")
public Result<List<IotVisualManageDTO>> getAllTemplate(){
return new Result<List<IotVisualManageDTO>>().ok(iotVisualManageService.getAllTemplate());
}
@GetMapping("getAllType")
@Operation(summary="获取所有看板类型")
public Result<Set<String>> getAllType(){
return new Result<Set<String>>().ok(iotVisualManageService.getAllType());
}
@GetMapping("/copy/{id}")
@Operation(summary="复制")
public Result copy(@PathVariable("id") Long id){
return iotVisualManageService.copy(id);
}
}

56
modules/visual-design/src/main/java/com/thing/visual/board/dto/IotVisualManageDTO.java

@ -0,0 +1,56 @@
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 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;
}

52
modules/visual-design/src/main/java/com/thing/visual/board/entity/IotVisualManageEntity.java

@ -0,0 +1,52 @@
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 Object isTemplate;
/**
* 备注
*/
private String remarks;
/**
* 看板预览url
*/
private String previewUrl;
}

28
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;
}

17
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<IotVisualManageEntity> {
}

42
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<IotVisualManageEntity> {
Result saveIotBoardManageDTO(IotVisualManageDTO dto);
PageData<IotVisualManageDTO> pageIotBoardManageDTO(Map<String, Object> params);
void updateIotBoardManageDTO(IotVisualManageDTO dto);
Result deleteIotBoardManageDTO(Long[] ids);
IotVisualManageDTO getIotBoardManageDTO(Long id);
List<IotVisualManageDTO> importJson(MultipartFile file, HttpServletRequest request);
List<IotVisualManageDTO> getAllTemplate();
Set<String> getAllType();
Result copy(Long id);
List<IotVisualManageDTO> listIotBoardManageDTO(Map<String, Object> params);
}

367
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<IotVisualManageMapper, IotVisualManageEntity> 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<String, Object> 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<String> 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<IotVisualManageDTO> pageIotBoardManageDTO(Map<String, Object> params) {
PageData<IotVisualManageDTO> 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<IotVisualManageEntity> entityList = mapper.selectListByQuery(QueryWrapper.create().in(IotVisualManageEntity::getId, entity.getId()));
List<String> urlList = entityList.stream().map(item -> "scada/preview?id=" + item.getId()).collect(Collectors.toList());
if(CollectionUtil.isNotEmpty(urlList)){
List<SysMenuDTO> sysMenuDTOList = sysMenuService.getByUrlList(urlList);
if (CollectionUtil.isNotEmpty(sysMenuDTOList)) {
List<Long> 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<IotVisualManageEntity> entityList = mapper.selectListByQuery(QueryWrapper.create().in(IotVisualManageEntity::getId, ids));
//删除角色与菜单的关联表
List<String> urlList = entityList.stream().map(item -> "scada/preview?id=" + item.getId()).collect(Collectors.toList());
List<SysMenuDTO> sysMenuDTOList = sysMenuService.getByUrlList(urlList);
if (CollectionUtil.isNotEmpty(sysMenuDTOList)) {
// List<Long> 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<IotVisualManageDTO> importJson(MultipartFile file, HttpServletRequest request) {
List<IotVisualManageDTO> resultErrorList = new ArrayList<>();
String jsonString = JsonProcessingUtils.readJson(file);
List<IotVisualManageDTO> 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<IotVisualManageDTO> 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<IotVisualManageDTO> iotVisualManageDTOS = ConvertUtils.sourceToTarget(mapper.selectListByQuery(wrapper), IotVisualManageDTO.class);
return iotVisualManageDTOS.stream().sorted(Comparator.comparing(IotVisualManageDTO::getCreateDate).reversed()).collect(Collectors.toList());
}
@Override
public Set<String> getAllType() {
Set<String> 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<IotVisualManageDTO> listIotBoardManageDTO(Map<String, Object> params) {
String val ="";
List<IotVisualManageDTO> 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;
}
}

2
modules/visual-design/src/main/java/com/thing/visual/component/service/impl/IotVisualComponentServiceImpl.java

@ -77,7 +77,7 @@ public class IotVisualComponentServiceImpl extends BaseServiceImpl<IotVisualComp
@Override
public List<IotVisualComponentEntity> getInfoByGroupIds(List<Long> groupIds) {
QueryWrapper wrapper = new QueryWrapper();
wrapper.eq( "group_id", groupIds);
wrapper.in( "group_id", groupIds);
return this.mapper.selectListByQuery(wrapper);
}

74
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<IotVisualDesignDTO> get(@PathVariable("id") Long id){
IotVisualDesignDTO data = iotVisualDesignService.getIotConfigurationDesigDTOById(id);
return new Result<IotVisualDesignDTO>().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<IotVisualDesignDTO> getDetailByBoardManageId(String boardManageId){
IotVisualDesignDTO data = iotVisualDesignService.getDetailByBoardManageId(boardManageId);
return new Result<IotVisualDesignDTO>().ok(data);
}
}

44
modules/visual-design/src/main/java/com/thing/visual/configuration/dto/IotVisualDesignDTO.java

@ -0,0 +1,44 @@
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<IotThingApiDTO> iotThingApiDTOList;
public String previewUrl;
@Schema(description = "boardType")
private String boardType;
}

45
modules/visual-design/src/main/java/com/thing/visual/configuration/entity/IotVisualDesignEntity.java

@ -0,0 +1,45 @@
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 pictureData;
/**
*超级apiid多个id以英文逗号,分割
*/
private String apiSetIds;
/**
* boardType
*/
private String boardType;
}

16
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<IotVisualDesignEntity> {
}

28
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<IotVisualDesignEntity> {
IotVisualDesignDTO getDetailByBoardManageId(String boardManageId);
List<IotVisualDesignDTO> getDetailsByBoardManageIds(List<Long> ids);
void saveIotConfigurationDesigDTO(IotVisualDesignDTO dto);
void updateIotConfigurationDesigDTO(IotVisualDesignDTO dto);
IotVisualDesignDTO getIotConfigurationDesigDTOById(Long id);
}

146
modules/visual-design/src/main/java/com/thing/visual/configuration/service/impl/IotVisualDesignServiceImpl.java

@ -0,0 +1,146 @@
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<IotVisualDesignMapper, IotVisualDesignEntity> implements IotVisualDesignService {
@Autowired
private IotVisualManageService iotVisualManageService;
@Autowired
IotThingApiMapper iotThingApiDao;
@Override
public QueryWrapper getWrapper(Map<String, Object> 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<Long> 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<IotVisualDesignDTO> getDetailsByBoardManageIds(List<Long> ids) {
QueryWrapper wrapper = new QueryWrapper();
wrapper.in("board_manage_id",ids);
List<IotVisualDesignEntity> 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);
IotVisualManageEntity manageEntity = iotVisualManageService.getById(id);
data.setThumbnailUrl(manageEntity.getThumbnailUrl());
data.setPageName(manageEntity.getName());
data.setPreviewUrl(manageEntity.getPreviewUrl());
if(ObjectUtil.isNotEmpty(data)){
if(StringUtils.isNotBlank(data.getApiSetIds())){
List<String> 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());
iotVisualManageDTO.setName(dto.getPageName());
iotVisualManageService.updateDto(iotVisualManageDTO);
}
}

16
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<String> deleteGroup(@RequestParam(required = false) String name, @RequestParam(required = true) String type){
return new Result<String>().ok(iotVisualGroupService.deleteGroup(name,type));
public Result<String> deleteGroup(@RequestBody Map<String,Object> 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;
}

6
modules/visual-design/src/main/java/com/thing/visual/group/service/impl/IotVisualGroupServiceImpl.java

@ -83,13 +83,11 @@ public class IotVisualGroupServiceImpl extends BaseServiceImpl<IotVisualGroupMap
List<NameSort> 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)

Loading…
Cancel
Save