廖井涛
2025-11-17 fcbce36f8734813b13c8f9c5b26b4bd192274534
north-glass-erp/src/main/java/com/example/erp/service/pp/ReplenishService.java
@@ -4,6 +4,7 @@
import com.alibaba.fastjson.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.erp.common.AsyncQueryExecutor;
import com.example.erp.dto.pp.PatchLogAddDTO;
import com.example.erp.dto.pp.PatchLogDTO;
import com.example.erp.entity.pp.FlowCard;
@@ -20,9 +21,12 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@Service
@@ -43,6 +47,10 @@
    final LogService logService;
    //多线程池
    @Resource
    private AsyncQueryExecutor asyncExecutor;
    public ReplenishService(PatchLogMapper patchMapper, SysErrorService sysErrorService, ReportingWorkMapper reportingWorkMapper,FlowCardMapper flowCardMapper,LogService logService) {
        this.patchMapper = patchMapper;
        this.sysErrorService = sysErrorService;
@@ -58,28 +66,83 @@
    }
    public Map<String, Object> SelectReplenish(Integer pageNum, Integer pageSize, List<String> selectDate, PatchLogDTO patchLogDTO) {
        Integer offset = (pageNum-1)*pageSize;
//    public Map<String, Object> SelectReplenish(Integer pageNum, Integer pageSize, List<String> selectDate, PatchLogDTO patchLogDTO) {
//        Integer offset = (pageNum-1)*pageSize;
//        String endDate = LocalDate.now().toString();
//        String startDate = LocalDate.now().minusDays(15).toString();
//        if(selectDate !=null && selectDate.size()==2){
//            if(!selectDate.get(0).isEmpty()){
//                startDate = selectDate.get(0);
//            }
//            if(!selectDate.get(1).isEmpty()){
//                endDate = selectDate.get(1);
//            }
//        }
//        Map<String,Object> map = new HashMap<>();
//        map.put("data",patchMapper.SelectReplenish(offset,pageSize,startDate,endDate,patchLogDTO));
//        map.put("total",patchMapper.SelectReplenishPageTotal(offset,pageSize,startDate,endDate,patchLogDTO));
//
//        List<String> list = new ArrayList<>();
//        list.add(startDate);
//        list.add(endDate);
//        map.put("selectDate",list);
//        return map;
//    }
    public Map<String, Object> SelectReplenish(
            Integer pageNum, Integer pageSize,
            List<String> selectDate, PatchLogDTO patchLogDTO) {
        Integer offset = (pageNum - 1) * pageSize;
        // 默认时间范围:过去15天
        String endDate = LocalDate.now().toString();
        String startDate = LocalDate.now().minusDays(15).toString();
        if(selectDate !=null && selectDate.size()==2){
            if(!selectDate.get(0).isEmpty()){
        // 用户自定义时间段
        if (selectDate != null && selectDate.size() == 2) {
            if (!selectDate.get(0).isEmpty()) {
                startDate = selectDate.get(0);
            }
            if(!selectDate.get(1).isEmpty()){
            if (!selectDate.get(1).isEmpty()) {
                endDate = selectDate.get(1);
            }
        }
        Map<String,Object> map = new HashMap<>();
        map.put("data",patchMapper.SelectReplenish(offset,pageSize,startDate,endDate,patchLogDTO));
        map.put("total",patchMapper.SelectReplenishPageTotal(offset,pageSize,startDate,endDate,patchLogDTO));
        List<String> list = new ArrayList<>();
        list.add(startDate);
        list.add(endDate);
        map.put("selectDate",list);
        return map;
        Map<String, Object> result = new HashMap<>();
        try {
            // 使用线程池并行执行两个SQL
            String finalStartDate = startDate;
            String finalEndDate = endDate;
            CompletableFuture<List<PatchLogDTO>> dataFuture =
                    asyncExecutor.runAsync(() ->
                            patchMapper.SelectReplenish(offset, pageSize, finalStartDate, finalEndDate, patchLogDTO));
            CompletableFuture<Map<String, Integer>> totalFuture =
                    asyncExecutor.runAsync(() ->
                            patchMapper.SelectReplenishPageTotal(offset, pageSize, finalStartDate, finalEndDate, patchLogDTO));
            // 等待两个任务都完成
            CompletableFuture.allOf(dataFuture, totalFuture).join();
            result.put("data", dataFuture.get());
            result.put("total", totalFuture.get());
            // 返回时间段
            List<String> list = new ArrayList<>();
            list.add(startDate);
            list.add(endDate);
            result.put("selectDate", list);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("并行查询补片记录异常:" + e.getMessage(), e);
        }
        return result;
    }
    public Boolean saveReplenish(Map<String,Object> object) {
        boolean saveState = true;
@@ -225,7 +288,15 @@
                }
                else{//小片标签
                    Map<String, Object> itemmap = new HashMap<>();
                    itemmap.put("data", flowCardMapper.getRepairPrintCustomDataSemi(flowCard.getProcessId(),flowCard.getTechnologyNumber(),flowCard.getReportingWorkId(),flowCard.getOrderNumber()));
                    List<Map<String,Object>> customDataSemi =flowCardMapper.getRepairPrintCustomDataSemi(flowCard.getProcessId(),flowCard.getTechnologyNumber(),flowCard.getReportingWorkId(),flowCard.getOrderNumber());
                    for (Map<String, Object> dataMap : customDataSemi) {
                        dataMap.put("newList", flowCardMapper.getgetPrintCustomDataSemiSp(
                                flowCard.getProcessId(),
                                dataMap.get("technologyNumber").toString(),
                                flowCard.getOrderNumber()
                        ));
                    }
                    itemmap.put("data", customDataSemi);
                    list.add(itemmap);
                }