whyclxw
2025-05-28 e16302f9d475c7cc4dd18c5abf1a23cb5502e362
src/main/java/com/whyc/service/FaultUploadService.java
@@ -4,11 +4,19 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.whyc.constant.RoleEnum;
import com.whyc.constant.UserConstant;
import com.whyc.constant.WorkflowEnum;
import com.whyc.dto.Response;
import com.whyc.mapper.FaultUploadMapper;
import com.whyc.pojo.BaoJiGroup;
import com.whyc.pojo.FaultUpload;
import com.whyc.pojo.UserInf;
import com.whyc.pojo.WorkflowMain;
import com.whyc.util.ActionUtil;
import com.whyc.util.DateUtil;
import com.whyc.util.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@@ -21,13 +29,58 @@
    @Resource
    private FaultUploadMapper mapper;
    @Autowired
    private BaoJiGroupService baoJiGroupService;
    @Autowired
    private UserService userService;
    @Autowired
    private WorkflowMainService mainService;
    public Response add(FaultUpload fault) {
        int userId = ActionUtil.getUser().getUId().intValue();
        Date now = new Date();
        fault.setUploadUserId(userId);
        fault.setCreateTime(now);
        mapper.insert(fault);
        return new Response().setII(1,"上传完成");
        //校验,只能上传未上传过 或者 上传已被拒绝的 记录
        boolean enableUpload = checkRecord(fault);
        if(enableUpload) {
            int userId = ActionUtil.getUser().getUId().intValue();
            Date now = new Date();
            //主表提交,节点表提交
            int mainId = mainService.submit(fault.getDescription(),
                    WorkflowEnum.MAIN_TYPE_FAULT_UPLOAD.getValue(),
                    "告警隐患",
                    "GJYH",
                    userId,
                    RoleEnum.ADMIN.getId(),
                    now,
                    "P2");
            //关联上报表
            fault.setMainId(mainId);
            fault.setUploadUserId(userId);
            fault.setCreateTime(now);
            fault.setStatus(0);
            mapper.insert(fault);
            return new Response().set(1,true, "上传完成");
        }else {
            return new Response().set(1,false,"无法上传,已存在上传记录");
        }
    }
    //校验,只能上传未上传过 或者 上传已被拒绝的 记录
    private boolean checkRecord(FaultUpload fault) {
        boolean enableUpload = true;
        QueryWrapper<FaultUpload> query = Wrappers.query();
        query.eq("alarm_num",fault.getAlarmNum()).last(" limit 1");
        FaultUpload faultUploadDB = mapper.selectOne(query);
        if(faultUploadDB!=null){
            WorkflowMain main = mainService.getOne(faultUploadDB.getMainId());
            if(main.getStatus().intValue() == WorkflowEnum.MAIN_STATUS_DEALING.getValue()
                    || main.getStatus().intValue() == WorkflowEnum.MAIN_STATUS_END_PASS.getValue()
            ){
                enableUpload = false;
            }
        }
        return enableUpload;
    }
    public Response updateConfirm(FaultUpload fault) {
@@ -39,49 +92,54 @@
        return new Response().setII(1,"确认完成");
    }
    public Response listPage(int pageNum, int pageSize, FaultUpload upload) {
    public Response listPage(int pageNum, int pageSize, FaultUpload upload,int userId) {
        PageHelper.startPage(pageNum,pageSize);
        int userId = ActionUtil.getUser().getUId().intValue();
        List<FaultUpload> faultUploads = mapper.getList(userId,upload);
        PageInfo<FaultUpload> pageInfo = new PageInfo<>(faultUploads);
        return new Response().set(1,pageInfo);
    }
    public Response listPage2(int pageNum, int pageSize, FaultUpload upload) {
        PageHelper.startPage(pageNum,pageSize);
        int userId = ActionUtil.getUser().getUId().intValue();
        List<FaultUpload> faultUploads = mapper.getList2(userId,upload);
        PageInfo<FaultUpload> pageInfo = new PageInfo<>(faultUploads);
        return new Response().set(1,pageInfo);
    }
    public Response getTypeNum() {
        int userId = ActionUtil.getUser().getUId().intValue();
        FaultUpload upload = new FaultUpload();
        List<FaultUpload> faultUploads = mapper.getList(userId,upload);
        Map<Integer, List<FaultUpload>> typeListMap = faultUploads.stream().collect(Collectors.groupingBy(FaultUpload::getType));
        Map<Integer,Integer> typeMap = new HashMap<>();
        Set<Integer> typeSet = typeListMap.keySet();
        for (Integer type : typeSet) {
            typeMap.put(type,typeListMap.get(type).size());
        //联查拆分,组装 用户名
        List<UserInf> users = userService.getAll();
        Map<Long, List<UserInf>> userIdListMap = users.stream().collect(Collectors.groupingBy(UserInf::getUId));
        for (FaultUpload faultUpload : faultUploads) {
            faultUpload.setUploadUserName(userIdListMap.get(Long.valueOf(faultUpload.getUploadUserId() +"")).get(0).getUName());
            if(faultUpload.getConfirmUserId()!=null) {
                faultUpload.setConfirmUserName(userIdListMap.get(Long.valueOf(faultUpload.getConfirmUserId() + "")).get(0).getUName());
            }
        }
        return new Response().set(1,typeMap);
        PageInfo<FaultUpload> pageInfo = new PageInfo<>(faultUploads);
        return new Response().set(1,pageInfo);
    }
    public Response groupNameCount(int timeType) {
        int userId = ActionUtil.getUser().getUId().intValue();
    public Response listPage2(int pageNum, int pageSize, FaultUpload upload, int userId) {
        PageHelper.startPage(pageNum,pageSize);
        List<FaultUpload> faultUploads = mapper.getList2(userId,upload);
        //联查拆分,组装 用户名
        List<UserInf> users = userService.getAll();
        Map<Long, List<UserInf>> userIdListMap = users.stream().collect(Collectors.groupingBy(UserInf::getUId));
        for (FaultUpload faultUpload : faultUploads) {
            faultUpload.setUploadUserName(userIdListMap.get(Long.valueOf(faultUpload.getUploadUserId() +"")).get(0).getUName());
            if(faultUpload.getConfirmUserId() !=null) {
                faultUpload.setConfirmUserName(userIdListMap.get(Long.valueOf(faultUpload.getConfirmUserId() + "")).get(0).getUName());
            }
        }
        PageInfo<FaultUpload> pageInfo = new PageInfo<>(faultUploads);
        return new Response().set(1,pageInfo);
    }
    public Response getTypeCount(Integer timeType, int userId) {
        FaultUpload upload = new FaultUpload();
        Date now = new Date();
        String uploadStartTime = null;
        String uploadEndTime = null;
        if(timeType == 1){
        if(timeType == null) {
            //不操作
        }else if(timeType == 1){
            //本月
            Calendar monthStart = Calendar.getInstance();
            monthStart.setTime(now);
            //设置为1号,当前日期既为本月第一天
            monthStart.set(Calendar.DAY_OF_MONTH,1);
            monthStart.set(Calendar.HOUR, 0);
            monthStart.set(Calendar.HOUR_OF_DAY, 0);
            monthStart.set(Calendar.MINUTE, 0);
            monthStart.set(Calendar.SECOND, 0);
@@ -89,18 +147,20 @@
            monthEnd.setTime(now);
            //设置为1号,当前日期既为本月第一天
            monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
            monthEnd.set(Calendar.HOUR, 23);
            monthEnd.set(Calendar.HOUR_OF_DAY, 23);
            monthEnd.set(Calendar.MINUTE, 59);
            monthEnd.set(Calendar.SECOND, 59);
            uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());
           /* uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());*/
            uploadStartTime = ThreadLocalUtil.format(monthStart.getTime(),1);
            uploadEndTime = ThreadLocalUtil.format(monthEnd.getTime(),1);
        }else if(timeType == 2){
            //本季度
            Calendar monthStart = Calendar.getInstance();
            monthStart.setTime(now);
            monthStart.set(Calendar.DAY_OF_MONTH,1);
            monthStart.set(Calendar.HOUR, 0);
            monthStart.set(Calendar.HOUR_OF_DAY, 0);
            monthStart.set(Calendar.MINUTE, 0);
            monthStart.set(Calendar.SECOND, 0);
@@ -108,7 +168,7 @@
            monthEnd.setTime(now);
            //设置为1号,当前日期既为本月第一天
            monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
            monthEnd.set(Calendar.HOUR, 23);
            monthEnd.set(Calendar.HOUR_OF_DAY, 23);
            monthEnd.set(Calendar.MINUTE, 59);
            monthEnd.set(Calendar.SECOND, 59);
@@ -129,15 +189,17 @@
                monthStart.set(Calendar.MONTH,9);
                monthEnd.set(Calendar.MONTH,11);
            }
            uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());
        }else{
           /* uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());*/
            uploadStartTime = ThreadLocalUtil.format(monthStart.getTime(),1);
            uploadEndTime =ThreadLocalUtil.format(monthEnd.getTime(),1);
        }else if(timeType ==3){
            //年度
            Calendar monthStart = Calendar.getInstance();
            monthStart.setTime(now);
            monthStart.set(Calendar.MONTH,0);
            monthStart.set(Calendar.DAY_OF_MONTH,1);
            monthStart.set(Calendar.HOUR, 0);
            monthStart.set(Calendar.HOUR_OF_DAY, 0);
            monthStart.set(Calendar.MINUTE, 0);
            monthStart.set(Calendar.SECOND, 0);
@@ -146,25 +208,225 @@
            //设置为1号,当前日期既为本月第一天
            monthEnd.set(Calendar.MONTH,11);
            monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
            monthEnd.set(Calendar.HOUR, 23);
            monthEnd.set(Calendar.HOUR_OF_DAY, 23);
            monthEnd.set(Calendar.MINUTE, 59);
            monthEnd.set(Calendar.SECOND, 59);
            uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());
            /*uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());*/
            uploadStartTime = ThreadLocalUtil.format(monthStart.getTime(),1);
            uploadEndTime = ThreadLocalUtil.format(monthEnd.getTime(),1);
        }
        upload.setUploadStartTime(uploadStartTime);
        upload.setUploadEndTime(uploadEndTime);
        List<FaultUpload> faultUploads = mapper.getList(userId,upload);
        Map<Integer, List<FaultUpload>> typeListMap = faultUploads.stream().collect(Collectors.groupingBy(FaultUpload::getType));
        Map<Integer,Integer> typeMap = new LinkedHashMap<>( );
        typeMap.put(0,0);
        int total = 0;
        Set<Integer> typeSet = typeListMap.keySet();
        for (Integer type : typeSet) {
            int size = typeListMap.get(type).size();
            total+=size;
            typeMap.put(type, size);
        }
        typeMap.put(0,total);
        return new Response().set(1,typeMap);
    }
    public Response groupNameCount(int timeType, int userId) {
        FaultUpload upload = new FaultUpload();
        String uploadStartTime = null;
        String uploadEndTime = null;
        if(timeType == 1){
            //本月
            Calendar monthStart = Calendar.getInstance();
            //设置为1号,当前日期既为本月第一天
            monthStart.set(Calendar.DAY_OF_MONTH,1);
            monthStart.set(Calendar.HOUR_OF_DAY, 0);
            monthStart.set(Calendar.MINUTE, 0);
            monthStart.set(Calendar.SECOND, 0);
            Calendar monthEnd = Calendar.getInstance();
            //设置为1号,当前日期既为本月第一天
            monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
            monthEnd.set(Calendar.HOUR_OF_DAY, 23);
            monthEnd.set(Calendar.MINUTE, 59);
            monthEnd.set(Calendar.SECOND, 59);
           /* uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());*/
            uploadStartTime = ThreadLocalUtil.format(monthStart.getTime(),1);
            uploadEndTime = ThreadLocalUtil.format(monthEnd.getTime(),1);
        }else if(timeType == 2){
            //本季度
            Calendar monthStart = Calendar.getInstance();
            monthStart.set(Calendar.DAY_OF_MONTH,1);
            monthStart.set(Calendar.HOUR_OF_DAY, 0);
            monthStart.set(Calendar.MINUTE, 0);
            monthStart.set(Calendar.SECOND, 0);
            Calendar monthEnd = Calendar.getInstance();
            //定位是第几季度
            int i = monthStart.get(Calendar.MONTH);
            if (i<=2){ // 0,1,2
                monthStart.set(Calendar.MONTH,0);
                monthEnd.set(Calendar.MONTH,2);
            }
            else if(i<=5){ // 3,4,5
                monthStart.set(Calendar.MONTH,3);
                monthEnd.set(Calendar.MONTH,5);
            }
            else if(i<=8){ // 6,7,8
                monthStart.set(Calendar.MONTH,6);
                monthEnd.set(Calendar.MONTH,8);
            }else{ //9,10,11
                monthStart.set(Calendar.MONTH,9);
                monthEnd.set(Calendar.MONTH,11);
            }
            //设置为1号,当前日期既为本月第一天
            monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
            monthEnd.set(Calendar.HOUR_OF_DAY, 23);
            monthEnd.set(Calendar.MINUTE, 59);
            monthEnd.set(Calendar.SECOND, 59);
           /* uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());*/
            uploadStartTime = ThreadLocalUtil.format(monthStart.getTime(),1);
            uploadEndTime = ThreadLocalUtil.format(monthEnd.getTime(),1);
        }else{
            //年度
            Calendar monthStart = Calendar.getInstance();
            monthStart.set(Calendar.MONTH,0);
            monthStart.set(Calendar.DAY_OF_MONTH,1);
            monthStart.set(Calendar.HOUR_OF_DAY, 0);
            monthStart.set(Calendar.MINUTE, 0);
            monthStart.set(Calendar.SECOND, 0);
            Calendar monthEnd = Calendar.getInstance();
            //设置为1号,当前日期既为本月第一天
            monthEnd.set(Calendar.MONTH,11);
            monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
            monthEnd.set(Calendar.HOUR_OF_DAY, 23);
            monthEnd.set(Calendar.MINUTE, 59);
            monthEnd.set(Calendar.SECOND, 59);
            //uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
            //uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());
            uploadStartTime = ThreadLocalUtil.format(monthStart.getTime(),1);
            uploadEndTime =ThreadLocalUtil.format(monthEnd.getTime(),1);
        }
        upload.setUploadStartTime(uploadStartTime);
        upload.setUploadEndTime(uploadEndTime);
        List<FaultUpload> list = mapper.getList2(userId, upload);
        Map<String, List<FaultUpload>> groupNameListMap = list.stream().collect(Collectors.groupingBy(FaultUpload::getGroupName));
        Map<String,Integer> groupNameCountMap = new HashMap<>();
        Set<String> groupNameSet = groupNameListMap.keySet();
        for (String groupName : groupNameSet) {
            groupNameCountMap.put(groupName,groupNameListMap.get(groupName).size());
        //初始化 班组列表
        Map<String,Integer> groupNameCountMap = new LinkedHashMap<>();
        groupNameCountMap.put("总数",0);
        int total = 0;
        List<BaoJiGroup> baoJiGroups = baoJiGroupService.getBaoJiGroupNameListByFlag(1);
        for (BaoJiGroup baoJiGroup : baoJiGroups) {
            groupNameCountMap.put(baoJiGroup.getBaoJiGroupName(),0);
        }
        Set<String> groupNameSet = groupNameListMap.keySet();
        for (String groupName : groupNameSet) {
            int size = groupNameListMap.get(groupName).size();
            total+=size;
            groupNameCountMap.put(groupName, size);
        }
        groupNameCountMap.put("总数",total);
        return new Response().set(1,groupNameCountMap);
    }
    public Response getListOfLastPeriod(int type, int userId) {
        FaultUpload upload = new FaultUpload();
        Date now = new Date();
        Calendar instance = Calendar.getInstance();
        instance.setTime(now);
        if(type == 1){
            instance.add(Calendar.DATE,-7);
        }else{
            instance.add(Calendar.DATE,-30);
        }
        /*upload.setUploadStartTime(DateUtil.YYYY_MM_DD_HH_MM_SS.format(instance.getTime()));
        upload.setUploadEndTime(DateUtil.YYYY_MM_DD_HH_MM_SS.format(now));*/
        upload.setUploadStartTime(ThreadLocalUtil.format(instance.getTime(),1));
        upload.setUploadEndTime(ThreadLocalUtil.format(now,1));
        List<FaultUpload> faultUploads = mapper.getList(userId, upload);
        //联查拆分,组装 用户名
        List<UserInf> users = userService.getAll();
        Map<Long, List<UserInf>> userIdListMap = users.stream().collect(Collectors.groupingBy(UserInf::getUId));
        for (FaultUpload faultUpload : faultUploads) {
            faultUpload.setUploadUserName(userIdListMap.get(Long.valueOf(faultUpload.getUploadUserId() +"")).get(0).getUName());
        }
        return new Response().set(1,faultUploads);
    }
    public Response getMyUploadStatusCount(int userId) {
        Map<String,Integer> map = new HashMap<>();
        FaultUpload upload = new FaultUpload();
        //年度
        Calendar monthStart = Calendar.getInstance();
        monthStart.set(Calendar.MONTH,0);
        monthStart.set(Calendar.DAY_OF_MONTH,1);
        monthStart.set(Calendar.HOUR_OF_DAY, 0);
        monthStart.set(Calendar.MINUTE, 0);
        monthStart.set(Calendar.SECOND, 0);
        Calendar monthEnd = Calendar.getInstance();
        //设置为1号,当前日期既为本月第一天
        monthEnd.set(Calendar.MONTH,11);
        monthEnd.set(Calendar.DAY_OF_MONTH,monthEnd.getActualMaximum(Calendar.DAY_OF_MONTH));
        monthEnd.set(Calendar.HOUR_OF_DAY, 23);
        monthEnd.set(Calendar.MINUTE, 59);
        monthEnd.set(Calendar.SECOND, 59);
        /*String uploadStartTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthStart.getTime());
        String uploadEndTime = DateUtil.YYYY_MM_DD_HH_MM_SS.format(monthEnd.getTime());*/
        String uploadStartTime =ThreadLocalUtil.format(monthStart.getTime(),1);
        String uploadEndTime = ThreadLocalUtil.format(monthEnd.getTime(),1);
        upload.setUploadStartTime(uploadStartTime);
        upload.setUploadEndTime(uploadEndTime);
        List<FaultUpload> list = mapper.getList(userId, upload);
        List<FaultUpload> confirmedList = list.stream().filter(temp -> temp.getStatus() == 1).collect(Collectors.toList());
        List<FaultUpload> myList = list.stream().filter(temp -> temp.getUploadUserId() == userId).collect(Collectors.toList());
        List<FaultUpload> myConfirmedList = myList.stream().filter(temp -> temp.getStatus() == 1).collect(Collectors.toList());
        //班组 上报总数,已确认数量
        map.put("groupUploadNum",list.size());
        map.put("groupUploadConfirmedNum",confirmedList.size());
        //我的 上报总数,已确认数量
        map.put("myUploadNum",myList.size());
        map.put("myUploadConfirmedNum",myConfirmedList.size());
        return new Response().set(1,map);
    }
    public Map<String, FaultUpload> getUploadWithGroupName(int userId) {
        Map<String, FaultUpload> resMap = new HashMap<>();
        //int userId = ActionUtil.getUser().getUId().intValue();
        int year = Calendar.getInstance().get(Calendar.YEAR);
        List<FaultUpload> list = mapper.getListWithGroupName(userId, year);
        Map<String, List<FaultUpload>> userListMap = list.stream().collect(Collectors.groupingBy(FaultUpload::getUploadUserName));
        Set<String> userNameSet = userListMap.keySet();
        for (String userName : userNameSet) {
            List<FaultUpload> faultUploads = userListMap.get(userName);
            List<FaultUpload> confirmedList = faultUploads.stream().filter(temp -> temp.getStatus() == 1).collect(Collectors.toList());
            FaultUpload upload = new FaultUpload();
            upload.setTotalNum(faultUploads.size());
            upload.setConfirmedNum(confirmedList.size());
            upload.setGroupName(faultUploads.get(0).getGroupName());
            resMap.put(userName,upload);
        }
        return resMap;
    }
}