xiangpei
2024-08-23 96e520a9c5407310d03792b6012195f516f0233b
定时任务工单生成bug修改
13个文件已修改
2个文件已添加
231 ■■■■ 已修改文件
pom.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderErrorType.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderErrorTypeService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderErrorTypeServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java 100 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml
@@ -35,7 +35,7 @@
        <aliyun.sdk.oss.version>3.10.2</aliyun.sdk.oss.version>
        <knife4j.version>3.0.2</knife4j.version>
        <aspectj.version>1.9.4</aspectj.version>
        <mybatis-plus.version>3.5.4</mybatis-plus.version>
        <mybatis-plus.version>3.5.4.1</mybatis-plus.version>
        <jwt.version>0.9.1</jwt.version>
        <jaxb-api.version>2.3.1</jaxb-api.version>
        <poi.version>4.1.2</poi.version>
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrder.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import java.time.LocalDateTime;
import java.util.List;
import com.ycl.platform.base.AbsEntity;
import enumeration.general.WorkOrderStatusEnum;
@@ -81,4 +82,8 @@
    @ApiModelProperty("是否扣过积分")
    @TableField("deduct")
    private Boolean deduct;
    @TableField(exist=false)
    private List<String> errorTypeList;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderDistributeRecord.java
@@ -28,8 +28,8 @@
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("工单ID")
    @TableField("work_order_id")
    private Integer workOrderId;
    @TableField("work_order_no")
    private String workOrderNo;
    @ApiModelProperty("下发人")
    @TableField("user_id")
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/WorkOrderErrorType.java
@@ -1,6 +1,7 @@
package com.ycl.platform.domain.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ycl.platform.base.AbsEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -15,6 +16,7 @@
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@TableName("t_work_order_error_type")
public class WorkOrderErrorType extends AbsEntity {
    /**
ycl-pojo/src/main/java/com/ycl/platform/domain/query/DistributeWorkOrderQuery.java
@@ -35,7 +35,7 @@
     * 工单id
     */
    @JsonProperty("ids")
    private List<Integer> ids;
    private List<String> workOrderNOList;
    /**
     * 关键词
ycl-pojo/src/main/java/com/ycl/platform/domain/vo/WorkOrderVO.java
@@ -54,7 +54,7 @@
    private Boolean important;
    /** 故障类型 */
    private String errorType;
    private List<String> errorTypeList;
    /** 运维人员 */
    private Integer ywPeopleId;
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderErrorTypeMapper.java
@@ -2,6 +2,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycl.platform.domain.entity.WorkOrderErrorType;
import org.apache.ibatis.annotations.Param;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -69,4 +71,19 @@
     */
    int insertWorkOrderErrorTypeList(List<WorkOrderErrorType> workOrderErrorTypeList);
    /**
     * 查询未完成的工单的错误类型
     *
     * @param workOrderNo
     * @return
     */
    List<String> getNotFinishWorkOrderErrors(@Param("workOrderNo") String workOrderNo);
    /**
     * 批量添加工单故障
     *
     * @param errorTypeList
     * @return
     */
    int addMany(@Param("errorTypeList") List<WorkOrderErrorType> errorTypeList);
}
ycl-server/src/main/java/com/ycl/platform/mapper/WorkOrderMapper.java
@@ -70,4 +70,6 @@
     * @return
     */
    List<DeviceInfoVO> hasErrorWorkOrderList();
    int addMany(@Param("workOrderList") List<WorkOrder> workOrderList);
}
ycl-server/src/main/java/com/ycl/platform/service/WorkOrderErrorTypeService.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.WorkOrderErrorType;
/**
 * @author:xp
 * @date:2024/8/23 11:36
 */
