package com.jeesite.modules.mes.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.jeesite.common.collect.ListUtils; import com.jeesite.common.config.Global; import com.jeesite.modules.mes.entity.MesMaterialPrebind; import com.jeesite.modules.mes.resp.BindMaterialResp; import com.jeesite.modules.mes.resp.CommonResp; import com.jeesite.modules.mes.util.CommonUitl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.jeesite.common.entity.Page; import com.jeesite.common.service.CrudService; import com.jeesite.modules.mes.entity.MesLineProcessMaterial; import com.jeesite.modules.mes.dao.MesLineProcessMaterialDao; /** * 生产工序物料表Service * @author mes * @version 2024-04-02 */ @Service public class MesLineProcessMaterialService extends CrudService { @Autowired private MesLineProcessMaterialDao mesLineProcessMaterialDao; @Autowired private MesMaterialPrebindService mesMaterialPrebindService; /** * 获取单条数据 * @param mesLineProcessMaterial * @return */ @Override public MesLineProcessMaterial get(MesLineProcessMaterial mesLineProcessMaterial) { return super.get(mesLineProcessMaterial); } public MesLineProcessMaterial findInfo(MesLineProcessMaterial mesLineProcessMaterial) { return mesLineProcessMaterialDao.findInfo(mesLineProcessMaterial); } /** * 查询分页数据 * @param mesLineProcessMaterial 查询条件 * @param mesLineProcessMaterial.page 分页对象 * @return */ @Override public Page findPage(MesLineProcessMaterial mesLineProcessMaterial) { return super.findPage(mesLineProcessMaterial); } /** * 查询列表数据 * @param mesLineProcessMaterial * @return */ @Override public List findList(MesLineProcessMaterial mesLineProcessMaterial) { return super.findList(mesLineProcessMaterial); } /** * 保存数据(插入或更新) * @param mesLineProcessMaterial */ @Override @Transactional public void save(MesLineProcessMaterial mesLineProcessMaterial) { super.save(mesLineProcessMaterial); } /** * 更新状态 * @param mesLineProcessMaterial */ @Override @Transactional public void updateStatus(MesLineProcessMaterial mesLineProcessMaterial) { super.updateStatus(mesLineProcessMaterial); } /** * 删除数据 * @param mesLineProcessMaterial */ @Override @Transactional public void delete(MesLineProcessMaterial mesLineProcessMaterial) { super.delete(mesLineProcessMaterial); } // 获取绑定的物料 public List getBindMaterial(String oprno, String lineSn){ String oldOprno = oprno; oprno = CommonUitl.formatOprno(oprno); // 工序物料表 MesLineProcessMaterial mesLineProcessMaterial = new MesLineProcessMaterial(); mesLineProcessMaterial.setOprno(oprno); mesLineProcessMaterial.setLineSn(lineSn); //mesLineProcessMaterial.setStatus("0"); List lists = findList(mesLineProcessMaterial); if(ListUtils.isEmpty(lists)){ return null; // 不需要绑定物料 } // 工位绑定物料批次表:按工艺号建索引,避免双层循环 MesMaterialPrebind mesMaterialPrebind = new MesMaterialPrebind(); mesMaterialPrebind.setOprno(oldOprno); mesMaterialPrebind.setLineSn(lineSn); List mmps = mesMaterialPrebindService.findList(mesMaterialPrebind); Map prebindByCraft = new HashMap<>(); if (!ListUtils.isEmpty(mmps)) { for (MesMaterialPrebind prebind : mmps) { if (prebind.getCraft() != null) { prebindByCraft.put(prebind.getCraft(), prebind); } } } List mlists = new ArrayList<>(); for (MesLineProcessMaterial mesLineProcessMaterial1 : lists) { BindMaterialResp bindMaterialResp = new BindMaterialResp(); bindMaterialResp.setMaterialId(mesLineProcessMaterial1.getMaterialId()); bindMaterialResp.setMaterialTitle(mesLineProcessMaterial1.getMaterialTitle()); bindMaterialResp.setCraft(mesLineProcessMaterial1.getCraft()); bindMaterialResp.setBatchSn(""); bindMaterialResp.setLastTimes(""); bindMaterialResp.setMesMaterialPrebind(null); bindMaterialResp.setType(mesLineProcessMaterial1.getType()); bindMaterialResp.setConsumeNums(mesLineProcessMaterial1.getConsumeNums()); bindMaterialResp.setOprno(oldOprno); MesMaterialPrebind matched = prebindByCraft.get(mesLineProcessMaterial1.getCraft()); if (matched != null) { bindMaterialResp.setBatchSn(matched.getBatchSn()); bindMaterialResp.setLastTimes(matched.getLastTimes() + ""); bindMaterialResp.setType(matched.getType()); bindMaterialResp.setMesMaterialPrebind(matched); } mlists.add(bindMaterialResp); } return mlists; } }