test #3

Merged
yuanqiang merged 7 commits from test into master 2 months ago
  1. 2
      dk-api/api-system/src/main/java/org/dromara/system/api/RemotePostService.java
  2. 13
      dk-common/common-core/src/main/java/org/dromara/common/core/constant/Constants.java
  3. 7
      dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java
  4. 12
      dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java
  5. 4
      dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java
  6. 52
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java
  7. 39
      dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java
  8. 37
      dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml
  9. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java
  10. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java
  11. 2
      dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java
  12. 4
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java
  13. 108
      dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java
  14. 2
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java
  15. 5
      dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java
  16. 24
      dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml
  17. 5
      dk-modules/system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java
  18. 2
      dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java
  19. 2
      dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java
  20. 5
      dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java
  21. 22
      dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml
  22. 20
      dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java
  23. 8
      dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java
  24. 3
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java
  25. 20
      dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java
  26. 4
      dk-modules/workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml

2
dk-api/api-system/src/main/java/org/dromara/system/api/RemotePostService.java

@ -10,4 +10,6 @@ public interface RemotePostService {
String getPostCode(String labelCode); String getPostCode(String labelCode);
String getFlowCode(String labelCode); String getFlowCode(String labelCode);
List<String> listPostCode(String labelCode);
} }

13
dk-common/common-core/src/main/java/org/dromara/common/core/constant/Constants.java

@ -86,5 +86,18 @@ public interface Constants {
* 飞行总时长 * 飞行总时长
*/ */
String FLY_ACC_TIME = "fly_accTime"; String FLY_ACC_TIME = "fly_accTime";
/**
* 项目组存储key例如:pro_group_项目组id_用户id
*/
String PRO_GROUP = "pro_group_%s";
/**
* 设备存储key例如:pro_device_项目组id_用户id
*/
String PRO_DEVICE = "pro_device_%s";
} }

7
dk-modules/business/src/main/java/org/dromara/business/controller/BusinessAlertController.java

