于杰
2025-08-29 6b6f3fbd333894209e0df1822ff89881aa4319fe
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -23,6 +23,7 @@
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.sql.Date;
import java.sql.SQLOutput;
import java.time.LocalDate;
import java.util.*;
import java.util.function.Function;
@@ -159,12 +160,12 @@
            //判断夹胶和夹胶后工序
            //Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")
            if(Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")){
                clos.put(uniqueList.get(i).get("process"), 16+i);
                clos.put(uniqueList.get(i).get("process"), 14+i);
            }
            //判断中空和中空后工序
            //Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")
            if(Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")){
                columns.add(16+i);
                columns.add(14+i);
            }
        }
@@ -193,14 +194,15 @@
                    });
           //判断后工序此流程卡号是否有次破
            List<DamageDetails> hasBreak = damageDetailsMapper
                    .selectList(new LambdaQueryWrapper<DamageDetails>()
                            .eq(DamageDetails::getProcessId, dataList.get(i).get("processId"))
                            .eq(DamageDetails::getOrderNumber, dataList.get(i).get("order_number"))
                            .eq(DamageDetails::getTechnologyNumber, dataList.get(i).get("technology_number"))
                            .eq(DamageDetails::getPatchStatus, 0)
                            .gt(DamageDetails::getBreakageQuantity,0)
                    .getNotReview(dataList.get(i).get("processId"),
                            String.valueOf(dataList.get(i).get("order_number")),
                            String.valueOf(dataList.get(i).get("technology_number"))
                    );
            if(!hasBreak.isEmpty()){
                int finalI = i;
                data.forEach((thisProcess, index)->{
@@ -211,12 +213,13 @@
                            thisProcess,
                            orderId
                    );
                    if(behindProcess!=null &&!behindProcess.isEmpty()){
                        Integer behindDamageSum = damageDetailsMapper.getBehindDamageSum(
                                dataList.get(finalI).get("processId"),
                                String.valueOf(dataList.get(finalI).get("order_number")),
                                String.valueOf(dataList.get(finalI).get("technology_number")),
                                behindProcess
                                behindProcess,1
                        );
                        if(behindDamageSum>0){
                            data.put(thisProcess, String.valueOf(Integer.parseInt(data.get(thisProcess) )- behindDamageSum));
@@ -382,7 +385,7 @@
        return map;
    }
    public Map<String, Object> yieldSv(Date selectTime1, Date selectTime2, String selectProcesses, Report report) {
    public Map<String, Object> yieldSv(String selectTime1, String selectTime2, String selectProcesses, Report report) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.yieldMp(selectTime1, selectTime2, selectProcesses, report));
        map.put("process", productionSchedulingMapper.selectProcess());
@@ -826,9 +829,138 @@
        List<Map<String, String>> dataList = reportMapper.processCardProgressCollectMp(orderId);
        //获取表头工序筛选数据
        List<Map<String, String>> uniqueList = orderProcessDetailMapper.filterOrderProcess(orderId);
        map.put("title", uniqueList);
        return  null;
        Map<String,Map<String,Object>> clos = new HashMap<>();
        for (int i=0;i<uniqueList.size();i++){
            //根据流程查询基础数据
            BasicData basicData =  basicDataMapper.selectOne(
                    new QueryWrapper<BasicData>()
                            .eq("basic_category","process")
                            .eq("basic_name",uniqueList.get(i).get("process"))
                            .last("limit 1")
            );
            Map<String,Object> getCol = new HashMap<>();
            //判断夹胶和夹胶后工序
            //Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")
            if(Objects.equals(basicData.getNickname(), "stepA") || Objects.equals(basicData.getNickname(), "stepC")){
                getCol.put("col", 11+i);
                getCol.put("step","stepA");
                clos.put(uniqueList.get(i).get("process"), getCol);
            }
            //判断中空和中空后工序
            //Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")
            if(Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")){
                columns.add(11+i);
                getCol.put("col", 11+i);
                getCol.put("step","stepB");
                clos.put(uniqueList.get(i).get("process"), getCol);
            }
        }
        List<Map<String, Object>> getRowCount = orderProcessDetailMapper.getGlassLRow(orderId);
        List<Map<String, Integer>> rowCount = new ArrayList<>();
        columns.forEach(col -> {
            getRowCount.forEach(row -> {
                Map<String, Integer> getRow = new HashMap<>();
                // { row: 0, col: 1, rowspan: 3, colspan: 0},
                getRow.put("row", ((Number) row.get("RowNum")).intValue());
                getRow.put("col", col);
                getRow.put("rowspan", ((Number) row.get("rowCount")).intValue());
                getRow.put("colspan", 0);
                rowCount.add(getRow);
            });
        });
        //循环结果
        for (int i=0;i<dataList.size();i++ ) {
            dataList.get(i).put("reportWorkQuantityShow",dataList.get(i).get("reportWorkQuantity"));
            Map<String, String> data = JSON.parseObject(dataList.get(i).get("reportWorkQuantity"),
                    new TypeReference<Map<String, String>>() {
                    });
            Map<String, String> dataShow = JSON.parseObject(dataList.get(i).get("reportWorkQuantityShow"),
                    new TypeReference<Map<String, String>>() {
                    });
            //判断后工序此流程卡号是否有次破
            List<DamageDetails> hasBreak = damageDetailsMapper
                    .getNotReview(dataList.get(i).get("process_id"),
                            null,
                            String.valueOf(dataList.get(i).get("technology_number"))
                    );
            if(!hasBreak.isEmpty()){
                int finalI = i;
                data.forEach((thisProcess, index)->{
                    String behindProcess = orderProcessDetailMapper.getBehindProcess(
                            dataList.get(finalI).get("process_id"),
                            String.valueOf(dataList.get(finalI).get("order_number")),
                            String.valueOf(dataList.get(finalI).get("technology_number")),
                            thisProcess,
                            orderId
                    );
                    if(behindProcess!=null &&!behindProcess.isEmpty()){
                        Integer behindDamageSum = damageDetailsMapper.getBehindDamageSum(
                                dataList.get(finalI).get("process_id"),
                                String.valueOf(dataList.get(finalI).get("order_number")),
                                String.valueOf(dataList.get(finalI).get("technology_number")),
                                behindProcess,
                                null
                        );
                        if(behindDamageSum>0){
                            data.put(thisProcess, String.valueOf(Integer.parseInt(data.get(thisProcess) )- behindDamageSum));
                            dataShow.put(thisProcess, String.valueOf(Integer.parseInt(dataShow.get(thisProcess) )- behindDamageSum));
                        }
                    }
                });
            }
            if(!clos.isEmpty()){
                Integer max = orderGlassDetailMapper
                        .getMaxTechnologyNumberByGroup(dataList.get(i).get("order_id"),
                                String.valueOf(dataList.get(i).get("order_number")),
                                String.valueOf(dataList.get(i).get("group"))
                        );
                Integer min = orderGlassDetailMapper
                        .getMinTechnologyNumberByGroup(dataList.get(i).get("order_id"),
                                String.valueOf(dataList.get(i).get("order_number")),
                                String.valueOf(dataList.get(i).get("group"))
                        );
                for (String key : clos.keySet()) {
                    if(data.get(key) != null){
                        //判断是夹胶工序
                        if( clos.get(key).get("step")=="stepA"){
                            if(min == Integer.parseInt(String.valueOf(dataList.get(i).get("technology_number")))  ){
                                Map<String, Integer> getRow = new HashMap<>();
                                getRow.put("row", i );
                                getRow.put("col", (Integer) clos.get(key).get("col"));
                                getRow.put("rowspan", max-min+1);
                                getRow.put("colspan", 0);
                                rowCount.add(getRow);
                            }else{
                                data.put(key,"0");
                            }
                        }else{//中空,中空后工序
                            //小片序号不是1 的时候赋值0
                            if(Integer.parseInt(String.valueOf(dataList.get(i).get("technology_number")))  !=1){
                                data.put(key,"0");
                            }
                        }
                    }
                }
            }
            dataList.get(i).put("reportWorkQuantity",JSON.toJSONString(data));
            dataList.get(i).put("reportWorkQuantityShow",JSON.toJSONString(dataShow));
        }
        map.put("mergeCells", rowCount);
        map.put("data",dataList);
        return  map;
    }
    public Map<String, Object> processCardProgressReportSv(String orderId, List<Integer> columns) {
@@ -904,4 +1036,11 @@
        return map;
    }
    public Map<String, Object> yieldProcessSv(String selectTime1, String selectTime2, Report report) {
        Map<String, Object> map = new HashMap<>();
        map.put("data", reportMapper.yieldProcessMp(selectTime1, selectTime2, report));
        map.put("process", productionSchedulingMapper.selectProcess());
        return map;
    }
}