From eec479e2f3139286449005dcb05c014e4a60d255 Mon Sep 17 00:00:00 2001 From: cuilei <ray_tsu1@163.com> Date: 星期一, 18 八月 2025 16:59:25 +0800 Subject: [PATCH] 报工接口、产线线边库物料查询接口 --- src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java | 81 ++++++++++++++++++++++++++++------------ 1 files changed, 56 insertions(+), 25 deletions(-) diff --git a/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java b/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java index 75cda98..dc6a157 100644 --- a/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java +++ b/src/main/java/org/jeecg/modules/pms/service/impl/PmsProcessBillMaterialsServiceImpl.java @@ -2,22 +2,26 @@ import cn.hutool.core.collection.CollectionUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang3.StringUtils; +import org.jeecg.common.exception.JeecgBootException; import org.jeecg.modules.mes.entity.MesProductionOrder; import org.jeecg.modules.pms.entity.PmsProcessBillMaterials; +import org.jeecg.modules.pms.entity.PmsProcessBillMaterialsDetail; import org.jeecg.modules.pms.mapper.PmsProcessBillMaterialsMapper; import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsDetailService; import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsService; +import org.jeecg.modules.pms.vo.ProcessBillMaterialsDetailVo; import org.jeecg.modules.sap.dto.OrderBomDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; +import java.math.RoundingMode; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -34,31 +38,12 @@ private IPmsProcessBillMaterialsDetailService processBillMaterialsDetailService; @Override - public IPage<Map<String, Object>> getpmsProcessBillMaterialsListData(Integer pageNo, Integer pageSize, HttpServletRequest req) { - IPage<Map> pageData = new Page<Map>(pageNo, pageSize); - Map<String, String> paramMap = new HashMap<String, String>(); - Map<String, String[]> parameterMap = req.getParameterMap(); - if (null != parameterMap) { - if (parameterMap.containsKey("materialNumber") && StringUtils.isNotBlank(parameterMap.get("materialNumber")[0])) { - paramMap.put("materialNumber", parameterMap.get("materialNumber")[0]); - } - if (parameterMap.containsKey("materialName") && StringUtils.isNotBlank(parameterMap.get("materialName")[0])) { - paramMap.put("materialName", parameterMap.get("materialName")[0].trim()); - } - if (parameterMap.containsKey("batchNumber") && StringUtils.isNotBlank(parameterMap.get("batchNumber")[0])) { - paramMap.put("batchNumber", parameterMap.get("batchNumber")[0].trim()); - } - } - return super.getBaseMapper().getpmsProcessBillMaterialsListData(pageData, paramMap); - } - - @Override @Transactional(rollbackFor = Exception.class) public boolean saveOrUpdateOrderBom(Map<String, MesProductionOrder> orderMap, List<OrderBomDTO> orderBomDTOList) { - for (Map.Entry<String, MesProductionOrder> entry : orderMap.entrySet()) { + for (Map.Entry<String, MesProductionOrder> entry : orderMap.entrySet()) { MesProductionOrder order = entry.getValue(); PmsProcessBillMaterials materials = getByOrderId(order.getId()); - if(materials != null) { + if (materials != null) { //鏇存柊鐗╂枡鏁版嵁 materials.setOrderId(order.getId()); materials.setMaterialNumber(order.getMaterialNumber()); @@ -71,7 +56,7 @@ //杩囨护鍑烘璁㈠崟鐨勭墿鏂欎俊鎭� List<OrderBomDTO> collect = orderBomDTOList.stream().filter(orderBomDTO -> entry.getKey().equals(orderBomDTO.getAUFNR())).collect(Collectors.toList()); processBillMaterialsDetailService.saveBatchDetail(materials.getId(), collect); - }else { + } else { materials = new PmsProcessBillMaterials(); materials.setOrderId(order.getId()); materials.setMaterialNumber(order.getMaterialNumber()); @@ -97,4 +82,50 @@ } return null; } + + @Override + public IPage<PmsProcessBillMaterials> queryPageList(Page<PmsProcessBillMaterials> page, PmsProcessBillMaterials query) { + QueryWrapper<PmsProcessBillMaterials> queryWrapper = new QueryWrapper<>(); + queryWrapper.orderByDesc("pbm.create_time"); + if (query != null) { + //鐗╂枡缂栫爜 妯$硦鏌ヨ + if (StringUtils.isNotBlank(query.getMaterialNumber())) { + queryWrapper.like("pbm.material_number", query.getMaterialNumber()); + } + //鐗╂枡鍚嶇О 妯$硦鏌ヨ + if (StringUtils.isNotBlank(query.getMaterialName())) { + queryWrapper.like("pbm.material_name", query.getMaterialName()); + } + //璁㈠崟鍙� 妯$硦鏌ヨ + if (StringUtils.isNotBlank(query.getOrderCode())) { + queryWrapper.like("po.order_code", query.getOrderCode()); + } + } + return this.getBaseMapper().queryPageList(page, queryWrapper); + } + + @Override + public List<ProcessBillMaterialsDetailVo> queryMaterialsDetailByOrderIdAndMaterialNumber(String orderId, String materialNumber) { + //鏍规嵁鐢熶骇璁㈠崟id鍜岀墿鏂欑紪鐮佹煡璇㈣鍗旴OM + PmsProcessBillMaterials processBillMaterials = list(new LambdaQueryWrapper<PmsProcessBillMaterials>() + .eq(PmsProcessBillMaterials::getOrderId, orderId) + .eq(PmsProcessBillMaterials::getMaterialNumber, materialNumber)) + .stream().findFirst().orElse(null); + if (processBillMaterials == null) { + throw new JeecgBootException("鏈壘鍒颁笌璇ョ墿鏂欏叧鑱旂殑璁㈠崟BOM锛�"); + } + //鏌ヨ璁㈠崟BOM鏄庣粏 + List<PmsProcessBillMaterialsDetail> processBillMaterialsDetails = processBillMaterialsDetailService.queryByMaterialId(processBillMaterials.getId()); + List<ProcessBillMaterialsDetailVo> billMaterialsDetailList = CollectionUtil.newArrayList(); + for (PmsProcessBillMaterialsDetail processBillMaterialsDetail : processBillMaterialsDetails) { + ProcessBillMaterialsDetailVo processBillMaterialsDetailVo = new ProcessBillMaterialsDetailVo() + .setMaterialNumber(processBillMaterialsDetail.getMaterialNumber()) + .setMaterialName(processBillMaterialsDetail.getMaterialName()) + .setProductionUnit(processBillMaterialsDetail.getProductionUnit()) + .setPerQuantity(processBillMaterialsDetail.getUsageQuantity() + .divide(processBillMaterials.getProductionQuantity(), 2, RoundingMode.HALF_UP)); + billMaterialsDetailList.add(processBillMaterialsDetailVo); + } + return billMaterialsDetailList; + } } -- Gitblit v1.9.3