@ -46,6 +46,12 @@ public class BusinessAlertController extends BaseController {
return businessAlertService.getInfo(bo,pageQuery,alertCode); return businessAlertService.getInfo(bo,pageQuery,alertCode);
} }
@Operation(summary ="app获取单个预警信息",description = "app获取单个预警信息")
@GetMapping("/alert/app/todo/{alertId}")
public R<BusinessAlert> getTodoBusinessAlert(@PathVariable("alertId") Long alertId) {
return R.ok(businessAlertService.getTodoBusinessAlert(alertId));
}
/** /**
* 查询全部预警/待办/已完成/忽略 * 查询全部预警/待办/已完成/忽略
*/ */
@ -67,6 +73,7 @@ public class BusinessAlertController extends BaseController {
@Operation(summary ="ai实时流预警保存",description = "ai实时流预警保存") @Operation(summary ="ai实时流预警保存",description = "ai实时流预警保存")
@PostMapping("/saveAlertList") @PostMapping("/saveAlertList")
public R saveAlert(@RequestBody List<BusinessAlertVo> alertVoList) { public R saveAlert(@RequestBody List<BusinessAlertVo> alertVoList) {
businessAlertService.addBusinessAlertList(alertVoList); businessAlertService.addBusinessAlertList(alertVoList);
return R.ok(); return R.ok();
} }

12
dk-modules/business/src/main/java/org/dromara/business/mapper/BusinessAlertMapper.java

@ -24,12 +24,12 @@ public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, Busin
@DataPermission( @DataPermission(
@DataColumn(key = "deptName", value = "t.dept_id") @DataColumn(key = "deptName", value = "t.dept_id")
) )
Page<BusinessAlert> pageBusinessAlert(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageBusinessAlert(@Param("page") Page<BusinessAlert> page,@Param("ew") QueryWrapper<BusinessAlert> ew);
@DataPermission( @DataPermission(
@DataColumn(key = "deptName", value = "t.dept_id") @DataColumn(key = "deptName", value = "t.dept_id")
) )
Page<BusinessAlert> pageAlertFinish(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageAlertFinish(@Param("page") Page<BusinessAlert> page,@Param("ew") QueryWrapper<BusinessAlert> ew);
/** /**
* 处理中 * 处理中
@ -40,13 +40,17 @@ public interface BusinessAlertMapper extends BaseMapperPlus<BusinessAlert, Busin
@DataPermission( @DataPermission(
@DataColumn(key = "deptName", value = "t.dept_id") @DataColumn(key = "deptName", value = "t.dept_id")
) )
Page<BusinessAlert> pageAlertTodo(Page<BusinessAlert> page, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageAlertTodo(@Param("page") Page<BusinessAlert> page,@Param("ew") QueryWrapper<BusinessAlert> ew);
@DataPermission( @DataPermission(
@DataColumn(key = "deptName", value = "t.dept_id") @DataColumn(key = "deptName", value = "t.dept_id")
) )
Page<BusinessAlert> pageBusinessAlertCancel(Page<BusinessAlert> build, QueryWrapper<BusinessAlert> ew); Page<BusinessAlert> pageBusinessAlertCancel(@Param("page") Page<BusinessAlert> page,@Param("ew") QueryWrapper<BusinessAlert> ew);
@DataPermission(
@DataColumn(key = "deptName", value = "t.dept_id")
)
List<BusinessAlert> listTodoAlert(@Param("ew") QueryWrapper<BusinessAlert> ew);
List<Map<String, Object>> listMonthAlert(@Param("param") BusinessAlertBo businessAlertBo); List<Map<String, Object>> listMonthAlert(@Param("param") BusinessAlertBo businessAlertBo);

4
dk-modules/business/src/main/java/org/dromara/business/service/IBusinessAlertService.java

@ -80,4 +80,8 @@ public interface IBusinessAlertService {
Boolean deleteAlert(List<Long> alertIdList); Boolean deleteAlert(List<Long> alertIdList);
void batchUpdateDept(List<BusinessAlertVo> alertVoList); void batchUpdateDept(List<BusinessAlertVo> alertVoList);
List<BusinessAlert> listTodoAlert(BusinessAlertBo businessAlertBo);
BusinessAlert getTodoBusinessAlert(Long alertId);
} }

52
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java

@ -596,6 +596,58 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService {
return days; return days;
} }
/**
* 查询当前用户待办预警
* @return
*/
@Override
public List<BusinessAlert> listTodoAlert(BusinessAlertBo businessAlertBo) {
QueryWrapper<BusinessAlert> wrapper = buildQueryWrapper(businessAlertBo);
if (ObjectUtil.isEmpty(wrapper)){
return ListUtil.empty();
}
wrapper.eq("t.node_type", 1);
wrapper.in("t.approver", remoteWorkflowService.getPermissions());
wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus());
return this.baseMapper.listTodoAlert(wrapper);
}
/**
* 获取单个预警信息
* @param alertId
* @return
*/
@Override
public BusinessAlert getTodoBusinessAlert(Long alertId) {
QueryWrapper<BusinessAlert> wrapper = new QueryWrapper<>();
wrapper.eq("t.node_type", 1);
wrapper.in("t.approver", remoteWorkflowService.getPermissions());
wrapper.in("t.flow_status", BusinessStatusEnum.WAITING.getStatus());
List<BusinessAlert> businessAlerts = this.baseMapper.listTodoAlert(wrapper);
BusinessAlert businessAlert = businessAlerts.stream().filter(p -> p.getId().equals(alertId)).findFirst().get();
try {
if (businessAlert.getBusinessType() == 2){
businessAlert.setImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_DKCY, businessAlert.getImages(), 3600).toString());
}else {
businessAlert.setImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getImages(), 3600).toString());
businessAlert.setMaxImages(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getMaxImages(), 3600).toString());
businessAlert.setMaxMateSourceImgUrl(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getMaxMateSourceImgUrl(), 3600).toString());
businessAlert.setMateSourceImgUrl(MinioUntil.getObjectUrlOne(MinIOConstants.BUCKET_ALERT, businessAlert.getMateSourceImgUrl(), 3600).toString());
}
} catch (Exception e) {
log.error(e.getMessage(),e);
}
return businessAlert;
}
public static void main(String[] args) { public static void main(String[] args) {
System.out.println(getLastSixDays()); System.out.println(getLastSixDays());
} }

39
dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java

