MesLineProcessMaterialService.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. package com.jeesite.modules.mes.service;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import com.jeesite.common.collect.ListUtils;
  7. import com.jeesite.common.config.Global;
  8. import com.jeesite.modules.mes.entity.MesMaterialPrebind;
  9. import com.jeesite.modules.mes.resp.BindMaterialResp;
  10. import com.jeesite.modules.mes.resp.CommonResp;
  11. import com.jeesite.modules.mes.util.CommonUitl;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import com.jeesite.common.entity.Page;
  16. import com.jeesite.common.service.CrudService;
  17. import com.jeesite.modules.mes.entity.MesLineProcessMaterial;
  18. import com.jeesite.modules.mes.dao.MesLineProcessMaterialDao;
  19. /**
  20. * 生产工序物料表Service
  21. * @author mes
  22. * @version 2024-04-02
  23. */
  24. @Service
  25. public class MesLineProcessMaterialService extends CrudService<MesLineProcessMaterialDao, MesLineProcessMaterial> {
  26. @Autowired
  27. private MesLineProcessMaterialDao mesLineProcessMaterialDao;
  28. @Autowired
  29. private MesMaterialPrebindService mesMaterialPrebindService;
  30. /**
  31. * 获取单条数据
  32. * @param mesLineProcessMaterial
  33. * @return
  34. */
  35. @Override
  36. public MesLineProcessMaterial get(MesLineProcessMaterial mesLineProcessMaterial) {
  37. return super.get(mesLineProcessMaterial);
  38. }
  39. public MesLineProcessMaterial findInfo(MesLineProcessMaterial mesLineProcessMaterial) {
  40. return mesLineProcessMaterialDao.findInfo(mesLineProcessMaterial);
  41. }
  42. /**
  43. * 查询分页数据
  44. * @param mesLineProcessMaterial 查询条件
  45. * @param mesLineProcessMaterial.page 分页对象
  46. * @return
  47. */
  48. @Override
  49. public Page<MesLineProcessMaterial> findPage(MesLineProcessMaterial mesLineProcessMaterial) {
  50. return super.findPage(mesLineProcessMaterial);
  51. }
  52. /**
  53. * 查询列表数据
  54. * @param mesLineProcessMaterial
  55. * @return
  56. */
  57. @Override
  58. public List<MesLineProcessMaterial> findList(MesLineProcessMaterial mesLineProcessMaterial) {
  59. return super.findList(mesLineProcessMaterial);
  60. }
  61. /**
  62. * 保存数据(插入或更新)
  63. * @param mesLineProcessMaterial
  64. */
  65. @Override
  66. @Transactional
  67. public void save(MesLineProcessMaterial mesLineProcessMaterial) {
  68. super.save(mesLineProcessMaterial);
  69. }
  70. /**
  71. * 更新状态
  72. * @param mesLineProcessMaterial
  73. */
  74. @Override
  75. @Transactional
  76. public void updateStatus(MesLineProcessMaterial mesLineProcessMaterial) {
  77. super.updateStatus(mesLineProcessMaterial);
  78. }
  79. /**
  80. * 删除数据
  81. * @param mesLineProcessMaterial
  82. */
  83. @Override
  84. @Transactional
  85. public void delete(MesLineProcessMaterial mesLineProcessMaterial) {
  86. super.delete(mesLineProcessMaterial);
  87. }
  88. // 获取绑定的物料
  89. public List<BindMaterialResp> getBindMaterial(String oprno, String lineSn){
  90. String oldOprno = oprno;
  91. oprno = CommonUitl.formatOprno(oprno);
  92. // 工序物料表
  93. MesLineProcessMaterial mesLineProcessMaterial = new MesLineProcessMaterial();
  94. mesLineProcessMaterial.setOprno(oprno);
  95. mesLineProcessMaterial.setLineSn(lineSn);
  96. //mesLineProcessMaterial.setStatus("0");
  97. List<MesLineProcessMaterial> lists = findList(mesLineProcessMaterial);
  98. if(ListUtils.isEmpty(lists)){
  99. return null; // 不需要绑定物料
  100. }
  101. // 工位绑定物料批次表:按工艺号建索引,避免双层循环
  102. MesMaterialPrebind mesMaterialPrebind = new MesMaterialPrebind();
  103. mesMaterialPrebind.setOprno(oldOprno);
  104. mesMaterialPrebind.setLineSn(lineSn);
  105. List<MesMaterialPrebind> mmps = mesMaterialPrebindService.findList(mesMaterialPrebind);
  106. Map<String, MesMaterialPrebind> prebindByCraft = new HashMap<>();
  107. if (!ListUtils.isEmpty(mmps)) {
  108. for (MesMaterialPrebind prebind : mmps) {
  109. if (prebind.getCraft() != null) {
  110. prebindByCraft.put(prebind.getCraft(), prebind);
  111. }
  112. }
  113. }
  114. List<BindMaterialResp> mlists = new ArrayList<>();
  115. for (MesLineProcessMaterial mesLineProcessMaterial1 : lists) {
  116. BindMaterialResp bindMaterialResp = new BindMaterialResp();
  117. bindMaterialResp.setMaterialId(mesLineProcessMaterial1.getMaterialId());
  118. bindMaterialResp.setMaterialTitle(mesLineProcessMaterial1.getMaterialTitle());
  119. bindMaterialResp.setCraft(mesLineProcessMaterial1.getCraft());
  120. bindMaterialResp.setBatchSn("");
  121. bindMaterialResp.setLastTimes("");
  122. bindMaterialResp.setMesMaterialPrebind(null);
  123. bindMaterialResp.setType(mesLineProcessMaterial1.getType());
  124. bindMaterialResp.setConsumeNums(mesLineProcessMaterial1.getConsumeNums());
  125. bindMaterialResp.setOprno(oldOprno);
  126. MesMaterialPrebind matched = prebindByCraft.get(mesLineProcessMaterial1.getCraft());
  127. if (matched != null) {
  128. bindMaterialResp.setBatchSn(matched.getBatchSn());
  129. bindMaterialResp.setLastTimes(matched.getLastTimes() + "");
  130. bindMaterialResp.setType(matched.getType());
  131. bindMaterialResp.setMesMaterialPrebind(matched);
  132. }
  133. mlists.add(bindMaterialResp);
  134. }
  135. return mlists;
  136. }
  137. }