廖井涛
2025-08-12 5a0b47f515ceef0ce135dd91eb7d8ba49754a570
north-glass-erp/src/main/java/com/example/erp/service/pp/ReportService.java
@@ -5,18 +5,18 @@
import com.alibaba.fastjson.TypeReference;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.erp.dto.pp.*;
import com.example.erp.entity.pp.DamageDetails;
import com.example.erp.entity.pp.Report;
import com.example.erp.entity.sd.BasicData;
import com.example.erp.entity.sd.OrderDetail;
import com.example.erp.entity.sd.OrderGlassDetail;
import com.example.erp.entity.sd.ProductDetail;
import com.example.erp.mapper.pp.FlowCardMapper;
import com.example.erp.mapper.pp.ProductionSchedulingMapper;
import com.example.erp.mapper.pp.ReportMapper;
import com.example.erp.mapper.pp.ReportingWorkMapper;
import com.example.erp.mapper.pp.*;
import com.example.erp.mapper.sd.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
@@ -42,6 +42,7 @@
    private final BasicDataMapper basicDataMapper;
    private final ProductDetailMapper productDetailMapper;
    private final OrderDetailMapper orderDetailMapper;
    private final DamageDetailsMapper damageDetailsMapper;
    FlowCardMapper flowCardMapper;
    private ReportingWorkMapper reportingWorkMapper;
@@ -122,7 +123,7 @@
                         ProductionSchedulingMapper productionSchedulingMapper, FlowCardMapper flowCardMapper,
                         OrderGlassDetailMapper orderGlassDetailMapper, BasicDataMapper basicDataMapper,
                         ProductDetailMapper productDetailMapper, OrderDetailMapper orderDetailMapper,
                         ReportingWorkMapper reportingWorkMapper) {
                         ReportingWorkMapper reportingWorkMapper, DamageDetailsMapper damageDetailsMapper) {
        this.reportMapper = reportMapper;
        this.orderProcessDetailMapper = orderProcessDetailMapper;
        this.productionSchedulingMapper = productionSchedulingMapper;
@@ -132,6 +133,7 @@
        this.productDetailMapper = productDetailMapper;
        this.orderDetailMapper = orderDetailMapper;
        this.reportingWorkMapper = reportingWorkMapper;
        this.damageDetailsMapper = damageDetailsMapper;
    }
    //流程卡进度方法
@@ -157,7 +159,7 @@
            //判断磨边和磨边后工序
            //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"), 15+i);
                clos.put(uniqueList.get(i).get("process"), 16+i);
            }
            //判断中空和中空后工序
            //Objects.equals(basicData.getNickname(), "stepB") || Objects.equals(basicData.getNickname(), "stepD")
@@ -186,6 +188,48 @@
                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
                        .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)
                        );
                if(!hasBreak.isEmpty()){
                    int finalI = i;
                    data.forEach((thisProcess, index)->{
                        String behindProcess = orderProcessDetailMapper.getBehindProcess(
                                dataList.get(finalI).get("processId"),
                                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("processId"),
                                    String.valueOf(dataList.get(finalI).get("order_number")),
                                    String.valueOf(dataList.get(finalI).get("technology_number")),
                                    behindProcess
                            );
                            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));
                            }
                        }
                    });
                }
                Integer max = orderGlassDetailMapper
                        .getMaxTechnologyNumberByGroup(dataList.get(i).get("order_id"),
                                String.valueOf(dataList.get(i).get("order_number")),
@@ -214,6 +258,7 @@
                    }
                }
                dataList.get(i).put("reportWorkQuantity",JSON.toJSONString(data));
                dataList.get(i).put("reportWorkQuantityShow",JSON.toJSONString(dataShow));
            }
        }