@ -4,9 +4,12 @@ import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference; import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.business.domain.BusinessAlert;
import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.bo.BusinessAlertBo;
import org.dromara.business.domain.model.StatObj; import org.dromara.business.domain.model.StatObj;
import org.dromara.business.feign.FeignDeviceGroup;
import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.mapper.BusinessAlertMapper;
import org.dromara.business.service.IBusinessAlertService;
import org.dromara.business.service.IBusinessAlertStatisticsService; import org.dromara.business.service.IBusinessAlertStatisticsService;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.redis.utils.RedisUtils;
@ -20,6 +23,7 @@ import org.dromara.system.api.domain.vo.RemoteDeptVo;
import org.dromara.system.api.domain.vo.RemotePostVo; import org.dromara.system.api.domain.vo.RemotePostVo;
import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.LoginUser;
import org.dromara.system.api.model.RoleDTO; import org.dromara.system.api.model.RoleDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -58,6 +62,11 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
@DubboReference(timeout = 30000) @DubboReference(timeout = 30000)
RemoteDataScopeService remoteDataScopeService; RemoteDataScopeService remoteDataScopeService;
@Autowired
FeignDeviceGroup feignDeviceGroup;
private final IBusinessAlertService businessAlertService;
/** /**
* 按照月份分类预警数量 * 按照月份分类预警数量
* @param businessAlertBo * @param businessAlertBo
@ -176,7 +185,17 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
//----------------------------------------------获取飞行总架次、总时长---------------------------------------------- //----------------------------------------------获取飞行总架次、总时长----------------------------------------------
//获取飞行总架次、总时长 //获取飞行总架次、总时长
Map<String, Object> countMap = RedisUtils.getCacheMap(FLY_COUNT); //获取机场信息根据当前登录人
List<String> deviceSnList = ObjectUtil.isNotEmpty(feignDeviceGroup.listDevice(LoginHelper.getUserId()))?feignDeviceGroup.listDevice(LoginHelper.getUserId()):ListUtil.empty();
//过滤redis中用户所拥有的设备
Map<String, Object> countMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_COUNT))
.map(map -> map.entrySet().stream()
.filter(entry -> deviceSnList.contains(entry.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)))
.orElse(new HashMap<>());
int flyCount; int flyCount;
if (ObjectUtil.isNotEmpty(countMap)){ if (ObjectUtil.isNotEmpty(countMap)){
@ -193,7 +212,14 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
flyCount = 0; flyCount = 0;
} }
Map<String, Object> accTimeMap = RedisUtils.getCacheMap(FLY_ACC_TIME); //过滤redis中用户所拥有的设备
Map<String, Object> accTimeMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_ACC_TIME))
.map(map -> map.entrySet().stream()
.filter(entry -> deviceSnList.contains(entry.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)))
.orElse(new HashMap<>());
double flyAccTime; double flyAccTime;
if (ObjectUtil.isNotEmpty(accTimeMap)) { if (ObjectUtil.isNotEmpty(accTimeMap)) {
@ -692,7 +718,14 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist
public Map<String, Object> listAppAlertCount(BusinessAlertBo businessAlertBo) { public Map<String, Object> listAppAlertCount(BusinessAlertBo businessAlertBo) {
//构建查询数据权限 //构建查询数据权限
createPermissions(businessAlertBo); createPermissions(businessAlertBo);
return baseMapper.listAppAlertCount(businessAlertBo);
Map<String, Object> result = baseMapper.listAppAlertCount(businessAlertBo);
List<BusinessAlert> businessAlerts = businessAlertService.listTodoAlert(businessAlertBo);
result.put("todoCount",businessAlerts.size());
return result;
} }
/** /**

37
dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml

@ -798,5 +798,42 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="searchSql"></include> <include refid="searchSql"></include>
</select> </select>
<select id="listTodoAlert" resultType="org.dromara.business.domain.BusinessAlert">
select t.* from (
select
ba.*,
b.flow_status,
b.business_id,
uu.processed_by approver,
a.id flowTaskId,
b.id instanceId,
a.node_type,
fnData.buttonPermission,
fnData.permissions
from dk_business.business_alert ba
inner join dk_workflow.flow_instance b on ba.id = b.business_id
left join dk_workflow.flow_task a on a.instance_id = b.id
left join dk_workflow.flow_user uu on uu.associated = a.id
left join dk_workflow.flow_definition c on a.definition_id = c.id
LEFT JOIN LATERAL (
SELECT
JSON_UNQUOTE(JSON_EXTRACT(fn.ext, '$[0].value')) AS buttonPermission,
fn.permissions
FROM dk_workflow.flow_node fn
WHERE
fn.node_code = b.node_code
and fn.definition_id = c.id
and fn.del_flag = '0'
LIMIT 1
) AS fnData ON TRUE
where a.node_type = 1
and a.del_flag = '0'
and uu.del_flag = '0'
and uu.type in ('1','2','3')
) t
${ew.getCustomSqlSegment}
</select>
</mapper> </mapper>

4
dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceProController.java

@ -65,7 +65,7 @@ public class DeviceProController {
//3、删除项目组 //3、删除项目组
@Operation(summary = "删除项目组。", description = "删除项目组。") @Operation(summary = "删除项目组。", description = "删除项目组。")
@DeleteMapping("/delete") @DeleteMapping("/delete")
public HttpResultResponse<Boolean> deleteDevicePro(@RequestBody List<Long> ids) { public HttpResultResponse<Boolean> deleteDevicePro(@RequestBody List<Integer> ids) {
return HttpResultResponse.success(deviceProService.deleteIds(ids)); return HttpResultResponse.success(deviceProService.deleteIds(ids));
} }
@ -76,7 +76,7 @@ public class DeviceProController {
*/ */
@Operation(summary = "新增/更新项目人员。", description = "新增/更新项目人员。") @Operation(summary = "新增/更新项目人员。", description = "新增/更新项目人员。")
@PostMapping("/{proId}/update") @PostMapping("/{proId}/update")
public HttpResultResponse<Boolean> updateDeviceProUser(@RequestBody List<DeviceProUserEntity> userEntity,@PathVariable Long proId) { public HttpResultResponse<Boolean> updateDeviceProUser(@RequestBody List<DeviceProUserEntity> userEntity,@PathVariable Integer proId) {
return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId)); return HttpResultResponse.success(deviceProService.updateDeviceProUser(userEntity,proId));
} }

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProEntity.java

