南昌市物联网技防平台-后台
zengh
2021-06-01 cd2cfd37366002f790a2ed1435962d4eff7d5cec
版本合并
8 files modified
8 files added
581 ■■■■■ changed files
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/controller/EquipmentController.java 28 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/entity/EquipmentPlayInfo.java 57 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/feign/OneNetStudioApi.java 25 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/mapper/EquipmentMapper.java 27 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/mapper/EquipmentMapper.xml 47 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/service/IEquipmentService.java 15 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/service/impl/EquipmentServiceImpl.java 76 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/controller/RiskReportingController.java 45 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/entity/RiskReporting.java 97 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/mapper/RiskReportingMapper.java 14 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/mapper/RiskReportingMapper.xml 15 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/service/RiskReportingService.java 14 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/service/impl/RiskReportingServiceImpl.java 20 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/visitrecord/entity/Visitrecord.java 5 ●●●● patch | view | raw | blame | history
blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java 7 ●●●●● patch | view | raw | blame | history
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java 89 ●●●●● patch | view | raw | blame | history
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/controller/EquipmentController.java
@@ -32,6 +32,7 @@
import org.springblade.jfpt.catalog.service.catalogService;
import org.springblade.jfpt.deploy.service.IDeployService;
import org.springblade.jfpt.equipment.entity.Equipment;
import org.springblade.jfpt.equipment.entity.EquipmentPlayInfo;
import org.springblade.jfpt.equipment.feign.DeptFeignApi;
import org.springblade.jfpt.equipment.feign.RegionFeignApi;
import org.springblade.jfpt.equipment.service.IEquipmentService;
@@ -569,4 +570,31 @@
        return R.data(equipmentService.selEqTypeSum());
    }
    /**
     * 获取设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象,只需包含设备编号,以及视频播放格式即可
     * @param response 响应域,设置跨域
     * @return
     */
    @GetMapping("/selectEquimentPlayInfo")
    public R selectEquimentPlayInfo(EquipmentPlayInfo equipmentPlayInfo,HttpServletResponse response){
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        //返回
        return R.data(equipmentService.selectEquimentPlayInfo(equipmentPlayInfo));
    }
    /**
     * 新增或修改设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象
     * @return
     */
    @PostMapping("/submitEquimentPlayInfo")
    public R submitEquimentPlayInfo(EquipmentPlayInfo equipmentPlayInfo){
        return R.status(equipmentService.saveOrUpdateEquipmentPlayInfo(equipmentPlayInfo));
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/entity/EquipmentPlayInfo.java
New file
@@ -0,0 +1,57 @@
package org.springblade.jfpt.equipment.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * 设备播放地址管理实体
 * @author zhongrj
 * @time 2021-05-21
 */
@Data
@TableName("equipment_play_info")
public class EquipmentPlayInfo implements Serializable {
    /**
     * 主键id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Integer id;
    /**
     * 设备编号
     */
    private String number;
    /**
     * 设备序列号
     */
    @TableField("serial_number")
    private String serialNumber;
    /**
     * 设备厂商名称
     */
    private String manufacturer;
    /**
     * 视频播放格式
     */
    private String bmp;
    /**
     * 视频播放地址
     */
    private String address;
    /**
     * 创建时间
     */
    @TableField("create_time")
    private Date createTime;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/feign/OneNetStudioApi.java
New file
@@ -0,0 +1,25 @@
package org.springblade.jfpt.equipment.feign;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@FeignClient("blade-onenetstudio")
public interface OneNetStudioApi {
    /**
     * 去上线
     * @param equipmentListz 设备 id 集合
     */
    @PostMapping("/onenet/equipmentUp")
    void equipmentUp(@RequestBody List<Long> equipmentListz);
    /**
     * 去下线
     * @param equipmentListl 设备 id 集合
     */
    @PostMapping("/onenet/equipmentDown")
    void equipmentDown(@RequestBody List<Long> equipmentListl);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/mapper/EquipmentMapper.java
@@ -21,6 +21,7 @@
import org.apache.ibatis.annotations.Param;
import org.springblade.jfpt.alarm.vo.AlarmVO;
import org.springblade.jfpt.equipment.entity.Equipment;
import org.springblade.jfpt.equipment.entity.EquipmentPlayInfo;
import org.springblade.jfpt.equipment.vo.EquipmentVO;
import org.springblade.jfpt.equipment.vo.EquipmentVOS;
@@ -110,4 +111,30 @@
     */
    void updateEqListl(@Param("equipmentListl") List<Long> equipmentListl);
    /**
     * 查询在线设备数量
     * @return
     */
    Integer selectOnlineEqNum();
    /**
     * 获取设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象,只需包含设备编号,以及视频播放格式即可
     * @return
     */
    EquipmentPlayInfo selectEquimentPlayInfo(EquipmentPlayInfo equipmentPlayInfo);
    /**
     * 新增设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象
     * @return
     */
    int saveEquipmentPlayInfo(EquipmentPlayInfo equipmentPlayInfo);
    /**
     * 修改设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象
     * @return
     */
    int updateEquipmentPlayInfo(EquipmentPlayInfo equipmentPlayInfo);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/mapper/EquipmentMapper.xml
@@ -202,7 +202,10 @@
            and heartbeat >= DATE_SUB(NOW(),INTERVAL 1 DAY) and dtype=2
        </if>
        <if test="dxtype!=null and dxtype == 3">
            and heartbeat >= DATE_SUB(NOW(),INTERVAL 1 DAY)  and dtype=3
            and dtype=3
        </if>
        <if test="dxtype!=null and dxtype == 4">
            and dtype!=0
        </if>
        <if test="pid!=null and pid!=''">
            and deptId like concat('%',#{pid},'%')
@@ -412,9 +415,9 @@
   dept.id,
   dept.deviceName,
   dept.deviceNumber,
   dept.deviceType,
   dept.serialNumber,
    dept.serialNumber,
   dept.channelNumber,
   dept.deviceType,
   dept.ownership,
   dept.ownerId,
   dept.devicestate,
@@ -482,7 +485,7 @@
    <!--查询设故障数量-->
    <select id="selectEqCg" resultType="Integer">
        select COUNT(*) from sys_equipment where heartbeat >= DATE_SUB(NOW(),INTERVAL 1 DAY) and dtype=3
        select COUNT(*) from sys_equipment where dtype=3
    </select>
    <!--查询所有的设备,不包含故障和警情状态-->
@@ -510,4 +513,40 @@
        </foreach>
    </update>
    <!--查询在线设备数量-->
    <select id="selectOnlineEqNum" resultType="java.lang.Integer">
        select COUNT(*) from sys_equipment where dtype=1 or dtype=2 or dtype=3
    </select>
    <!--获取设备视频播放的信息-->
    <select id="selectEquimentPlayInfo" resultType="org.springblade.jfpt.equipment.entity.EquipmentPlayInfo">
        select * from equipment_play_info
            where
        bmp=#{bmp}
            and
        number=#{number}
            and
        manufacturer =#{manufacturer}
    </select>
<!--    select id,number,serial_number serialNumber,bmp,address from equipment_play_info-->
    <!--新增设备视频播放的信息-->
    <insert id="saveEquipmentPlayInfo">
        INSERT INTO equipment_play_info
        (number, serial_number, manufacturer, bmp, address, create_time)
            VALUES
        (#{number}, #{serialNumber}, #{manufacturer}, #{bmp}, #{address}, #{createTime});
    </insert>
    <!--修改设备视频播放的信息-->
    <update id="updateEquipmentPlayInfo">
        update equipment_play_info
            set
        bmp=#{bmp},address=#{address}
            where
        id=#{id}
    </update>
</mapper>
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/service/IEquipmentService.java
@@ -20,6 +20,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.jfpt.alarm.vo.AlarmVO;
import org.springblade.jfpt.equipment.entity.Equipment;
import org.springblade.jfpt.equipment.entity.EquipmentPlayInfo;
import org.springblade.jfpt.equipment.vo.EquipmentVO;
import org.springblade.jfpt.equipment.vo.EquipmentVOS;
import org.springblade.jfpt.parcel.vo.ConditionVo;
@@ -105,4 +106,18 @@
     * 更新设备状态
     */
    void updateEquipmentDtype();
    /**
     * 获取设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象,只需包含设备编号,以及视频播放格式即可
     * @return
     */
    EquipmentPlayInfo selectEquimentPlayInfo(EquipmentPlayInfo equipmentPlayInfo);
    /**
     * 新增或修改设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象
     * @return
     */
    boolean saveOrUpdateEquipmentPlayInfo(EquipmentPlayInfo equipmentPlayInfo);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/equipment/service/impl/EquipmentServiceImpl.java
@@ -16,25 +16,24 @@
 */
package org.springblade.jfpt.equipment.service.impl;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.core.tool.node.ForestNodeMerger;
import org.springblade.core.tool.utils.Func;
import org.springblade.jfpt.alarm.service.IAlarmService;
import org.springblade.jfpt.alarm.vo.AlarmVO;
import org.springblade.jfpt.equipment.entity.Equipment;
import org.springblade.jfpt.equipment.entity.EquipmentPlayInfo;
import org.springblade.jfpt.equipment.feign.OneNetStudioApi;
import org.springblade.jfpt.equipment.mapper.EquipmentMapper;
import org.springblade.jfpt.equipment.service.IEquipmentService;
import org.springblade.jfpt.equipment.vo.EquipmentVO;
import org.springblade.jfpt.equipment.vo.EquipmentVOS;
import org.springblade.jfpt.parcel.vo.ConditionVo;
import org.springblade.system.cache.SysCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -51,6 +50,9 @@
    //时间差
    private long TIME_DIFFERENCE = 150*1000;
    @Resource
    private OneNetStudioApi oneNetStudioApi;
    @Autowired
    private IAlarmService iAlarmService;
@@ -158,30 +160,8 @@
    public Integer selectEquipmentCount(ConditionVo conditionVo) {
        //更新设备状态
        updateEquipmentDtype();
        //先查询所有的设备
        Integer equipmentCount = baseMapper.selectEqCz();
        System.out.println("equipmentCount = " + equipmentCount);
//        long time = new Date().getTime();
//        long hearbeat = 0;
//        //遍历集合数据,对比心跳时间,得出在线的设备数量
//        int status =0;
//        if (status==0 && equipmentVOS.size()>0){
//            for (EquipmentVO e:equipmentVOS) {
//                try {
//                    if(null!=e.getHeartbeat()) {
//                        hearbeat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(e.getHeartbeat()).getTime();
//                    }
//                } catch (ParseException parseException) {
//                    parseException.printStackTrace();
//                }
//                //对比心跳时间
//                if (null!=e.getDtype()) {
//                    if (time - hearbeat < TIME_DIFFERENCE && e.getDtype()!="2" && e.getDtype()!="3") {
//                        equipmentCount += 1;
//                    }
//                }
//            }
//        }
        //查询在线设备数量
        Integer equipmentCount = baseMapper.selectOnlineEqNum();
        //返回数据
        return equipmentCount;
    }
@@ -271,7 +251,7 @@
    public void updateEquipmentDtype() {
        //查询所有的设备,不包含故障和警情状态
        List<Equipment> equipment = baseMapper.selAllEq();
        long time = new Date().getTime();
        long time = System.currentTimeMillis();
        long hearbeat = 0;
        List<Long> equipmentListz = new ArrayList<>();
        List<Long> equipmentListl = new ArrayList<>();
@@ -284,14 +264,16 @@
                parseException.printStackTrace();
            }
            //对比心跳时间,在线
            if (time-hearbeat<TIME_DIFFERENCE){
                if (null==e.getDtype() || e.getDtype()!="1"){
            if (time-hearbeat< TIME_DIFFERENCE){
                if (null==e.getDtype() || !e.getDtype().equals("1")){
                    //需要修改为上线
                    equipmentListz.add(e.getId());
                }
            }
            //不在线
            if (time-hearbeat>=TIME_DIFFERENCE){
                if (null==e.getDtype() || e.getDtype()!="0"){
                if (null==e.getDtype() || !e.getDtype().equals("0")){
                    //需要修改为下线
                    equipmentListl.add(e.getId());
                }
            }
@@ -299,9 +281,39 @@
        //批量更新数据
        if (equipmentListz.size()>0){
            baseMapper.updateEqListz(equipmentListz);
            // 在 onenet 平台上线
            oneNetStudioApi.equipmentUp(equipmentListz);
        }
        if (equipmentListl.size()>0){
            baseMapper.updateEqListl(equipmentListl);
            //去 onenet 平台下线
            oneNetStudioApi.equipmentDown(equipmentListl);
        }
    }
    /**
     * 获取设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象,只需包含设备编号,以及视频播放格式即可
     * @return
     */
    @Override
    public EquipmentPlayInfo selectEquimentPlayInfo(EquipmentPlayInfo equipmentPlayInfo) {
        return baseMapper.selectEquimentPlayInfo(equipmentPlayInfo);
    }
    /**
     * 新增或修改设备视频播放的信息
     * @param equipmentPlayInfo 视频播放地址对象
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean saveOrUpdateEquipmentPlayInfo(EquipmentPlayInfo equipmentPlayInfo) {
        equipmentPlayInfo.setCreateTime(new Date());
        //新增或修改
        int result = null==equipmentPlayInfo.getId()? baseMapper.saveEquipmentPlayInfo(equipmentPlayInfo)
                                                                      :baseMapper.updateEquipmentPlayInfo(equipmentPlayInfo);
        //返回
        return result>0? true:false;
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/controller/RiskReportingController.java
New file
@@ -0,0 +1,45 @@
package org.springblade.jfpt.riskreporting.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.tool.api.R;
import org.springblade.jfpt.riskreporting.entity.RiskReporting;
import org.springblade.jfpt.riskreporting.service.RiskReportingService;
import org.springblade.jfpt.visitrecord.entity.Visitrecord;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
import java.util.Date;
/**
 * 风险记录控制层
 * @author zhongrj
 * @time 2021-05-26
 */
@RestController
@AllArgsConstructor
@RequestMapping("/riskReporting")
public class RiskReportingController extends BladeController {
    private final RiskReportingService riskReportingService;
    /**
     * 新增风险记录信息
     * @param riskReporting  风险记录对象
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入riskReporting")
    public R save(@Valid @RequestBody RiskReporting riskReporting) {
        //设置信息
        riskReporting.setCreateTime(new Date());
        //请求新增并返回
        return R.status(riskReportingService.insert(riskReporting));
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/entity/RiskReporting.java
New file
@@ -0,0 +1,97 @@
package org.springblade.jfpt.riskreporting.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
 * 风险记录实体类
 */
@Data
@TableName("tb_risk_reporting")
public class RiskReporting implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
     * 租户主键id
     */
    @TableField(value = "tenant_id")
    private String tenantId;
    /**
     * 客户名称
     */
    @TableField(value = "tenant_name")
    private String tenantName;
    /**
     * 客户地址
     */
    private String address;
    /**
     * 联系人
     */
    private String linkman;
    /**
     * 联系电话
     */
    @TableField(value = "contact_number")
    private String contactNumber;
    /**
     * 上报人编号
     */
    @TableField(value = "risk_number")
    private String riskNumber;
    /**
     * 上报人名称
     */
    @TableField(value = "risk_person")
    private String riskPerson;
    /**
     * 风险等级
     */
    @TableField(value = "risk_class")
    private String riskClass;
    /**
     * 风险描述
     */
    @TableField(value = "risk_describe")
    private String riskDescribe;
    /**
     * 上报时间
     */
    @TableField(value = "risk_time")
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    private Date riskTime;
    /**
     * 创建时间
     */
    @TableField(value = "create_time")
    private Date createTime;
    /**
     * 备注信息
     */
    @TableField(value = "desc_info")
    private String descInfo;
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/mapper/RiskReportingMapper.java
New file
@@ -0,0 +1,14 @@
package org.springblade.jfpt.riskreporting.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springblade.jfpt.riskreporting.entity.RiskReporting;
public interface RiskReportingMapper extends BaseMapper<RiskReporting> {
    /**
     * 新增
     * @param riskReporting
     * @return
     */
    int insertRis(RiskReporting riskReporting);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/mapper/RiskReportingMapper.xml
New file
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.jfpt.riskreporting.mapper.RiskReportingMapper">
    <!--查询是否存在安保人员位置-->
    <insert id="insertRis">
        insert into jfpth0.tb_risk_reporting
        (tenant_id,tenant_name,address,linkman,contact_number,risk_number,
            risk_person,risk_class,risk_describe,risk_time,create_time,desc_info)
            VALUES
        (#{tenantId},#{tenantName},#{address},#{linkman},#{contactNumber},#{riskNumber},
            #{riskPerson},#{riskClass},#{riskDescribe},#{riskTime},#{createTime},#{descInfo})
    </insert>
</mapper>
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/service/RiskReportingService.java
New file
@@ -0,0 +1,14 @@
package org.springblade.jfpt.riskreporting.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.jfpt.riskreporting.entity.RiskReporting;
public interface RiskReportingService extends IService<RiskReporting> {
    /**
     * 新增
     * @param riskReporting
     * @return
     */
    boolean insert(RiskReporting riskReporting);
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/riskreporting/service/impl/RiskReportingServiceImpl.java
New file
@@ -0,0 +1,20 @@
package org.springblade.jfpt.riskreporting.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springblade.jfpt.riskreporting.entity.RiskReporting;
import org.springblade.jfpt.riskreporting.mapper.RiskReportingMapper;
import org.springblade.jfpt.riskreporting.service.RiskReportingService;
import org.springframework.stereotype.Service;
@Service
public class RiskReportingServiceImpl extends ServiceImpl<RiskReportingMapper, RiskReporting> implements RiskReportingService {
    /**
     * 新增风险上报信息
     * @param riskReporting
     * @return
     */
    @Override
    public boolean insert(RiskReporting riskReporting) {
        return baseMapper.insertRis(riskReporting)>0?true:false;
    }
}
blade-service/blade-jfpts/src/main/java/org/springblade/jfpt/visitrecord/entity/Visitrecord.java
@@ -19,12 +19,14 @@
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
 * 实体类
@@ -55,7 +57,8 @@
    * 拜访时间
    */
        @ApiModelProperty(value = "拜访时间")
        private LocalDateTime vistime;
        @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
        private Date vistime;
    /**
    * 业主编号
    */
blade-service/blade-system/src/main/java/org/springblade/system/service/ITenantService.java
@@ -50,6 +50,13 @@
    Tenant getByTenantId(String tenantId);
    /**
     * 新增租户信息
     * @param tenant 租户对象信息
     * @return
     */
    boolean insert(Tenant tenant);
    /**
     * 新增
     *
     * @param tenant
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/TenantServiceImpl.java
@@ -160,6 +160,95 @@
        }
    }
    /**
     * 新增租户信息
     * @param tenant 租户对象信息
     * @return
     */
    @Override
    public boolean insert(Tenant tenant) {
        CacheUtil.clear(SYS_CACHE);
        if (Func.isEmpty(tenant.getId())) {
            List<Tenant> tenants = baseMapper.selectList(Wrappers.<Tenant>query().lambda().eq(Tenant::getIsDeleted, BladeConstant.DB_NOT_DELETED));
            List<String> codes = tenants.stream().map(Tenant::getTenantId).collect(Collectors.toList());
            String tenantId = getTenantId(codes);
            tenant.setTenantId(tenantId);
            // 获取参数配置的账号额度
            int accountNumber = Func.toInt(ParamCache.getValue(ACCOUNT_NUMBER_KEY), DEFAULT_ACCOUNT_NUMBER);
            tenant.setAccountNumber(accountNumber);
            // 新建租户对应的默认角色
            Role role = new Role();
            role.setTenantId(tenantId);
            role.setParentId(BladeConstant.TOP_PARENT_ID);
            role.setRoleName("管理员");
            role.setRoleAlias("admin");
            role.setSort(2);
            role.setIsDeleted(BladeConstant.DB_NOT_DELETED);
            roleService.save(role);
            // 新建租户对应的角色菜单权限
            LinkedList<Menu> userMenus = new LinkedList<>();
            // 获取参数配置的默认菜单集合,逗号隔开
            List<String> menuCodes = Func.toStrList(ParamCache.getValue(ACCOUNT_MENU_CODE_KEY));
            List<Menu> menus = getMenus((menuCodes.size() > 0 ? menuCodes : MENU_CODES), userMenus);
            List<RoleMenu> roleMenus = new ArrayList<>();
            menus.forEach(menu -> {
                RoleMenu roleMenu = new RoleMenu();
                roleMenu.setMenuId(menu.getId());
                roleMenu.setRoleId(role.getId());
                roleMenus.add(roleMenu);
            });
            roleMenuService.saveBatch(roleMenus);
            // 新建租户对应的默认部门
            Dept dept = new Dept();
            dept.setTenantId(tenantId);
            dept.setParentId(BladeConstant.TOP_PARENT_ID);
            dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
            dept.setDeptName(tenant.getTenantName());
            dept.setFullName(tenant.getTenantName());
            dept.setDeptCategory(1);
            dept.setSort(2);
            dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
            deptService.save(dept);
            // 新建租户对应的默认岗位
            Post post = new Post();
            post.setTenantId(tenantId);
            post.setCategory(1);
            post.setPostCode("ceo");
            post.setPostName("首席执行官");
            post.setSort(1);
            postService.save(post);
            // 新建租户对应的默认业务字典
//            LinkedList<DictBiz> dictBizs = new LinkedList<>();
//            List<DictBiz> dictBizList = getDictBizs(tenantId, dictBizs);
//            dictBizService.saveBatch(dictBizList);
            // 新建租户对应的默认管理用户
            User user = new User();
            user.setTenantId(tenantId);
            user.setName("admin");
            user.setRealName("admin");
            user.setAccount("admin");
            // 获取参数配置的密码
            String password = Func.toStr(ParamCache.getValue(PASSWORD_KEY), DEFAULT_PASSWORD);
            user.setPassword(password);
            user.setRoleId(String.valueOf(role.getId()));
            user.setDeptId(String.valueOf(dept.getId()));
            user.setPostId(String.valueOf(post.getId()));
            user.setBirthday(new Date());
            user.setSex(1);
            user.setUserType(UserEnum.WEB.getCategory());
            user.setIsDeleted(BladeConstant.DB_NOT_DELETED);
            boolean temp = super.saveOrUpdate(tenant);
            R<Boolean> result = userClient.saveUser(user);
            System.out.println("result = " + result);
            if (!result.isSuccess()) {
                throw new ServiceException(result.getMsg());
            }
            return temp;
        } else {
            return super.saveOrUpdate(tenant);
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean removeTenant(List<Long> ids) {