JobOrderController.java 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package cn.mrdear.controller;
  2. import cn.mrdear.entity.dto.ManuOrderDTO;
  3. import cn.mrdear.entity.dto.MesJobOrderDTO;
  4. import cn.mrdear.entity.dto.ProductDTO;
  5. import cn.mrdear.entity.vo.JobOrderListVO;
  6. import cn.mrdear.mapper.ManuOrderMapper;
  7. import cn.mrdear.mapper.MesJobOrderMapper;
  8. import cn.mrdear.mapper.ProductMapper;
  9. import cn.mrdear.util.DateUtil;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.format.annotation.DateTimeFormat;
  12. import org.springframework.web.bind.annotation.*;
  13. import java.util.*;
  14. import java.util.stream.Collectors;
  15. /**
  16. * @Author: zxy
  17. * @Date: create in 2025/4/9 16:10
  18. */
  19. @RestController()
  20. @RequestMapping("jobOrder")
  21. public class JobOrderController {
  22. @Autowired
  23. MesJobOrderMapper mesJobOrderMapper;
  24. @Autowired
  25. ProductMapper productMapper;
  26. @Autowired
  27. ManuOrderMapper manuOrderMapper;
  28. @GetMapping("getList")
  29. public Map<String,Object> getJobOrderList() {
  30. HashMap<String, Object> resultMap = new HashMap<>();
  31. List<JobOrderListVO> jobOrderListVOS = new ArrayList<>();
  32. List<MesJobOrderDTO> jobOrderDTOList = mesJobOrderMapper.getListByDate();
  33. if(jobOrderDTOList.size() == 0) {
  34. resultMap.put("data",jobOrderListVOS);
  35. return resultMap;
  36. }
  37. Map<Integer, List<MesJobOrderDTO>> ordersByYear = jobOrderDTOList.stream()
  38. // 过滤掉 code 太短或格式不对的项(可选)
  39. .filter(dto -> dto.getCode() != null && dto.getCode().length() >= 4)
  40. .collect(Collectors.groupingBy(dto -> {
  41. String yy = dto.getCode().substring(2, 4); // e.g. "25"
  42. int year = 2000 + Integer.parseInt(yy); // 转成 2025
  43. return year;
  44. }));
  45. // 将map按年份倒序
  46. Map<Integer, List<MesJobOrderDTO>> descByYear = new TreeMap<>(Comparator.reverseOrder());
  47. descByYear.putAll(ordersByYear);
  48. for (Map.Entry<Integer, List<MesJobOrderDTO>> entry : descByYear.entrySet()) {
  49. Integer year = entry.getKey();
  50. List<MesJobOrderDTO> listForYear = entry.getValue();
  51. // 获取订单详情
  52. List<String> manuOrderIds = listForYear.stream().map(MesJobOrderDTO::getEmesoManuorderId)
  53. .collect(Collectors.toList());
  54. // 获取形体
  55. List<String> productIds = listForYear.stream().map(MesJobOrderDTO::getmProductId).distinct()
  56. .collect(Collectors.toList());
  57. List<ProductDTO> productDTOList = productMapper.getProductMap(productIds);
  58. Map<String, String> productMap = productDTOList.stream().collect(Collectors.toMap(ProductDTO::getmProductId, ProductDTO::getValue));
  59. String tableName = "emeso_manuorder_" + year;
  60. List<ManuOrderDTO> manuOrderList = manuOrderMapper.getManuOrderList(tableName, manuOrderIds);
  61. Map<String, ManuOrderDTO> manuOrderDTOMap = manuOrderList.stream().collect(Collectors.toMap(ManuOrderDTO::getManuOrderId, o -> o));
  62. for (MesJobOrderDTO mesJobOrderDTO : listForYear) {
  63. JobOrderListVO jobOrderListVO = new JobOrderListVO();
  64. jobOrderListVO.setJobOrderId(mesJobOrderDTO.getEmesoJobOrderId());
  65. jobOrderListVO.setCode(mesJobOrderDTO.getCode()); // 工单号
  66. jobOrderListVO.setQty(mesJobOrderDTO.getQty()); // 数量
  67. jobOrderListVO.setDescription(mesJobOrderDTO.getDescription());
  68. jobOrderListVO.setColor(mesJobOrderDTO.getColor());
  69. jobOrderListVO.setType(mesJobOrderDTO.getType());
  70. jobOrderListVO.setCreateTime(DateUtil.timeFormat(mesJobOrderDTO.getCreated()));
  71. String mProductId = mesJobOrderDTO.getmProductId();
  72. if(productMap.containsKey(mProductId)) {
  73. jobOrderListVO.setGoodsCode(productMap.get(mProductId));
  74. }
  75. String emesoManuorderId = mesJobOrderDTO.getEmesoManuorderId();
  76. if(manuOrderDTOMap.containsKey(emesoManuorderId)) {
  77. ManuOrderDTO manuOrderDTO = manuOrderDTOMap.get(emesoManuorderId);
  78. jobOrderListVO.setOrderCode(manuOrderDTO.getOrderCode());
  79. String sizeCode2 = manuOrderDTO.getSizeCode2();
  80. jobOrderListVO.setShoesSize(sizeCode2);
  81. }
  82. jobOrderListVOS.add(jobOrderListVO);
  83. }
  84. }
  85. resultMap.put("data",jobOrderListVOS);
  86. return resultMap;
  87. }
  88. }