@ -27,7 +27,7 @@ import java.util.List;
@TableName(value = "manage_device_pro") @TableName(value = "manage_device_pro")
public class DeviceProEntity extends BaseEntity implements Serializable { public class DeviceProEntity extends BaseEntity implements Serializable {
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.AUTO)
private Integer id; private Integer id;
@TableField(value = "pro_name") @TableField(value = "pro_name")

2
dk-modules/sample/src/main/java/org/dromara/sample/manage/model/entity/DeviceProUserEntity.java

@ -26,7 +26,7 @@ import java.io.Serializable;
@TableName(value = "manage_device_pro_user") @TableName(value = "manage_device_pro_user")
public class DeviceProUserEntity extends BaseEntity implements Serializable { public class DeviceProUserEntity extends BaseEntity implements Serializable {
@TableId(type = IdType.ASSIGN_ID) @TableId(type = IdType.AUTO)
private Integer id; private Integer id;
@TableField(value = "device_pro_id") @TableField(value = "device_pro_id")

4
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/IDeviceProService.java

@ -32,11 +32,11 @@ public interface IDeviceProService {
Boolean saveAndUpdate(DeviceProEntity deviceProEntity); Boolean saveAndUpdate(DeviceProEntity deviceProEntity);
Boolean deleteIds(List<Long> ids); Boolean deleteIds(List<Integer> ids);
Boolean updateDevicePro(DeviceProEntity deviceProEntity); Boolean updateDevicePro(DeviceProEntity deviceProEntity);
Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Long proId); Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Integer proId);
Boolean updateDevice(Dict dict); Boolean updateDevice(Dict dict);

108
dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/DeviceProServiceImpl.java

@ -11,7 +11,10 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.executor.BatchResult; import org.apache.ibatis.executor.BatchResult;
import org.dromara.common.core.constant.Constants;
import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.redis.utils.RedisOpsUtils;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.sdk.cloudapi.device.*; import org.dromara.common.sdk.cloudapi.device.*;
import org.dromara.common.sdk.cloudapi.firmware.*; import org.dromara.common.sdk.cloudapi.firmware.*;
@ -34,6 +37,7 @@ import org.dromara.common.sdk.mqtt.services.ServicesSubscribe;
import org.dromara.common.sdk.mqtt.services.TopicServicesResponse; import org.dromara.common.sdk.mqtt.services.TopicServicesResponse;
import org.dromara.common.sdk.mqtt.state.StateSubscribe; import org.dromara.common.sdk.mqtt.state.StateSubscribe;
import org.dromara.common.sdk.mqtt.status.StatusSubscribe; import org.dromara.common.sdk.mqtt.status.StatusSubscribe;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.common.websocket.dto.BizCodeEnum; import org.dromara.common.websocket.dto.BizCodeEnum;
import org.dromara.sample.common.error.CommonErrorEnum; import org.dromara.sample.common.error.CommonErrorEnum;
import org.dromara.sample.component.mqtt.model.EventsReceiver; import org.dromara.sample.component.mqtt.model.EventsReceiver;
@ -62,10 +66,7 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.Collection; import java.util.*;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -87,6 +88,8 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Autowired @Autowired
private IDeviceProUserMapper deviceProUserMapper; private IDeviceProUserMapper deviceProUserMapper;
private final ObjectMapper objectMapper = new ObjectMapper();
@Override @Override
public PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) { public PaginationData<DeviceProEntity> listDeviceProEntityMap(Page page, DeviceProDTO deviceProDTO) {
Page<DeviceProEntity> pagination = deviceProMapper.listDeviceProEntityMap(page, deviceProDTO); Page<DeviceProEntity> pagination = deviceProMapper.listDeviceProEntityMap(page, deviceProDTO);
@ -107,7 +110,7 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Override @Override
public Boolean deleteIds(List<Long> ids) { public Boolean deleteIds(List<Integer> ids) {
List<DeviceEntity> deviceEntityList = deviceMapper.selectList(new LambdaQueryWrapper<DeviceEntity>().in(DeviceEntity::getProId, ids)); List<DeviceEntity> deviceEntityList = deviceMapper.selectList(new LambdaQueryWrapper<DeviceEntity>().in(DeviceEntity::getProId, ids));
@ -125,14 +128,78 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Long proId) { public Boolean updateDeviceProUser(List<DeviceProUserEntity> userEntity,Integer proId) {
try { try {
//获取项目组信息
DeviceProEntity deviceProEntity = deviceProMapper.selectOne(new LambdaQueryWrapper<DeviceProEntity>().eq(DeviceProEntity::getId, proId));
//查询之前项目所属的人员信息
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
List<DeviceProUserEntity> difference = new ArrayList<>();
// 判断两个集合的差值(基于 userId)
difference = proUserEntityList.stream()
.filter(proUser -> userEntity.stream()
.noneMatch(user -> user.getUserId().equals(proUser.getUserId())))
.toList();
//--------------------------------------------缓存相关操作----------------------------------------------------------------
//人员如果解绑了项目删除缓存数据
difference.forEach(proUserEntity -> {
//删除人员项目组信息
List<Object> projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()));
List<Map> projectList = projects.stream()
.filter(Map.class::isInstance)
.map(Map.class::cast)
.toList();
//删除人员中所拥有的当前的项目组,然后构建新的存入redis
List<Map> deviceProEntities = projectList.stream().filter(p -> !Integer.valueOf(p.get("id") + "").equals(proId)).toList();
//删除
RedisUtils.deleteObject(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()));
//重新插入
RedisUtils.setCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()),deviceProEntities);
//删除人员所拥有的设备信息
List<Object> cacheList = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()));
List<Map> deviceList = cacheList.stream()
.filter(Map.class::isInstance)
.map(Map.class::cast)
.toList();
//过滤除了这个删除的项目组之外的设备
deviceList = deviceList.stream().filter(p-> !Integer.valueOf(p.get("proId") + "").equals(proId)).toList();
//删除
RedisUtils.deleteObject(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()));
RedisUtils.setCacheList(String.format(Constants.PRO_DEVICE, proUserEntity.getUserId()),deviceList);
});
//--------------------------------------------缓存相关操作----------------------------------------------------------------
//先清除原来的项目组成员 //先清除原来的项目组成员
deviceProUserMapper.delete(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId)); deviceProUserMapper.delete(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
if (ObjectUtil.isNotEmpty(userEntity)) { if (ObjectUtil.isNotEmpty(userEntity)) {
//添加新的项目组成员 //添加新的项目组成员
deviceProUserMapper.insert(userEntity); deviceProUserMapper.insert(userEntity);
//更新缓存记录
userEntity.forEach(proUserEntity -> {
List<Object> projects = RedisUtils.getCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()));
List<Map> projectList = projects.stream()
.filter(Map.class::isInstance)
.map(Map.class::cast)
.toList();
if (!projectList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(proUserEntity.getDeviceProId()))){
Map proMap = objectMapper.convertValue(deviceProEntity, Map.class);
RedisUtils.addCacheList(String.format(Constants.PRO_GROUP, proUserEntity.getUserId()), proMap);
}
});
} }
return true; return true;
@ -150,18 +217,41 @@ public class DeviceProServiceImpl implements IDeviceProService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Boolean updateDevice(Dict dict) { public Boolean updateDevice(Dict dict) {
Long deviceId = dict.getLong("deviceId"); Integer deviceId = dict.getInt("deviceId");
Long proId = dict.getLong("proId"); Integer proId = dict.getInt("proId");
if (ObjectUtil.hasEmpty(deviceId, proId)) { if (ObjectUtil.hasEmpty(deviceId, proId)) {
throw new ServiceException("【deviceId】或【proId】参数为空!"); throw new ServiceException("【deviceId】或【proId】参数为空!");
} }
try {
LambdaUpdateWrapper<DeviceEntity> wrapper = new LambdaUpdateWrapper<>(); LambdaUpdateWrapper<DeviceEntity> wrapper = new LambdaUpdateWrapper<>();
wrapper.set(DeviceEntity::getProId, proId); wrapper.set(DeviceEntity::getProId, proId);
wrapper.eq(DeviceEntity::getId, deviceId); wrapper.eq(DeviceEntity::getId, deviceId);
return deviceMapper.update(wrapper) > 0; if (deviceMapper.update(wrapper) > 0) {
DeviceEntity deviceEntity = deviceMapper.selectOne(new LambdaQueryWrapper<DeviceEntity>().eq(DeviceEntity::getId, deviceId));
//根据proid获取人员用于存储人员的设备权限
List<DeviceProUserEntity> proUserEntityList = deviceProUserMapper.selectList(new LambdaQueryWrapper<DeviceProUserEntity>().eq(DeviceProUserEntity::getDeviceProId, proId));
proUserEntityList.forEach(deviceProUserEntity -> {
List<Object> devices = RedisUtils.getCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId()));
List<Map> deviceList = devices.stream()
.filter(Map.class::isInstance)
.map(Map.class::cast)
.toList();
if (!deviceList.stream().anyMatch(p-> Integer.valueOf(p.get("id") + "").equals(deviceEntity.getId()))){
Map deviceMap = objectMapper.convertValue(deviceEntity, Map.class);
RedisUtils.addCacheList(String.format(Constants.PRO_DEVICE, deviceProUserEntity.getUserId()), deviceMap);
}
});
}
} catch (Exception e) {
return false;
}
return true;
} }
/** /**

2
dk-modules/sample/src/main/java/org/dromara/sample/wayline/model/dto/AiCompareDTO.java

@ -95,7 +95,7 @@ public class AiCompareDTO implements Serializable {
* 创建者 * 创建者
*/ */
private Long createId; private Long createBy;
/** /**
*用户昵称 *用户昵称
* */ * */