public interface WorkOrderErrorTypeService extends IService<WorkOrderErrorType> {
}
ycl-server/src/main/java/com/ycl/platform/service/impl/UYErrorTypeCheckServiceImpl.java
@@ -9,7 +9,10 @@
import enumeration.general.WorkOrderStatusEnum;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -30,18 +33,26 @@
     */
    @Override
    public void imageDetectionCheck(List<ImageDetectionResult> dataList) {
        List<WorkOrder> workOrderList = dataList.stream().map(item -> {
        List<WorkOrder> workOrderList = dataList.stream().filter(item -> 0 == item.getSigna1()
                || 0 == item.getColor()
                || 0 == item.getSnow()
                || 0 == item.getStripe()
                || 0 == item.getShade()
                || 0 == item.getBlur()
                || 0 == item.getLight()
        )
        .map(item -> {
            WorkOrder workOrder = new WorkOrder();
            // 信号缺失
            if (0 == item.getSigna1()) {
            if (0 == item.getSigna1() ) {
                this.genWorkOrder(workOrder, ErrorType.SIGNAL_LOSS, item.getDeviceId());
            }
            // 画面偏色
            if (0 == item.getColor()) {
            if ( 0 == item.getColor()) {
                this.genWorkOrder(workOrder, ErrorType.SCREEN_COLOR_DEVIATION, item.getDeviceId());
            }
            // 雪花干扰
            if (0 == item.getSnow()) {
            if ( 0 == item.getSnow()) {
                this.genWorkOrder(workOrder, ErrorType.SNOW_STORM, item.getDeviceId());
            }
            // 条纹干扰
@@ -130,8 +141,15 @@
     * @param serialNumber 国标码
     */
    private void genWorkOrder(WorkOrder workOrder, ErrorType errorType, String serialNumber) {
        workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
        workOrder.setErrorType(errorType.getValue());
        if (! StringUtils.hasText(workOrder.getWorkOrderNo())) {
            workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
        }
        if (CollectionUtils.isEmpty(workOrder.getErrorTypeList())) {
            workOrder.setErrorTypeList(new ArrayList<>());
            workOrder.getErrorTypeList().add(errorType.getValue());
        } else {
            workOrder.getErrorTypeList().add(errorType.getValue());
        }
        workOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
        workOrder.setSerialNumber(serialNumber);
    }
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderErrorTypeServiceImpl.java
New file
@@ -0,0 +1,14 @@
package com.ycl.platform.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ycl.platform.domain.entity.WorkOrderErrorType;
import com.ycl.platform.mapper.WorkOrderErrorTypeMapper;
import org.springframework.stereotype.Service;
/**
 * @author:xp
 * @date:2024/8/23 11:36
 */
@Service
public class WorkOrderErrorTypeServiceImpl extends ServiceImpl<WorkOrderErrorTypeMapper, WorkOrderErrorType> {
}
ycl-server/src/main/java/com/ycl/platform/service/impl/WorkOrderServiceImpl.java
@@ -83,7 +83,7 @@
    private final WorkOrderYwConditionRecordMapper workOrderYwConditionRecordMapper;
    private final NotifyService notifyService;
    private final WorkOrderDistributeRecordMapper workOrderDistributeRecordMapper;
    private final WorkOrderErrorTypeMapper workOrderErrorTypeMapper;
    private final WorkOrderErrorTypeServiceImpl workOrderErrorTypeService;
    private final SysConfigMapper configMapper;
    private final ServerConfig serverConfig;
    private final ReportMapper reportMapper;
@@ -111,41 +111,35 @@
        List<String> serialNumberList = workOrderList.stream().map(WorkOrder::getSerialNumber).collect(Collectors.toList());
        // 查出数据库中国标码对应的未完成的工单
        List<WorkOrder> inDatabaseWorkOrderList = new LambdaQueryChainWrapper<>(baseMapper)
                .select(WorkOrder::getId, WorkOrder::getSerialNumber, WorkOrder::getStatus, WorkOrder::getErrorType)
                .select(WorkOrder::getId, WorkOrder::getSerialNumber, WorkOrder::getStatus, WorkOrder::getWorkOrderNo)
                .in(WorkOrder::getSerialNumber, serialNumberList)
                .ne(WorkOrder::getStatus, WorkOrderStatusEnum.AUDITING_SUCCESS)
                .list();
        Map<String, WorkOrder> mapping = inDatabaseWorkOrderList.stream().collect((Collectors.toMap(WorkOrder::getSerialNumber, workOrder -> workOrder)));
        List<WorkOrder> waitAddList = new ArrayList<>(48);
        List<WorkOrderErrorType> waitAddErrorTypeList = new ArrayList<>(48);
        Integer updateNum = 0;
        Date now = new Date();
        for (WorkOrder workOrder : workOrderList) {
            WorkOrder databaseWorkOrder = mapping.get(workOrder.getSerialNumber());
            if (Objects.nonNull(databaseWorkOrder)) {
                List<WorkOrderErrorType> workOrderErrorTypeList = new LambdaQueryChainWrapper<>(workOrderErrorTypeMapper)
                        .select(WorkOrderErrorType::getErrorName)
                        .eq(WorkOrderErrorType::getWorkOrderNo, workOrder.getWorkOrderNo())
                        .list();
                List<String> errorNameList = workOrderErrorTypeList.stream().map(WorkOrderErrorType::getErrorName).collect(Collectors.toList());
                String errorType = databaseWorkOrder.getErrorType();
                if (errorNameList.contains(errorType)) {
                List<String> errorNameList = workOrderErrorTypeService.getBaseMapper().getNotFinishWorkOrderErrors(workOrder.getWorkOrderNo());
                List<String> errorTypes = workOrder.getErrorTypeList();
                if (errorNameList.containsAll(errorTypes)) {
                    // 如果,国标码、故障类型都一样,则跳过不处理
                    continue;
                } else {
                    // 错误类型不一样,就新增一个错误类型,并且重置工单状态为待处理
                    List<SysDictData> errorTypeDictList = dictDataMapper.selectDictDataByType("error_type");
                    String finalErrorType = errorType;
                    List<SysDictData> targetErrorTypes = errorTypeDictList.stream().filter(item -> finalErrorType.equals(item.getDictValue())).collect(Collectors.toList());
                    if (! CollectionUtils.isEmpty(targetErrorTypes)) {
                        errorType = targetErrorTypes.get(0).getDictValue();
                    for (String errorType : errorTypes) {
                        if (! errorNameList.contains(errorType)) {
                            // 错误类型不一样,就新增一个错误类型,并且重置工单状态为待处理
                            WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
                            workOrderErrorType.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo());
                            workOrderErrorType.setCreateTime(now);
                            workOrderErrorType.setUpdateTime(now);
                            workOrderErrorType.setErrorName(errorType);
                            workOrderErrorTypeService.save(workOrderErrorType);
                        }
                    }
                    WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
                    workOrderErrorType.setWorkOrderNo(databaseWorkOrder.getWorkOrderNo());
                    Date now = new Date();
                    workOrderErrorType.setCreateTime(now);
                    workOrderErrorType.setUpdateTime(now);
                    workOrderErrorTypeMapper.insert(workOrderErrorType);
                    databaseWorkOrder.setStatus(WorkOrderStatusEnum.DISTRIBUTED);
                    databaseWorkOrder.setUpdateTime(now);
                    baseMapper.updateById(databaseWorkOrder);
@@ -190,26 +184,40 @@
                continue;
            }
            workOrder.setWorkOrderNo(IdUtils.timeAddRandomNO(5));
            workOrder.setUnitId(Math.toIntExact(point.getUnitId()));
            if (Objects.nonNull(point.getUnitId())) {
                workOrder.setUnitId(Math.toIntExact(point.getUnitId()));
            }
            if (point.getImportantTag() || point.getImportantCommandImageTag()) {
                workOrder.setProcessingPeriod(Integer.valueOf(important.getConfigValue()));
            } else {
                workOrder.setProcessingPeriod(Integer.valueOf(normal.getConfigValue()));
            }
            // 保存错误类型
            for (String errorType : workOrder.getErrorTypeList()) {
                WorkOrderErrorType workOrderErrorType = new WorkOrderErrorType();
                workOrderErrorType.setWorkOrderNo(workOrder.getWorkOrderNo());
                workOrderErrorType.setCreateTime(now);
                workOrderErrorType.setUpdateTime(now);
                workOrderErrorType.setErrorName(errorType);
                waitAddErrorTypeList.add(workOrderErrorType);
            }
        }
        waitAddList.removeAll(notAddList);
        if (CollectionUtils.isEmpty(waitAddList)) {
            return Boolean.TRUE;
        }
        this.saveBatch(waitAddList);
        // 保存工单和故障类型
        baseMapper.addMany(waitAddList);
        if (! CollectionUtils.isEmpty(waitAddErrorTypeList)) {
            workOrderErrorTypeService.getBaseMapper().addMany(waitAddErrorTypeList);
        }
        // 如果是直接下发,添加下发记录
        if (WorkOrderStatusEnum.DISTRIBUTED.equals(waitAddList.get(0).getStatus())) {
            List<WorkOrderDistributeRecord> distributedRecordList = waitAddList.stream().map(item -> {
                WorkOrderDistributeRecord workOrderDistributeRecord = new WorkOrderDistributeRecord();
                workOrderDistributeRecord.setWorkOrderId(item.getId());
                workOrderDistributeRecord.setWorkOrderNo(item.getWorkOrderNo());
                workOrderDistributeRecord.setDistributeWay(WorkOrderDistributeWayEnum.DIRECT_DISTRIBUTE);
                workOrderDistributeRecord.setUserId(1L);
                Date now = new Date();
                workOrderDistributeRecord.setCreateTime(now);
                workOrderDistributeRecord.setUpdateTime(now);
                return workOrderDistributeRecord;
@@ -236,7 +244,7 @@
        entity.setUpdateTime(now);
        entity.setErrorType(String.join(",", form.getErrorType()));
        List<WorkOrderErrorType> workOrderErrorTypes = form.getErrorType().stream().map(errorType -> new WorkOrderErrorType(entity.getWorkOrderNo(), errorType)).toList();
        workOrderErrorTypeMapper.insertWorkOrderErrorTypeList(workOrderErrorTypes);
        workOrderErrorTypeService.getBaseMapper().insertWorkOrderErrorTypeList(workOrderErrorTypes);
        if(baseMapper.insert(entity) > 0) {
            return Result.ok("添加成功");
        }
@@ -421,7 +429,6 @@
    public Result page(WorkOrderQuery query) {
        IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
        baseMapper.page(page, query);
        page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType())));
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
@@ -429,7 +436,6 @@
    public Result distributePage(DistributeWorkOrderQuery query) {
        IPage<WorkOrderVO> page = PageUtil.getPage(query, WorkOrderVO.class);
        baseMapper.distributePage(page, query);
        page.getRecords().forEach(item -> item.setErrorType(ErrorTypeEnum.getEnumValue(item.getErrorType())));
        return Result.ok().data(page).total(page.getTotal());
    }
@@ -464,20 +470,20 @@
                .orderByDesc(WorkOrder::getCreateTime)
                .last("limit " + data.getFastNumLimit())
                .list();
        List<Integer> ids = list.stream().map(WorkOrder::getId).toList();
        List<String> workOrderNoList = list.stream().map(WorkOrder::getWorkOrderNo).toList();
        List<String> serialNumberList = list.stream().map(WorkOrder::getSerialNumber).toList();
        if (ids.isEmpty()) { return Result.error("没有符合条件的工单"); }
        if (workOrderNoList.isEmpty()) { return Result.error("没有符合条件的工单"); }
        if (!getDistributeLock()) { return Result.error("此刻有人下发中,为避免冲突,请稍后重试"); }
        try {
            new LambdaUpdateChainWrapper<>(baseMapper)
                    .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
                    .in(WorkOrder::getId, ids)
                    .in(WorkOrder::getWorkOrderNo, workOrderNoList)
                    .update();
            addDistributeRecord(ids, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE);
            addDistributeRecord(workOrderNoList, WorkOrderDistributeWayEnum.FAST_DISTRIBUTE);
            // 同步点位状态
            ywPointService.updateRecovery(serialNumberList, 1);
            return Result.ok("成功下发" + ids.size() + "条工单");
            return Result.ok("成功下发" + workOrderNoList.size() + "条工单");
        } catch (Exception e) {
            return Result.error("操作失败");
        } finally {
@@ -491,27 +497,27 @@
        WorkOrderDistributeWayEnum distributeWayEnum = WorkOrderDistributeWayEnum.SELECTED_DISTRIBUTE;
        if (!getDistributeLock()) { return Result.error("此刻有人下发中,为避免冲突,请稍后重试"); }
        try {
            if (query.getIds().isEmpty()) {
                query.setIds(new LambdaQueryChainWrapper<>(baseMapper)
            if (query.getWorkOrderNOList().isEmpty()) {
                query.setWorkOrderNOList(new LambdaQueryChainWrapper<>(baseMapper)
                        .eq(WorkOrder::getStatus, WorkOrderStatusEnum.WAIT_DISTRIBUTE)
                        .eq(Objects.nonNull(query.getUnitId()), WorkOrder::getUnitId, query.getUnitId())
                        .select(WorkOrder::getId)
                        .list()
                        .stream()
                        .map(WorkOrder::getId)
                        .map(WorkOrder::getWorkOrderNo)
                        .collect(Collectors.toList()));
                distributeWayEnum = WorkOrderDistributeWayEnum.ALL_DISTRIBUTE;
            }
            if (query.getIds().isEmpty()) { return Result.error("没有工单待下发"); }
            if (query.getWorkOrderNOList().isEmpty()) { return Result.error("没有工单待下发"); }
            new LambdaUpdateChainWrapper<>(baseMapper)
                    .set(WorkOrder::getStatus, WorkOrderStatusEnum.DISTRIBUTED)
                    .in(WorkOrder::getId, query.getIds())
                    .in(WorkOrder::getWorkOrderNo, query.getWorkOrderNOList())
                    .update();
            addDistributeRecord(query.getIds(), distributeWayEnum);
            addDistributeRecord(query.getWorkOrderNOList(), distributeWayEnum);
            // 同步点位状态
            List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getIds()).list().stream().map(WorkOrder::getSerialNumber).toList();
            List<String> serialNumberList = new LambdaQueryChainWrapper<>(baseMapper).select(WorkOrder::getSerialNumber).in(WorkOrder::getId, query.getWorkOrderNOList()).list().stream().map(WorkOrder::getSerialNumber).toList();
            ywPointService.updateRecovery(serialNumberList, 1);
            return Result.ok("成功下发" + query.getIds().size() + "条工单");
            return Result.ok("成功下发" + query.getWorkOrderNOList().size() + "条工单");
        } catch (Exception e) {
            return Result.error("操作失败");
        } finally {
@@ -541,13 +547,13 @@
    /**
     * 添加工单下发记录
     * @param ids 工单id
     * @param workOrderNoList 工单id
     */
    private void addDistributeRecord(List<Integer> ids, WorkOrderDistributeWayEnum distributeWay) {
    private void addDistributeRecord(List<String> workOrderNoList, WorkOrderDistributeWayEnum distributeWay) {
        LoginUser loginUser = SecurityUtils.getLoginUser();
        workOrderDistributeRecordMapper.insertBatch(
                ids.stream()
                        .map(id -> new WorkOrderDistributeRecord(id, loginUser.getUserId(), distributeWay))
                workOrderNoList.stream()
                        .map(no -> new WorkOrderDistributeRecord(no, loginUser.getUserId(), distributeWay))
                        .toList()
        );
    }
ycl-server/src/main/resources/mapper/zgyw/WorkOrderDistributeRecordMapper.xml
@@ -4,10 +4,10 @@
    <insert id="insertBatch">
        insert into t_work_order_distribute_record (work_order_id, user_id, create_time, deleted, distribute_way)
        insert into t_work_order_distribute_record (work_order_no, user_id, create_time, deleted, distribute_way)
        values
        <foreach collection="list" item="item" separator=",">
            (#{item.workOrderId}, #{item.userId}, now(), '0', #{item.distributeWay})
            (#{item.workOrderNo}, #{item.userId}, now(), '0', #{item.distributeWay})
        </foreach>
    </insert>
</mapper>
ycl-server/src/main/resources/mapper/zgyw/WorkOrderErrorTypeMapper.xml
@@ -82,4 +82,19 @@
        </foreach>
    </insert>
</mapper>
    <select id="getNotFinishWorkOrderErrors" resultType="string">
        SELECT
               ot.error_name
        FROM
             t_work_order_error_type ot
                 INNER JOIN t_work_order wo ON wo.work_order_no = ot.work_order_no AND wo.work_order_no = #{workOrderNo} AND wo.status != 'AUDITING_SUCCESS'
    </select>
    <insert id="addMany">
        INSERT INTO t_work_order_error_type (work_order_no, error_name, create_time, update_time, deleted) VALUES
        <foreach collection="errorTypeList" item="errorType" separator=",">
            (#{errorType.workOrderNo}, #{errorType.errorName}, #{errorType.createTime}, #{errorType.updateTime}, 0)
        </foreach>
    </insert>
</mapper>
ycl-server/src/main/resources/mapper/zgyw/WorkOrderMapper.xml
@@ -15,9 +15,19 @@
        <result column="yw_check_result" property="ywCheckResult"/>
        <result column="overtime" property="overtime"/>
        <result column="deduct" property="deduct"/>
        <collection property="errorTypeList" select="getErrorType" ofType="string" column="work_order_no">
        </collection>
    </resultMap>
    <select id="page" resultType="com.ycl.platform.domain.vo.WorkOrderVO">
    <select id="getErrorType" resultType="string">
        SELECT DISTINCT da.dict_label
        FROM
            t_work_order_error_type et
                 LEFT JOIN sys_dict_data da ON da.dict_value = et.error_name AND da.dict_type = 'error_type'
        WHERE et.work_order_no = #{work_order_no}
    </select>
    <select id="page" resultMap="BaseResultMap">
        SELECT
            wo.*,
            u.unit_name,
@@ -182,4 +192,11 @@
                 INNER JOIN t_device_info di ON wo.serial_number = di.device_id
    </select>
    <insert id="addMany">
        INSERT INTO t_work_order (work_order_no, status, serial_number, unit_id, create_time, update_time, deleted)
        VALUES <foreach collection="workOrderList" item="workOrder" separator=",">
        (#{workOrder.workOrderNo}, #{workOrder.status}, #{workOrder.serialNumber}, #{workOrder.unitId}, #{workOrder.createTime}, #{workOrder.updateTime}, 0)
    </foreach>
    </insert>
</mapper>