package cn.mrdear.controller; import cn.mrdear.entity.dto.ManuOrderDTO; import cn.mrdear.entity.dto.MesJobOrderDTO; import cn.mrdear.entity.dto.ProductDTO; import cn.mrdear.entity.vo.JobOrderListVO; import cn.mrdear.mapper.ManuOrderMapper; import cn.mrdear.mapper.MesJobOrderMapper; import cn.mrdear.mapper.ProductMapper; import cn.mrdear.util.DateUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.web.bind.annotation.*; import java.util.*; import java.util.stream.Collectors; /** * @Author: zxy * @Date: create in 2025/4/9 16:10 */ @RestController() @RequestMapping("jobOrder") public class JobOrderController { @Autowired MesJobOrderMapper mesJobOrderMapper; @Autowired ProductMapper productMapper; @Autowired ManuOrderMapper manuOrderMapper; @GetMapping("getList") public Map getJobOrderList() { HashMap resultMap = new HashMap<>(); List jobOrderListVOS = new ArrayList<>(); List jobOrderDTOList = mesJobOrderMapper.getListByDate(); if(jobOrderDTOList.size() == 0) { resultMap.put("data",jobOrderListVOS); return resultMap; } Map> ordersByYear = jobOrderDTOList.stream() // 过滤掉 code 太短或格式不对的项(可选) .filter(dto -> dto.getCode() != null && dto.getCode().length() >= 4) .collect(Collectors.groupingBy(dto -> { String yy = dto.getCode().substring(2, 4); // e.g. "25" int year = 2000 + Integer.parseInt(yy); // 转成 2025 return year; })); // 将map按年份倒序 Map> descByYear = new TreeMap<>(Comparator.reverseOrder()); descByYear.putAll(ordersByYear); for (Map.Entry> entry : descByYear.entrySet()) { Integer year = entry.getKey(); List listForYear = entry.getValue(); // 获取订单详情 List manuOrderIds = listForYear.stream().map(MesJobOrderDTO::getEmesoManuorderId) .collect(Collectors.toList()); // 获取形体 List productIds = listForYear.stream().map(MesJobOrderDTO::getmProductId).distinct() .collect(Collectors.toList()); List productDTOList = productMapper.getProductMap(productIds); Map productMap = productDTOList.stream().collect(Collectors.toMap(ProductDTO::getmProductId, ProductDTO::getValue)); String tableName = "emeso_manuorder_" + year; List manuOrderList = manuOrderMapper.getManuOrderList(tableName, manuOrderIds); Map manuOrderDTOMap = manuOrderList.stream().collect(Collectors.toMap(ManuOrderDTO::getManuOrderId, o -> o)); for (MesJobOrderDTO mesJobOrderDTO : listForYear) { JobOrderListVO jobOrderListVO = new JobOrderListVO(); jobOrderListVO.setJobOrderId(mesJobOrderDTO.getEmesoJobOrderId()); jobOrderListVO.setCode(mesJobOrderDTO.getCode()); // 工单号 jobOrderListVO.setQty(mesJobOrderDTO.getQty()); // 数量 jobOrderListVO.setDescription(mesJobOrderDTO.getDescription()); jobOrderListVO.setColor(mesJobOrderDTO.getColor()); jobOrderListVO.setType(mesJobOrderDTO.getType()); jobOrderListVO.setCreateTime(DateUtil.timeFormat(mesJobOrderDTO.getCreated())); String mProductId = mesJobOrderDTO.getmProductId(); if(productMap.containsKey(mProductId)) { jobOrderListVO.setGoodsCode(productMap.get(mProductId)); } String emesoManuorderId = mesJobOrderDTO.getEmesoManuorderId(); if(manuOrderDTOMap.containsKey(emesoManuorderId)) { ManuOrderDTO manuOrderDTO = manuOrderDTOMap.get(emesoManuorderId); jobOrderListVO.setOrderCode(manuOrderDTO.getOrderCode()); String sizeCode2 = manuOrderDTO.getSizeCode2(); jobOrderListVO.setShoesSize(sizeCode2); } jobOrderListVOS.add(jobOrderListVO); } } resultMap.put("data",jobOrderListVOS); return resultMap; } }