5
dk-modules/sample/src/main/java/org/dromara/sample/wayline/service/impl/AiCompareServiceImpl.java

@ -83,7 +83,7 @@ public class AiCompareServiceImpl implements IAiCompareService {
QueryWrapper<AiCompareEntity> wrapper = Wrappers.query(); QueryWrapper<AiCompareEntity> wrapper = Wrappers.query();
wrapper wrapper
.eq(StringUtils.isNotEmpty(bo.getStatus()), "status",bo.getStatus()) .eq(StringUtils.isNotEmpty(bo.getStatus()), "status",bo.getStatus())
.eq(ObjectUtil.isNotEmpty(bo.getCreateId()), "create_by",bo.getCreateId()) .eq(ObjectUtil.isNotEmpty(bo.getCreateBy()), "create_id",bo.getCreateBy())
.like(StringUtils.isNotBlank(bo.getDeptName()), "lower(dept_name)", StringUtils.lowerCase(bo.getDeptName())) .like(StringUtils.isNotBlank(bo.getDeptName()), "lower(dept_name)", StringUtils.lowerCase(bo.getDeptName()))
.like(StringUtils.isNotBlank(bo.getJobName()), "lower(job_name)", StringUtils.lowerCase(bo.getJobName())) .like(StringUtils.isNotBlank(bo.getJobName()), "lower(job_name)", StringUtils.lowerCase(bo.getJobName()))
.between(params.get("beginTime") != null && params.get("endTime") != null, .between(params.get("beginTime") != null && params.get("endTime") != null,
@ -156,8 +156,11 @@ public class AiCompareServiceImpl implements IAiCompareService {
if(isIllegal){ if(isIllegal){
QueryWrapper<AiComparePlateEntity> queryWrapper = new QueryWrapper<AiComparePlateEntity>().eq("file_id", e.getFileId()); QueryWrapper<AiComparePlateEntity> queryWrapper = new QueryWrapper<AiComparePlateEntity>().eq("file_id", e.getFileId());
AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper); AiComparePlateEntity plateEntity = aiComparePlateMapper.selectOne(queryWrapper);
if(plateEntity != null){
e.setPatternUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_ALERT,plateEntity.getPatternName(),seconds).toString()); e.setPatternUrl(fileService.getObjectUrlOne(MinIOConstants.BUCKET_ALERT,plateEntity.getPatternName(),seconds).toString());
} }
}
}); });
} }
return mediaFileDTOList; return mediaFileDTOList;

