xiangpei
2024-09-01 99b53c056b309b935c8eb23a0ddf244bd4f4df96
报备功能优化
11个文件已修改
8个文件已添加
1个文件已删除
551 ■■■■ 已修改文件
ycl-common/src/main/java/enumeration/general/ErrorTypeEnum.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportAuditingRecord.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportErrorType.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/ReportAuditingRecordMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/ReportErrorTypeMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ReportAuditingRecordService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ReportErrorTypeService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportAuditingRecordServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportErrorTypeServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java 177 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/ContractTask.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/enumeration/general/ErrorTypeEnum.java
File was deleted
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/Report.java
@@ -39,10 +39,6 @@
    @TableField("report_type")
    private String reportType;
    @ApiModelProperty("审核时间")
    @TableField("auditing_time")
    private Date auditingTime;
    @ApiModelProperty("报备内容")
    @TableField("report_content")
    private String reportContent;
@@ -55,13 +51,9 @@
    @TableField("error_type")
    private String errorType;
    @ApiModelProperty("状态")
    @ApiModelProperty("状态: 0:未审核,1:审核通过,2:审核驳回")
    @TableField("status")
    private Integer status;
    @ApiModelProperty("审核意见")
    @TableField("audit_opinion")
    private String auditOpinion;
    @ApiModelProperty("生效时间")
    @TableField("begin_create_time")
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportAuditingRecord.java
New file
@@ -0,0 +1,54 @@
package com.ycl.platform.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
/**
 * 报备审核记录
 *
 * @author:xp
 * @date:2024/9/1 21:03
 */
