吉安感知网项目-后端
linwei
2026-04-07 c5badf4a2eafbaa4eff00f0941807626dda1d8ff
opt: 人大金仓数据库改造
4 files modified
39 ■■■■ changed files
drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java 16 ●●●●● patch | view | raw | blame | history
drone-service/drone-system/src/main/java/org/sxkj/system/controller/DeptController.java 7 ●●●● patch | view | raw | blame | history
drone-service/drone-system/src/main/java/org/sxkj/system/mapper/UserMapper.java 8 ●●●● patch | view | raw | blame | history
drone-service/drone-system/src/main/java/org/sxkj/system/mapper/UserMapper.xml 8 ●●●●● patch | view | raw | blame | history
drone-service/drone-fw/src/main/java/org/sxkj/fw/detection/service/impl/FwDeviceConfigServiceImpl.java
@@ -62,19 +62,33 @@
        return baseMapper.resetLatestByDeviceId(deviceId, excludeId);
    }
    /**
     * 新增或修改设备配置
     * <p>
     * 业务逻辑说明:
     * 1. 新增配置时:自动分配版本号(最大版本号+1),标记为最新版本,并将该设备其他配置的is_latest重置为0
     * 2. 更新配置时:保留原有版本号和is_latest标识(除非显式传入新值),若设置is_latest=1则重置该设备其他配置
     * </p>
     *
     * @param fwDeviceConfig 设备配置实体对象,必须包含deviceId;更新时需包含id
     * @return R 操作结果,成功返回R.status(true),失败返回错误信息
     */
    @Override
    public R saveOrUpdateConfig(FwDeviceConfigEntity fwDeviceConfig) {
        // 参数校验:设备ID不能为空
        if (fwDeviceConfig == null || fwDeviceConfig.getDeviceId() == null) {
            return R.fail("设备id不能为空");
        }
        Long deviceId = fwDeviceConfig.getDeviceId();
        FwDeviceConfigEntity existing = null;
        // 判断是更新操作还是新增操作
        if (fwDeviceConfig.getId() != null) {
            existing = this.getById(fwDeviceConfig.getId());
            if (existing == null) {
                return R.fail("数据不存在");
            }
        }
        // 处理新增配置逻辑
        if (existing == null) {
            Integer maxVersion = this.selectMaxConfigVersion(deviceId);
            fwDeviceConfig.setConfigVersion(maxVersion == null ? 1 : maxVersion + 1);
@@ -83,12 +97,14 @@
            return R.status(this.save(fwDeviceConfig));
        }
        // 处理更新配置逻辑:保留原有字段值(除非显式传入新值)
        if (fwDeviceConfig.getConfigVersion() == null) {
            fwDeviceConfig.setConfigVersion(existing.getConfigVersion());
        }
        if (fwDeviceConfig.getIsLatest() == null) {
            fwDeviceConfig.setIsLatest(existing.getIsLatest());
        }
        // 如果设置为最新版本,需要重置该设备其他配置的is_latest标识
        if (fwDeviceConfig.getIsLatest() != null && fwDeviceConfig.getIsLatest() == 1) {
            this.resetLatestByDeviceId(deviceId, fwDeviceConfig.getId());
        }
drone-service/drone-system/src/main/java/org/sxkj/system/controller/DeptController.java
@@ -211,11 +211,8 @@
        if (deptService.submit(deptEntity)) {
            CacheUtil.clear(SYS_CACHE);
            CacheUtil.clear(SYS_CACHE, Boolean.FALSE);
            // 修正后的代码
            List<User> userList = userMapper.selectList(
                new LambdaQueryWrapper<User>()
                    .apply("dept_id = ?", String.valueOf(dept.getId()))// 关键点:转为 String
            );
            // 根据部门ID查询用户列表
            List<User> userList = userMapper.selectUsersByDeptId(String.valueOf(dept.getId()));
            if (!userList.isEmpty()) {
                List<Long> userIds = userList.stream().map(User::getId).collect(Collectors.toList());
                userMapper.updateUserAreaCode(dept.getAreaCode(), userIds);
drone-service/drone-system/src/main/java/org/sxkj/system/mapper/UserMapper.java
@@ -62,6 +62,12 @@
    void updateUserAreaCode(String areaCode, List<Long> userIds);
    /**
     * 根据部门ID查询用户列表
     *
     * @param deptId 部门ID
     * @return 用户列表
     */
    List<User> selectUsersByDeptId(@Param("deptId") String deptId);
}
drone-service/drone-system/src/main/java/org/sxkj/system/mapper/UserMapper.xml
@@ -97,4 +97,12 @@
        </foreach>
    </update>
    <!-- 根据部门ID查询用户列表 -->
    <select id="selectUsersByDeptId" resultMap="userResultMap">
        SELECT *
        FROM blade_user
        WHERE dept_id = #{deptId}
        AND is_deleted = 0
    </select>
</mapper>