24
dk-modules/sample/src/main/resources/mapper/AiCompareMapper.xml

@ -10,28 +10,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="listMediaFile" resultType="org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO"> <select id="listMediaFile" resultType="org.dromara.sample.wayline.model.dto.AiCompareMediaFileDTO">
SELECT SELECT
ai.id as compareId,
mf.file_index, mf.file_index,
mf.file_id, mf.file_id,
mf.file_name, mf.file_name,
mf.object_key, mf.object_key,
mf.job_id, mf.job_id,
mfi.file_id as mateFileId, mfi.file_id AS mateFileId,
mfi.file_name as mateFileName, mfi.file_name AS mateFileName,
mfi.object_key AS mateObjectKey, mfi.object_key AS mateObjectKey,
mfi.file_index AS mateFileIndex, mfi.file_index AS mateFileIndex,
mfi.create_time AS mateFileDate mfi.create_time AS mateFileDate
FROM FROM
media_file AS mf media_file mf
JOIN JOIN media_file mfi ON mf.file_index = mfi.file_index
media_file AS mfi
ON
mf.file_index = mfi.file_index and mf.file_type='jpeg' and mfi.file_type='jpeg'
JOIN ai_compare ai ON ai.template_id = mfi.job_id JOIN ai_compare ai ON ai.template_id = mfi.job_id
WHERE WHERE
mf.job_id = #{jobId} and ai.id=#{compareId} mf.file_status = mfi.file_status
AND mf.file_id != mfi.file_id
AND mf.file_index = mfi.file_index
AND mf.file_type = 'jpeg'
AND mfi.file_type = 'jpeg'
AND mf.job_id = #{jobId}
AND ai.id = #{compareId}
ORDER BY ORDER BY
mf.file_index; mf.file_index,
mf.file_status;
</select> </select>
</mapper> </mapper>