@Data
@TableName("t_report_auditing_record")
public class ReportAuditingRecord {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 报备id
     */
    @TableField("report_id")
    private Integer reportId;
    /**
     * 审核结果
     */
    @TableField("result")
    private Boolean result;
    /**
     * 审核意见
     */
    @TableField("result_remark")
    private String resultRemark;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date createTime;
    /**
     * 逻辑删除
     */
    @TableField(value = "deleted", fill = FieldFill.INSERT)
    private Integer deleted;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/ReportErrorType.java
New file
@@ -0,0 +1,41 @@
package com.ycl.platform.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ycl.platform.base.AbsEntity;
import lombok.Data;
import java.util.Date;
/**
 * 报备故障类型
 *
 * @author:xp
 * @date:2024/9/1 15:42
 */
@Data
@TableName("t_report_error_type")
public class ReportErrorType {
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date createTime;
    @TableField("report_id")
    private Integer reportId;
    @TableField("error_type")
    private String errorType;
    /**
     * 逻辑删除
     */
    @TableField(value = "deleted", fill = FieldFill.INSERT)
    private Integer deleted;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/form/ReportForm.java
@@ -15,6 +15,7 @@
import org.springframework.web.multipart.MultipartFile;
import java.util.Date;
import java.util.List;
/**
 * 报备表单
@@ -31,7 +32,7 @@
    private Integer peopleId;
    @ApiModelProperty("点位")
    @ApiModelProperty("点位国标码")
    private String pointId;
    @ApiModelProperty("导入点位")
@@ -45,7 +46,7 @@
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date endCreateTime;
    @ApiModelProperty("审核类型")
    @ApiModelProperty("报备类型")
    private String reportType;
    @NotBlank(message = "报备内容不能为空", groups = {Add.class, Update.class})
@@ -57,7 +58,7 @@
    private String reportMaterials;
    @ApiModelProperty("故障类型")
    private String errorType;
    private List<String> errorTypeList;
    public static Report getEntityByForm(@NonNull ReportForm form, Report entity) {
        if(entity == null) {
ycl-pojo/src/main/java/com/ycl/platform/domain/query/ReportQuery.java
@@ -38,5 +38,8 @@
    @ApiModelProperty("状态")
    private Integer status;
    @ApiModelProperty("故障类型")
    private List<String> errorTypeList;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/ReportVO.java
@@ -10,6 +10,7 @@
import org.springframework.lang.NonNull;
import java.util.Date;
import java.util.List;
/**
 * 报备展示
@@ -34,6 +35,8 @@
    /** 设备编码 */
    private String serialNumber;
    private String pointId;
    @Excel(name = "点位")
    private String pointName;
@@ -53,6 +56,18 @@
    @Excel(name = "故障类型")
    private String errorType;
    private List<String> errorTypeList;
    /**
     * 审核结果
     */
    private Boolean result;
    /**
     * 审核意见
     */
    private String resultRemark;
    /** 审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
@@ -61,13 +76,13 @@
    /**
     * 生效时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date beginCreateTime;
    /**
     * 失效时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endCreateTime;
    /**
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/YwPointVO.java
@@ -58,6 +58,9 @@
    /** 部级标签 */
    private Boolean deptTag;
    /** 国标码 */
    private String serialNumber;
    public static YwPointVO getVoByEntity(@NonNull YwPoint entity, YwPointVO vo) {
        if(vo == null) {
            vo = new YwPointVO();
ycl-server/src/main/java/com/ycl/platform/mapper/ReportAuditingRecordMapper.java
New file
@@ -0,0 +1,13 @@
package com.ycl.platform.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.platform.domain.entity.ReportAuditingRecord;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author:xp
 * @date:2024/9/1 21:07
 */
@Mapper
public interface ReportAuditingRecordMapper extends BaseMapper<ReportAuditingRecord> {
}
ycl-server/src/main/java/com/ycl/platform/mapper/ReportErrorTypeMapper.java
New file
@@ -0,0 +1,16 @@
package com.ycl.platform.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.platform.domain.entity.ReportErrorType;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author:xp
 * @date:2024/9/1 15:44
 */
@Mapper
public interface ReportErrorTypeMapper extends BaseMapper<ReportErrorType> {
}
ycl-server/src/main/java/com/ycl/platform/mapper/YwPointMapper.java
@@ -61,4 +61,20 @@
     * @param pointList
     */
    int updatePoint(List<YwPoint> pointList);
    /**
     * 统计某点位对应的未完成工单数量,理论上最大值为1个工单
     *
     * @param pointId
     * @return
     */
    YwPointVO countNotFinishedWorkOrderByPointId(@Param("pointId") Integer pointId);
    /**
     * 统计某点位对应的未完成工单数量,理论上最大值为1个工单
     *
     * @param serialNumber
     * @return
     */
    YwPointVO countNotFinishedWorkOrderByGb(@Param("serialNumber") String serialNumber);
}
ycl-server/src/main/java/com/ycl/platform/service/ReportAuditingRecordService.java
New file
@@ -0,0 +1,11 @@
package com.ycl.platform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.entity.ReportAuditingRecord;
/**
 * @author:xp
 * @date:2024/9/1 21:07
 */
public interface ReportAuditingRecordService extends IService<ReportAuditingRecord> {
}
ycl-server/src/main/java/com/ycl/platform/service/ReportErrorTypeService.java
New file
@@ -0,0 +1,11 @@
package com.ycl.platform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.entity.ReportErrorType;
/**
 * @author:xp
 * @date:2024/9/1 15:48
 */
public interface ReportErrorTypeService extends IService<ReportErrorType> {
}
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportAuditingRecordServiceImpl.java
New file
@@ -0,0 +1,18 @@
package com.ycl.platform.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.ReportAuditingRecord;
import com.ycl.platform.mapper.ReportAuditingRecordMapper;
import com.ycl.platform.service.ReportAuditingRecordService;
import org.springframework.stereotype.Service;
/**
 * @author:xp
 * @date:2024/9/1 21:08
 */
@Service
public class ReportAuditingRecordServiceImpl extends ServiceImpl<ReportAuditingRecordMapper, ReportAuditingRecord> implements ReportAuditingRecordService {
}
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportErrorTypeServiceImpl.java
New file
@@ -0,0 +1,15 @@
package com.ycl.platform.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.ReportErrorType;
import com.ycl.platform.mapper.ReportErrorTypeMapper;
import com.ycl.platform.service.ReportErrorTypeService;
import org.springframework.stereotype.Service;
/**
 * @author:xp
 * @date:2024/9/1 15:49
 */
@Service
public class ReportErrorTypeServiceImpl extends ServiceImpl<ReportErrorTypeMapper, ReportErrorType> implements ReportErrorTypeService {
}
ycl-server/src/main/java/com/ycl/platform/service/impl/ReportServiceImpl.java
@@ -2,27 +2,32 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.dto.ReportImportDTO;
import com.ycl.platform.domain.entity.Report;
import com.ycl.platform.domain.entity.YwPeople;
import com.ycl.platform.domain.entity.*;
import com.ycl.platform.domain.form.ReportAuditingForm;
import com.ycl.platform.domain.form.ReportForm;
import com.ycl.platform.domain.query.ReportQuery;
import com.ycl.platform.domain.vo.ReportVO;
import com.ycl.platform.domain.vo.YwPointVO;
import com.ycl.platform.mapper.ReportMapper;
import com.ycl.platform.mapper.YwPeopleMapper;
import com.ycl.platform.mapper.YwPointMapper;
import com.ycl.platform.mapper.YwUnitMapper;
import com.ycl.platform.service.ReportAuditingRecordService;
import com.ycl.platform.service.ReportErrorTypeService;
import com.ycl.platform.service.ReportService;
import com.ycl.system.Result;
import com.ycl.system.entity.SysDictData;
import com.ycl.system.page.PageUtil;
import com.ycl.system.service.ISysDictTypeService;
import com.ycl.utils.DateUtils;
import com.ycl.utils.SecurityUtils;
import com.ycl.utils.StringUtils;
import com.ycl.utils.html.EscapeUtil;
import com.ycl.utils.poi.ExcelUtil;
import com.ycl.utils.uuid.IdUtils;
import enumeration.general.ErrorTypeEnum;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
@@ -31,9 +36,9 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;
@@ -50,6 +55,9 @@
    private final YwUnitMapper unitMapper;
    private final YwPointMapper ywpointMapper;
    private final YwPeopleMapper peopleMapper;
    private final ReportErrorTypeService reportErrorTypeService;
    private final ISysDictTypeService dictTypeService;
    private final ReportAuditingRecordService reportAuditingRecordService;
    /**
     * 添加
@@ -57,6 +65,7 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result add(ReportForm form) {
        if (Objects.isNull(form.getPointId())) {
            throw new RuntimeException("点位不能为空");
@@ -65,18 +74,37 @@
        YwPeople people = new LambdaQueryChainWrapper<>(peopleMapper).eq(YwPeople::getUserId, userId).one();
        form.setPeopleId(people.getId());
        form.setUnitId(people.getBelongUnit());
        if ("事前报备".equals(form.getReportType())) {
            // 如果是事前报备需要检验是否已经生成下发工单
            YwPointVO point = ywpointMapper.countNotFinishedWorkOrderByGb(form.getPointId());
            if (Objects.nonNull(point)) {
                throw new RuntimeException(String.format("点位【%s】已经存在下发工单,无法事前报备", point.getPointName()));
            }
        }
        YwPoint point = new LambdaQueryChainWrapper<>(ywpointMapper)
                .eq(YwPoint::getSerialNumber, form.getPointId())
                .one();
        if (Objects.isNull(point)) {
            throw new RuntimeException("点位不存在");
        }
        Report entity = ReportForm.getEntityByForm(form, null);
        entity.setSerialNumber(form.getPointId());
        entity.setErrorType(String.join(",", form.getErrorType()));
        entity.setSerialNumber(point.getSerialNumber());
        entity.setStatus(0);
        entity.setIdentify(IdUtils.randomNO());
        Date now = new Date();
        entity.setCreateTime(now);
        entity.setUpdateTime(now);
        if(baseMapper.insert(entity) > 0) {
            return Result.ok("添加成功");
        }
        return Result.error("添加失败");
        baseMapper.insert(entity);
        List<ReportErrorType> errorTypeList = form.getErrorTypeList().stream().map(item -> {
            ReportErrorType reportErrorType = new ReportErrorType();
            reportErrorType.setErrorType(item);
            reportErrorType.setDeleted(0);
            reportErrorType.setCreateTime(now);
            reportErrorType.setReportId(entity.getId());
            return reportErrorType;
        }).collect(Collectors.toList());
        reportErrorTypeService.saveBatch(errorTypeList);
        return Result.ok("报备成功");
    }
    @Override
@@ -90,9 +118,6 @@
    @SneakyThrows
    @Transactional
    public Result importData(ReportForm form) {
        if (Objects.isNull(form.getImportPointId())) {
            throw new RuntimeException("点位不能为空");
        }
        Long userId = SecurityUtils.getUserId();
        YwPeople people = new LambdaQueryChainWrapper<>(peopleMapper).eq(YwPeople::getUserId, userId).one();
        form.setPeopleId(people.getId());
@@ -101,22 +126,43 @@
        ExcelUtil<ReportImportDTO> excelUtil = new ExcelUtil<>(ReportImportDTO.class);
        List<ReportImportDTO> list = excelUtil.importExcel(form.getImportPointId().getInputStream());
        // 批量插入
        ArrayList<Report> reports = new ArrayList<>();
        long l = System.currentTimeMillis();
        list.forEach( item -> {
        String pid = IdUtils.randomNO();
        Integer success = 0;
        for (ReportImportDTO item : list) {
            if ("事前报备".equals(form.getReportType())) {
                // 如果是事前报备需要检验是否已经生成下发工单
                YwPointVO point = ywpointMapper.countNotFinishedWorkOrderByGb(item.getSerialNumber());
                if (Objects.nonNull(point)) {
                    throw new RuntimeException(String.format("点位【%s】已经存在下发工单,无法事前报备", point.getPointName()));
                }
            }
            YwPoint point = new LambdaQueryChainWrapper<>(ywpointMapper)
                    .eq(YwPoint::getSerialNumber, form.getPointId())
                    .one();
            if (Objects.isNull(point)) {
                continue;
            }
            Report entity = ReportForm.getEntityByForm(form, null);
            entity.setImportBatchNumber(String.valueOf(l));
            entity.setImportBatchNumber(pid);
            entity.setSerialNumber(item.getSerialNumber());
            entity.setStatus(0);
            entity.setIdentify(IdUtils.randomNO());
            entity.setCreateTime(DateUtils.getNowDate());
            entity.setUpdateTime(DateUtils.getNowDate());
            reports.add(entity);
        });
        if (saveBatch(reports)) {
            return Result.ok("成功导入" + list.size() + "条数据");
            Date now = DateUtils.getNowDate();
            entity.setCreateTime(now);
            entity.setUpdateTime(now);
            baseMapper.insert(entity);
            List<ReportErrorType> errorTypeList = form.getErrorTypeList().stream().map(err -> {
                ReportErrorType reportErrorType = new ReportErrorType();
                reportErrorType.setErrorType(err);
                reportErrorType.setDeleted(0);
                reportErrorType.setCreateTime(now);
                reportErrorType.setReportId(entity.getId());
                return reportErrorType;
            }).collect(Collectors.toList());
            reportErrorTypeService.saveBatch(errorTypeList);
            success++;
        }
        return Result.error("导入失败");
        return Result.ok("报备点位数:" + list.size() + ",导入成功数:" + success);
    }
    /**
@@ -125,6 +171,7 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result update(ReportForm form) {
        Report entity = baseMapper.selectById(form.getId());
@@ -132,21 +179,36 @@
        Assert.notNull(entity, "记录不存在");
        Date now = new Date();
        entity.setUpdateTime(now);
        if (0 == entity.getStatus()) {
            // 待审核的直接改
            BeanUtils.copyProperties(form, entity);
            baseMapper.updateById(entity);
        } else if (2 == entity.getStatus()) {
            // 如果是未审核通过,进行修改,那么直接新增(为了保存审核记录)
            Report report = new Report();
            BeanUtils.copyProperties(entity, report);
            BeanUtils.copyProperties(form, report);
            report.setId(null);
            report.setStatus(0);
            report.setAuditingTime(null);
            report.setAuditOpinion(null);
            baseMapper.insert(report);
        if ("事前报备".equals(form.getReportType())) {
            // 如果是事前报备需要检验是否已经生成下发工单
            YwPointVO point = ywpointMapper.countNotFinishedWorkOrderByGb(form.getPointId());
            if (Objects.nonNull(point)) {
                throw new RuntimeException(String.format("点位【%s】已经存在下发工单,无法事前报备", point.getPointName()));
            }
        }
        YwPoint point = new LambdaQueryChainWrapper<>(ywpointMapper)
                .eq(YwPoint::getSerialNumber, form.getPointId())
                .one();
        if (Objects.isNull(point)) {
            throw new RuntimeException("点位不存在");
        }
        BeanUtils.copyProperties(form, entity);
        entity.setSerialNumber(form.getPointId());
        // 重置为待审核
        entity.setStatus(0);
        baseMapper.updateById(entity);
        new LambdaUpdateChainWrapper<>(reportErrorTypeService.getBaseMapper())
                .eq(ReportErrorType::getReportId, form.getId())
                .remove();
        List<ReportErrorType> errorTypeList = form.getErrorTypeList().stream().map(err -> {
            ReportErrorType reportErrorType = new ReportErrorType();
            reportErrorType.setErrorType(err);
            reportErrorType.setDeleted(0);
            reportErrorType.setCreateTime(now);
            reportErrorType.setReportId(entity.getId());
            return reportErrorType;
        }).collect(Collectors.toList());
        reportErrorTypeService.saveBatch(errorTypeList);
        return Result.ok("修改成功");
    }
@@ -185,7 +247,21 @@
    public Result page(ReportQuery query) {
        IPage<ReportVO> page = PageUtil.getPage(query, ReportVO.class);
        baseMapper.page(page, query);
        page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType())));
        List<SysDictData> errorTypeList = dictTypeService.selectDictDataByType("report_error_type");
        Map<String, String> dictMap = errorTypeList.stream().collect(Collectors.toMap(SysDictData::getDictValue, SysDictData::getDictLabel));
        page.getRecords().stream().forEach(item -> {
            if (StringUtils.hasText(item.getErrorType())) {
                item.setErrorTypeList(List.of(item.getErrorType().split(",")));
                StringBuilder sb = new StringBuilder();
                item.getErrorTypeList().stream().forEach(err -> {
                    String s = dictMap.get(err);
                    if (org.springframework.util.StringUtils.hasText(s)) {
                        sb.append(s).append("、");
                    }
                });
                item.setErrorType(sb.substring(0, sb.length() - 1));
            }
        });
        return Result.ok().data(page).total(page.getTotal());
    }
@@ -196,10 +272,16 @@
     */
    @Override
    public Result detail(String id) {
        Report entity = baseMapper.selectById(id);
        Assert.notNull(entity, "记录不存在");
        ReportVO vo = ReportVO.getVoByEntity(entity, null);
        vo.setPointId(vo.getSerialNumber());
        List<ReportErrorType> errList = new LambdaQueryChainWrapper<>(reportErrorTypeService.getBaseMapper())
                .select(ReportErrorType::getErrorType)
                .eq(ReportErrorType::getReportId, id)
                .list();
        List<String> list = errList.stream().map(ReportErrorType::getErrorType).collect(Collectors.toList());
        vo.setErrorTypeList(list);
        return Result.ok().data(vo);
    }
@@ -224,7 +306,6 @@
        page.setSize(-1);
        baseMapper.page(page, query);
        page.getRecords().forEach(item -> {
            item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType()));
            item.setReportContent(EscapeUtil.clean(item.getReportContent()));
        });
        return page.getRecords();
@@ -238,6 +319,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result auditing(ReportAuditingForm form) {
        Report report = baseMapper.selectById(form.getId());
        if (Objects.isNull(report)) {
@@ -248,9 +330,18 @@
        } else {
            report.setStatus(2);
        }
        report.setAuditOpinion(form.getAuditOpinion());
        report.setAuditingTime(new Date());
        Date now = new Date();
        report.setUpdateTime(now);
        baseMapper.updateById(report);
        // 添加一条审核记录
        ReportAuditingRecord reportAuditingRecord = new ReportAuditingRecord();
        reportAuditingRecord.setReportId(form.getId());
        reportAuditingRecord.setDeleted(0);
        reportAuditingRecord.setCreateTime(now);
        reportAuditingRecord.setResultRemark(form.getAuditOpinion());
        reportAuditingRecord.setResult(form.getAuditingResult());
        reportAuditingRecordService.save(reportAuditingRecord);
        return Result.ok("操作成功");
    }
}
ycl-server/src/main/java/com/ycl/platform/service/impl/YwPointServiceImpl.java
@@ -213,6 +213,9 @@
        List<YwPoint> list = new LambdaQueryChainWrapper<>(baseMapper)
                .eq(YwPoint::getUnitId, unitId)
                .like(YwPoint::getPointName, keyword)
                .or()
                .eq(YwPoint::getUnitId, unitId)
                .like(YwPoint::getSerialNumber, keyword)
                .list();
        List data = list.stream().map(item -> {
            Map map = new HashMap<String, Object>();
ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -3,40 +3,34 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mongodb.client.result.DeleteResult;
import com.ycl.platform.domain.entity.*;
import com.ycl.platform.domain.entity.ContractRuleRecord;
import com.ycl.platform.domain.entity.ContractScore;
import com.ycl.platform.domain.entity.WorkOrder;
import com.ycl.platform.domain.entity.YwPoint;
import com.ycl.platform.domain.result.HK.PicAccessResult;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
import com.ycl.platform.domain.result.UY.VideoOnlineResult;
import com.ycl.platform.domain.vo.CalculateRuleVO;
import com.ycl.platform.domain.vo.ContractVO;
import com.ycl.platform.domain.vo.ReportVO;
import com.ycl.platform.domain.vo.WorkOrderVO;
import com.ycl.platform.mapper.*;
import com.ycl.platform.service.IContractScoreService;
import com.ycl.utils.DateUtils;
import constant.ApiConstants;
import constant.RedisConstant;
import enumeration.ContractRule;
import enumeration.ErrorType;
import enumeration.general.AuditingStatus;
import enumeration.general.ErrorTypeEnum;
import enumeration.general.RuleDeductCategoryEnum;
import enumeration.general.WorkOrderStatusEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.management.monitor.Monitor;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
ycl-server/src/main/resources/mapper/zgyw/ReportMapper.xml
@@ -11,6 +11,8 @@
        <result column="people_id" property="peopleId" />
        <result column="serial_number" property="serialNumber" />
        <result column="auditing_time" property="auditingTime" />
        <result column="result" property="result" />
        <result column="result_remark" property="resultRemark" />
        <result column="report_content" property="reportContent" />
        <result column="report_materials" property="reportMaterials" />
        <result column="error_type" property="errorType" />
@@ -18,18 +20,21 @@
    <select id="page" resultType="com.ycl.platform.domain.vo.ReportVO">
        SELECT
        r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name
            r.id, r.report_materials, r.create_time, r.report_type, r.report_content, r.status, r.serial_number as pointId,
               r.begin_create_time,
               r.end_create_time,
               u.unit_name,
               p.yw_person_name as peopleName,
               pt.point_name,
               GROUP_CONCAT(DISTINCT ret.error_type SEPARATOR ',') AS errorType
        FROM
        t_report r
        LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = 0
        LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = 0
        LEFT JOIN t_yw_point pt ON r.serial_number = pt.serial_number and pt.deleted = 0
       /* INNER JOIN (
            SELECT identify,MAX(create_time) AS create_time
            FROM t_report
            WHERE deleted = 0
            GROUP BY identify
        ) as rr ON r.create_time = rr.create_time*/
        INNER JOIN t_report_error_type ret ON ret.report_id = r.id and ret.deleted = 0 <if test="query.errorTypeList != null and query.errorTypeList.size() > 0">
        AND ret.error_type in <foreach collection="query.errorTypeList" open="(" separator="," close=")" item="errorType">#{errorType}</foreach>
    </if>
        WHERE
        r.deleted = 0
        <if test="query.reportType != null and query.reportType != ''">
@@ -41,24 +46,27 @@
        <if test="query.keyword != null and query.keyword != ''">
            AND (pt.point_name like concat('%', #{query.keyword}, '%') OR p.yw_person_name like concat('%', #{query.keyword}, '%'))
        </if>
        GROUP BY
            r.id, r.report_materials, r.create_time, r.report_type, r.report_content, r.status, r.serial_number,
            r.begin_create_time,
            r.end_create_time,
            u.unit_name,
            p.yw_person_name,
            pt.point_name
        ORDER BY r.update_time DESC
    </select>
    <select id="examineRecord" resultMap="BaseResultMap">
        SELECT
            r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name
            r.*, u.unit_name, p.yw_person_name as peopleName, pt.point_name, ar.result, ar.result_remark, ar.create_time as auditing_time
        FROM
            t_report r
            t_report_auditing_record ar
                INNER JOIN t_report r ON ar.report_id = r.id AND ar.report_id = #{id} AND ar.deleted = 0
                LEFT JOIN t_yw_unit u ON r.unit_id = u.id and u.deleted = 0
                LEFT JOIN t_yw_people p ON r.people_id = p.id and p.deleted = 0
                LEFT JOIN t_yw_point pt ON r.serial_number = pt.serial_number and pt.deleted = 0
                INNER JOIN (
                    SELECT identify, create_time
                    FROM t_report
                    WHERE id = #{id} AND deleted = 0
            ) as rr ON r.identify = rr.identify AND r.create_time &lt;= rr.create_time
        ORDER BY
            r.create_time DESC
            ar.create_time DESC
    </select>
    <select id="selectNumberList" resultType="java.lang.String">
@@ -77,7 +85,7 @@
                 INNER JOIN t_work_order wo ON yo.serial_number = wo.serial_number AND wo.serial_number = #{serialNumber} AND wo.deleted = 0
        WHERE
             r.status = 1
        ORDER BY r.auditing_time DESC
        ORDER BY r.update_time DESC
        LIMIT 1
    </select>
ycl-server/src/main/resources/mapper/zgyw/YwPointMapper.xml
@@ -136,4 +136,31 @@
            WHERE serial_number = #{point.serialNumber}
        </foreach>
    </update>
    <select id="countNotFinishedWorkOrderByPointId" resultType="com.ycl.platform.domain.vo.YwPointVO">
        SELECT
            yp.id, yp.point_name, wo.serial_number
        FROM
             t_yw_point yp
                 INNER JOIN t_work_order wo ON yp.serial_number = wo.serial_number
                                                   AND wo.status not in ('AUDITING_SUCCESS','WAIT_DISTRIBUTE')
                                                   AND wo.deleted = 0
                                                   AND yp.deleted = 0
        WHERE
            yp.id = #{pointId}
    </select>
    <select id="countNotFinishedWorkOrderByGb" resultType="com.ycl.platform.domain.vo.YwPointVO">
        SELECT
            yp.id, yp.point_name, wo.serial_number
        FROM
            t_yw_point yp
                INNER JOIN t_work_order wo ON yp.serial_number = wo.serial_number
                AND wo.status not in ('AUDITING_SUCCESS','WAIT_DISTRIBUTE')
                AND wo.deleted = 0
                AND yp.deleted = 0
                AND yp.serial_number = #{serialNumber}
        LIMIT 1
    </select>
</mapper>