whyczh
2022-05-17 fa40fbeb5a288d32f8f14e7a40069b2bb38053d7
告警工单部分接口
10个文件已添加
450 ■■■■■ 已修改文件
src/main/java/com/whyc/controller/UserWorkController.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/dto/paramter/UserWorkAlarmParam.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/UserWorkMapper.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/mapper/WorkAlarmMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/UserWork.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/pojo/WorkAlarm.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/UserWorkService.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/service/WorkAlarmService.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/UserWorkMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/WorkAlarmMapper.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/controller/UserWorkController.java
New file
@@ -0,0 +1,56 @@
package com.whyc.controller;
import com.baomidou.mybatisplus.extension.api.R;
import com.whyc.dto.Response;
import com.whyc.dto.paramter.UserWorkAlarmParam;
import com.whyc.mapper.WorkAlarmMapper;
import com.whyc.pojo.UserInf;
import com.whyc.pojo.WorkAlarm;
import com.whyc.service.UserWorkService;
import com.whyc.service.WorkAlarmService;
import com.whyc.util.ActionUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@RestController
@RequestMapping("userwork")
@Api(tags = "告警派单")
@Slf4j
public class UserWorkController {
    @Resource
    private UserWorkService userWorkService;
    @Resource
    private WorkAlarmService workAlarmService;
    @GetMapping("/searchAllByUserIdAndStatus")
    @ApiOperation(value = "获取告警信息")
    public Response searchAllByUserIdAndStatus(int pageNum,int pageSize,Integer status){
        UserInf user = ActionUtil.getUser();
        return workAlarmService.searchByUserIdAndStatus(pageNum,pageSize,user.getUId().intValue(),status);
    }
    @PostMapping("/updateWorkAlarm")
    @ApiOperation(value = "更新工单告警")
    public Response updateWorkAlarm(@RequestBody WorkAlarm workAlarm){
        return workAlarmService.updateWorkAlarm(workAlarm);
    }
    @GetMapping("/searchStatusById")
    @ApiOperation("通过id获取告警状态数据")
    public Response searchStatusById(int id){
        return workAlarmService.searchById(id);
    }
    @PostMapping("/uploadAlarmFile")
    @ApiOperation("上传图片")
    public Response uploadAlarmFile(@RequestParam MultipartFile[] files, @RequestBody UserWorkAlarmParam param){
        return userWorkService.uploadAlarmFile(files,param);
    }
}
src/main/java/com/whyc/dto/paramter/UserWorkAlarmParam.java
New file
@@ -0,0 +1,26 @@
package com.whyc.dto.paramter;
import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class UserWorkAlarmParam {
    private Integer userId;
    private Integer status; //派工告警状态   0:待处理,1:处理中,2:已处理
    private Integer stationId;//站点机房id
    private Integer battGroupId;//电池组id
    private String afterOrBefore;//上传图片为处理前还是处理后
    private PageInfo pageInfo;
}
src/main/java/com/whyc/mapper/UserWorkMapper.java
New file
@@ -0,0 +1,6 @@
package com.whyc.mapper;
import com.whyc.pojo.UserWork;
public interface UserWorkMapper extends CustomMapper<UserWork> {
}
src/main/java/com/whyc/mapper/WorkAlarmMapper.java
New file
@@ -0,0 +1,16 @@
package com.whyc.mapper;
import com.whyc.pojo.BattDevAlarmData;
import com.whyc.pojo.BattalarmData;
import com.whyc.pojo.WorkAlarm;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface WorkAlarmMapper extends CustomMapper<WorkAlarm> {
    List<WorkAlarm> searchByUserIdAndStatus(@Param("uId") int uId, @Param("status") int status);
    List<BattalarmData> getBattAlarm(@Param("num") int num,@Param("recordId") long recordId);
    List<BattDevAlarmData> getDevAlarm(@Param("num") int num,@Param("recordId") long recordId);
}
src/main/java/com/whyc/pojo/UserWork.java
New file
@@ -0,0 +1,53 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.Alias;
import java.util.Date;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="UserWork对象")
@Alias("UserWork")
@TableName(schema = "db_user",value = "tb_user_work")
public class UserWork {
    private Integer id;
    private Integer workId;
    private Integer userId;
    private String imageBefore; //处理前照片
    private String imageAfter;  //处理后照片
    private String description; //告警描述
    private String workWay; //处理方法
    private String workSuggest; //意见建议
    private Integer managerId;  //审核人id
    private String note;    //审核意见
    private Date createTime;
    private Date endTime;
    private Date checkedTime;//审核时间
    /**
     * TODO 建议
     * 审核状态:
     * 0-未派发
     * 1-已派发,待处理
     * 2-处理中
     * 3-待审核
     * 4-已完成
     * -1-已驳回
     *
     */
    /**
     *
     * 审核状态:
     * xx-1-处理中-xx
     * 2-待审核
     * 3-已完成
     * -1 :驳回
     *
     */
    private Integer checkStatus;
}
src/main/java/com/whyc/pojo/WorkAlarm.java
New file
@@ -0,0 +1,49 @@
package com.whyc.pojo;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.apache.ibatis.type.Alias;
import java.util.Date;
import java.util.List;
@Data
@ApiModel(value="WorkAlarm对象")
@TableName(schema = "db_user",value = "tb_work_alarm")
public class WorkAlarm {
    private Integer id;
    private Integer alarmRecId;//告警id(电池组或者设备告警的num)
    private Long alarmRecordId;//唯一识别号(电池组或者设备告警的record_id)
    private Integer stationId;
    private String stationName;
    private Integer battGroupId;//告警所属电池组id
    private String battGroupName;//告警所属电池组id
    /**设备id*/
    private Integer deviceId;
    private Integer alarmLevel;
    private String alarmName;
    private Integer managerId;//管理员id
    private Integer userId;//维护员id
    /**维护员id姓名*/
    private String userName;
    /**
     * 0-未派发
     * 1-已派发,待处理
     * 2-处理中
     * 3-已完成
     */
    private Integer status; //状态
    /**告警发生时间*/
    private Date alarmTime;
    /**工单生成时间*/
    private Date createTime;
    private Date dispatchTime;//派单时间
    //告警信息
    private BattalarmData alarmData;
    //告警处理信息以及审核状态
    private List<UserWork> userWorkList;
    private Integer flag;
}
src/main/java/com/whyc/service/UserWorkService.java
New file
@@ -0,0 +1,109 @@
package com.whyc.service;
import com.whyc.dto.Response;
import com.whyc.dto.paramter.UserWorkAlarmParam;
import com.whyc.mapper.UserWorkMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.system.ApplicationHome;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Service
public class UserWorkService {
    @Resource
    private UserWorkMapper mapper;
    @Autowired
    private Environment environment;
    public Response uploadAlarmFile(MultipartFile[] file, UserWorkAlarmParam param) {
        String fileDirName = "";
        int configType = Integer.parseInt(environment.getProperty("configFile.type"));
        ApplicationHome applicationHome = new ApplicationHome(getClass());
        File jarFile = applicationHome.getDir();
        //测试版
        if(configType==1){
            fileDirName = jarFile.getParentFile().toString();
        }else{
            //打包版
            fileDirName = jarFile.toString();
        }
        String root=fileDirName+"/stationsrc/alarm"+ param.getStationId() + "/" + param.getAfterOrBefore() + "/";
        List<String> filePathList = new ArrayList<>();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        boolean isSuccess = false;
        try {
            for (int i = 0; i < file.length && param != null; i++) {
                String fileFileName = file[i].getOriginalFilename();
                fileFileName= fileFileName.replace(".","_"+sdf.format(new Date())+".");
                String filePath = root + fileFileName;
                createFilefolderIFNotExist(filePath);
                file[i].transferTo(new File(filePath));
                isSuccess = true;
                filePathList.add(filePath);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (isSuccess) {
            return new Response().set(1,filePathList,"上传成功");
        } else {
            return new Response().set(0,false,"上传失败");
        }
    }
    //将文件复制到指定的目录
    public void copyFile(File oldFile, String newPath){
        File file = new File(newPath);
        FileInputStream in = null;
        FileOutputStream out = null;
        try {
            in = new FileInputStream(oldFile);
            out = new FileOutputStream(file);;
            byte[] buffer=new byte[2097152];
            int readByte = 0;
            while((readByte = in.read(buffer)) != -1){
                out.write(buffer, 0, readByte);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if(in != null){
                try {
                    in.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if(out != null){
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public void createFilefolderIFNotExist(String filePath){
        File f = new File(filePath);
        if(!f.exists()){
            if(!f.getParentFile().exists()){
                f.getParentFile().mkdirs();
            }
        }
    }
}
src/main/java/com/whyc/service/WorkAlarmService.java
New file
@@ -0,0 +1,91 @@
package com.whyc.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.api.R;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.dto.Response;
import com.whyc.mapper.UserWorkMapper;
import com.whyc.mapper.WorkAlarmMapper;
import com.whyc.mapper.WorkflowAlarmMapper;
import com.whyc.pojo.BattDevAlarmData;
import com.whyc.pojo.BattalarmData;
import com.whyc.pojo.UserWork;
import com.whyc.pojo.WorkAlarm;
import com.whyc.util.RSAUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class WorkAlarmService {
    @Resource
    private WorkAlarmMapper mapper;
    @Resource
    private UserWorkMapper userWorkMapper;
    public Response searchByUserIdAndStatus(int pageNum,int pageSize,Integer uId,Integer status){
        PageHelper.startPage(pageNum,pageSize);
        //Integer status = null;
        ////查询全部列表
        //if(pageInfo.getNote()==1){
        //    status = null;
        //}
        ////查询待处理列表
        //else if(pageInfo.getNote()==2){
        //    status = 1;
        //}
        ////查询处理中列表
        //else if(pageInfo.getNote()==3){
        //    status = 2;
        //}
        ////查询已完成列表
        //else if(pageInfo.getNote()==4){
        //    status = 3;
        //}
        List<WorkAlarm> list = mapper.searchByUserIdAndStatus(uId,status);
        PageInfo pageInfo = new PageInfo(list);
        return new Response().set(1,pageInfo,"查询成功");
    }
    public Response updateWorkAlarm(WorkAlarm workAlarm){
        int flag = mapper.updateById(workAlarm);
        return new Response().set(1,flag>0?true:false);
    }
    public Response searchById(int id){
        WorkAlarm result = mapper.selectById(id);
        //去告警表查询是否存在
        int flag = 1;
        if (result.getAlarmRecordId()==null){
            flag = 0;
        }
        boolean bl = alarmIsExist(result.getAlarmRecId(),result.getAlarmRecordId());
        if (!bl){
            flag = 0;
        }
        result.setFlag(flag);
        QueryWrapper<UserWork> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("workId",id);
        queryWrapper.orderByDesc("endTime");
        List<UserWork> list = userWorkMapper.selectList(queryWrapper);
        result.setUserWorkList(list);
        return new Response().set(1,result,"查询成功");
    }
    public boolean alarmIsExist(int num,long recordId){
        boolean bl = false;
        List<BattalarmData> list = mapper.getBattAlarm(num,recordId);
        if (list != null && list.size() > 0) {
            bl = true;
        }
        List<BattDevAlarmData> list2 = mapper.getDevAlarm(num,recordId);
        if (list2 != null && list2.size() > 0) {
            bl = true;
        }
        return bl;
    }
}
src/main/resources/mapper/UserWorkMapper.xml
New file
@@ -0,0 +1,6 @@
<?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="com.whyc.mapper.UserWorkMapper" >
</mapper>
src/main/resources/mapper/WorkAlarmMapper.xml
New file
@@ -0,0 +1,38 @@
<?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="com.whyc.mapper.WorkAlarmMapper" >
    <select id="searchByUserIdAndStatus" resultType="com.whyc.pojo.WorkAlarm">
        select alarm.* bInf.StationName as stationName
        from db_user.tb_work_alarm alarm
        inner join db_battinf.tb_battinf bInf on alarm.deviceId = bInf.FBSDeviceId
        <where>
            <if test="uId!=null">
                and alarm.userId = #{uId}
            </if>
            <if test="status!=null">
                and status = #{status}
            </if>
        </where>
        union select alarm.* bInf.StationName as stationName
        from db_user.tb_work_alarm alarm
        inner join db_battinf.tb_battinf bInf on alarm.battGroupId = bInf.battGroupId
        <where>
            <if test="uId!=null">
                and alarm.userId = #{uId}
            </if>
            <if test="status!=null">
                and status = #{status}
            </if>
        </where>
    </select>
    <select id="getBattAlarm" resultType="com.whyc.pojo.BattalarmData">
        select num from db_alarm.tb_battalarm_data where num = #{num} and Record_Id = #{recordId}
    </select>
    <select id="getDevAlarm" resultType="com.whyc.pojo.BattDevAlarmData">
        select num from db_alarm.tb_devalarm_data where num = #{num} and record_id = #{recordId}
    </select>
</mapper>