5
dk-modules/system/src/main/java/org/dromara/system/dubbo/RemotePostServiceImpl.java

@ -54,4 +54,9 @@ public class RemotePostServiceImpl implements RemotePostService {
public String getFlowCode(String labelCode) { public String getFlowCode(String labelCode) {
return aiLabelService.getFlowCode(labelCode); return aiLabelService.getFlowCode(labelCode);
} }
@Override
public List<String> listPostCode(String labelCode) {
return sysPostService.listPostCode(labelCode);
}
} }

2
dk-modules/system/src/main/java/org/dromara/system/mapper/SysPostMapper.java

@ -36,4 +36,6 @@ public interface SysPostMapper extends BaseMapperPlus<SysPost, SysPostVo> {
SysPostVo selectLableByList(@Param("postCode") String postCode, @Param("deptId") Long deptId); SysPostVo selectLableByList(@Param("postCode") String postCode, @Param("deptId") Long deptId);
String getPostCode(@Param("labelCode") String labelCode); String getPostCode(@Param("labelCode") String labelCode);
List<String> listPostCode(@Param("labelCode") String labelCode);
} }

2
dk-modules/system/src/main/java/org/dromara/system/service/ISysPostService.java

@ -134,4 +134,6 @@ public interface ISysPostService {
SysPostVo selectLableByList(String post_code, Long dept_id); SysPostVo selectLableByList(String post_code, Long dept_id);
String getPostCode(String labelCode); String getPostCode(String labelCode);
List<String> listPostCode(String labelCode);
} }

5
dk-modules/system/src/main/java/org/dromara/system/service/impl/SysPostServiceImpl.java

@ -279,4 +279,9 @@ public class SysPostServiceImpl implements ISysPostService {
public String getPostCode(String labelCode) { public String getPostCode(String labelCode) {
return baseMapper.getPostCode(labelCode); return baseMapper.getPostCode(labelCode);
} }
@Override
public List<String> listPostCode(String labelCode) {
return baseMapper.listPostCode(labelCode);
}
} }

22
dk-modules/system/src/main/resources/mapper/system/SysPostMapper.xml

