ZengTao
2025-11-14 0c86561c023aa79914aa1f494b2a91ad5c38b38f
hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -3,16 +3,21 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.github.yulichang.query.MPJQueryWrapper;
import com.mes.common.config.Const;
import com.mes.damage.entity.Damage;
import com.mes.damage.entity.DamagePrint;
import com.mes.damage.entity.dto.DamageDTO;
import com.mes.damage.mapper.DamageMapper;
import com.mes.damage.service.DamageService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.mapper.GlassInfoMapper;
import com.mes.opctask.entity.LoadGlassDeviceTaskHistory;
import com.mes.pp.entity.DamageDetails;
import com.mes.pp.entity.ReportingWork;
import com.mes.pp.entity.ReportingWorkDetail;
@@ -33,6 +38,7 @@
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -55,32 +61,56 @@
    WorkAssignmentMapper workAssignmentMapper;
    //    private final static String ERP_URL = "http://192.168.2.100:8086";
    private final static String ERP_URL = "http://10.153.19.174:8086";
    private final static String ERP_URL = "http://192.168.2.100:8086";
    /**
     * 查询报工信息
     */
    @Override
    public List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure) {
        LambdaQueryWrapper<Damage> damageSelectWrapper = new LambdaQueryWrapper<>();
        damageSelectWrapper.between(Damage::getDamageTime, startTime, endTime);
        if (type != 0) {
            damageSelectWrapper.eq(Damage::getType, type);
        }
        if (status != 0) {
            damageSelectWrapper.eq(Damage::getStatus, status);
        }
        if (!"0".equals(workingProcedure)) {
            damageSelectWrapper.eq(Damage::getWorkingProcedure, workingProcedure);
        }
        List<Damage> damageList = baseMapper.selectList(damageSelectWrapper);
//        for (Damage damage : damageList) {
//            damage.setStatus(2);
//        }
        return damageList;
    /**
     * 分页查询损坏记录
     *
     * @param startTime        开始时间(格式:yyyy-MM-dd HH:mm:ss)
     * @param endTime          结束时间(格式:yyyy-MM-dd HH:mm:ss)
     * @param type             损坏类型(0表示查询所有类型)
     * @param status           状态(0表示查询所有状态)
     * @param workingProcedure 工序("0"表示查询所有工序)
     * @param pageNum          页码(从1开始)
     * @param pageSize         每页条数
     * @return 分页后的损坏记录列表
     */
    @Override
    public Page<DamageDTO> selectDamage(
            String startTime,
            String endTime,
            int type,
            int status,
            String workingProcedure,
            int pageNum,  // 新增:动态页码
            int pageSize  // 新增:动态每页条数
    ) {
        if (workingProcedure == null || workingProcedure.trim().isEmpty() || "0".equals(workingProcedure)) {
            workingProcedure = null;
        }
        Page<DamageDTO> page = new Page<>(pageNum, pageSize);
        List<DamageDTO> damages = this.baseMapper.selectDamageList(
                startTime,
                endTime,
                type,
                status,
                workingProcedure
        );
        page.setTotal(damages.size());
        int startIndex = (int) ((pageNum - 1) * pageSize);
        int endIndex = Math.min((int) (pageNum * pageSize), damages.size());
        if (startIndex < endIndex) {
            List<DamageDTO> pageRecords = damages.subList(startIndex, endIndex);
            page.setRecords(pageRecords);
        } else {
            page.setRecords(Collections.emptyList());
        }
        return page;
    }
    /**
@@ -209,6 +239,7 @@
                    new LambdaQueryWrapper<Damage>()
                            .in(Damage::getType, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE)
                            .notIn(Damage::getStatus, 7, 8)
                            .lt(Damage::getStatus, 7)
                            .eq(Damage::getGlassId, damage.getGlassId())
            );
        } else {
@@ -316,6 +347,7 @@
                new LambdaQueryWrapper<Damage>()
                        .eq(Damage::getGlassId, glassId)
                        .in(Damage::getType, Const.GLASS_STATE_DAMAGE_TAKE)
                        .lt(Damage::getStatus, 7)
        );
    }
@@ -414,4 +446,9 @@
            return false;
        }
    }
    @Override
    public List<Damage> queryUnTempByFlowCardId(String flowCardId) {
        return baseMapper.queryUnTempByFlowCardId(flowCardId);
    }
}