@ -54,4 +54,26 @@
al.label_en =#{labelCode})) al.label_en =#{labelCode}))
</select> </select>
<select id="listPostCode" resultType="java.lang.String">
SELECT
post_code
FROM
sys_post sp
WHERE
sp.post_id in (
SELECT
alp.post_id
FROM
ai_label_post alp
WHERE
alp.label_id in (
SELECT
al.label_id
FROM
ai_label al
WHERE
al.label_en =#{labelCode}))
</select>
</mapper> </mapper>

20
dk-modules/workflow/src/main/java/org/dromara/workflow/controller/FlwDefinitionController.java

@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.R;
import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log; import org.dromara.common.log.annotation.Log;
@ -11,6 +12,7 @@ import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController; import org.dromara.common.web.core.BaseController;
import org.dromara.system.api.RemotePostService;
import org.dromara.warm.flow.core.entity.Definition; import org.dromara.warm.flow.core.entity.Definition;
import org.dromara.warm.flow.core.service.DefService; import org.dromara.warm.flow.core.service.DefService;
import org.dromara.warm.flow.orm.entity.FlowDefinition; import org.dromara.warm.flow.orm.entity.FlowDefinition;
@ -24,6 +26,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 流程定义管理 控制层 * 流程定义管理 控制层
@ -40,6 +43,9 @@ public class FlwDefinitionController extends BaseController {
private final DefService defService; private final DefService defService;
private final IFlwDefinitionService flwDefinitionService; private final IFlwDefinitionService flwDefinitionService;
@DubboReference
private RemotePostService remotePostService;
/** /**
* 查询流程定义列表 * 查询流程定义列表
* *
@ -193,4 +199,18 @@ public class FlwDefinitionController extends BaseController {
return R.ok(active ? defService.active(id) : defService.unActive(id)); return R.ok(active ? defService.active(id) : defService.unActive(id));
} }
/**
* 检查当前标签有几个流程
* @return
*/
@GetMapping("/check/flow")
public R<List<Map<String,String>>> checkWorkFlow(@RequestParam("labelCode") String labelCode) {
//获取这个标签下的所有岗位编码
List<String> postCodeList = remotePostService.listPostCode(labelCode);
List<Map<String,String>> result = flwDefinitionService.listFlowCode(postCodeList);
return R.ok(result);
}
} }

8
dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwCategoryMapper.java

@ -8,6 +8,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.common.mybatis.helper.DataBaseHelper; import org.dromara.common.mybatis.helper.DataBaseHelper;
import org.dromara.workflow.domain.FlowCategory; import org.dromara.workflow.domain.FlowCategory;
import org.dromara.workflow.domain.vo.FlowCategoryVo; import org.dromara.workflow.domain.vo.FlowCategoryVo;
import org.dromara.workflow.domain.vo.FlowDefinitionVo;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -59,4 +60,11 @@ public interface FlwCategoryMapper extends BaseMapperPlus<FlowCategory, FlowCate
} }
String getFlowCode(@Param("postCode") String postCode); String getFlowCode(@Param("postCode") String postCode);
/**
* 根据当前岗位编码查询流程
* @param postCode
* @return
*/
FlowDefinitionVo getDefinition(String postCode);
} }

3
dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwDefinitionService.java

@ -9,6 +9,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 流程定义 服务层 * 流程定义 服务层
@ -79,4 +80,6 @@ public interface IFlwDefinitionService {
String getFlowCode(String postCode); String getFlowCode(String postCode);
List<Map<String, String>> listFlowCode(List<String> postCodeList);
} }

20
dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwDefinitionServiceImpl.java

@ -41,9 +41,7 @@ import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.ArrayList; import java.util.*;
import java.util.Arrays;
import java.util.List;
import static org.dromara.common.core.constant.TenantConstants.DEFAULT_TENANT_ID; import static org.dromara.common.core.constant.TenantConstants.DEFAULT_TENANT_ID;
@ -274,4 +272,20 @@ public class FlwDefinitionServiceImpl implements IFlwDefinitionService {
public String getFlowCode(String postCode) { public String getFlowCode(String postCode) {
return flwCategoryMapper.getFlowCode(postCode); return flwCategoryMapper.getFlowCode(postCode);
} }
@Override
public List<Map<String, String>> listFlowCode(List<String> postCodeList) {
List<Map<String, String>> result = new ArrayList<>();
postCodeList.forEach(postCode -> {
Map<String,String> map = new HashMap<>();
FlowDefinitionVo definitionVo = flwCategoryMapper.getDefinition(postCode);
map.put("name",definitionVo.getFlowName());
map.put("flowCode",definitionVo.getFlowCode());
result.add(map);
});
return result;
}
} }

4
dk-modules/workflow/src/main/resources/mapper/workflow/FlwCategoryMapper.xml

@ -12,4 +12,8 @@
select flow_code from flow_definition fd where fd.remark like concat('%',#{postCode},'%') and fd.is_publish = '1' select flow_code from flow_definition fd where fd.remark like concat('%',#{postCode},'%') and fd.is_publish = '1'
</select> </select>
<select id="getDefinition" resultType="org.dromara.workflow.domain.vo.FlowDefinitionVo">
select fd.* from flow_definition fd where fd.remark like concat('%',#{postCode},'%') and fd.is_publish = '1'
</select>
</mapper> </mapper>

Loading…
Cancel
Save