yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/itemconsume/MesWmItemConsumeLineController.java
@@ -2,16 +2,8 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO; import cn.iocoder.yudao.module.mdm.api.item.MdmItemApi; import cn.iocoder.yudao.module.mdm.api.item.dto.MdmItemRespDTO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; import cn.iocoder.yudao.module.mdm.api.unit.MdmUnitMeasureApi; import cn.iocoder.yudao.module.mdm.api.unit.dto.MdmUnitMeasureRespDTO; import cn.iocoder.yudao.module.mes.service.wm.itemconsume.MesWmItemConsumeLineService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,12 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Map; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.MapUtils.findAndThen; @Tag(name = "管çåå° - MES ç©ææ¶èè®°å½è¡") @RestController @@ -38,33 +25,15 @@ @Resource private MesWmItemConsumeLineService itemConsumeLineService; @Resource private MdmItemApi mdmItemApi; @Resource private MdmUnitMeasureApi mdmUnitMeasureApi; @GetMapping("/page") @Operation(summary = "æ ¹æ®æ¥å·¥ç¼å·å页è·åæ¶èè¡å表") @PreAuthorize("@ss.hasPermission('mes:pro-feedback:query')") public CommonResult<PageResult<MesWmItemConsumeLineRespVO>> getItemConsumeLinePage( @Valid MesWmItemConsumeLinePageReqVO pageReqVO) { // 1. å页æ¥è¯¢æ¶èè¡ PageResult<MesWmItemConsumeLineDO> pageResult = PageResult<MesWmItemConsumeLineRespVO> pageResult = itemConsumeLineService.getItemConsumeLinePage(pageReqVO); PageResult<MesWmItemConsumeLineRespVO> voPage = BeanUtils.toBean(pageResult, MesWmItemConsumeLineRespVO.class); // 2. æ¼æ¥ç©æä¿¡æ¯ Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap( convertSet(pageResult.getList(), MesWmItemConsumeLineDO::getItemId)); Map<Long, MdmUnitMeasureRespDTO> unitMap = mdmUnitMeasureApi.getUnitMeasureList( convertSet(itemMap.values(), MdmItemRespDTO::getUnitMeasureId)).getCheckedData() .stream().collect(Collectors.toMap(MdmUnitMeasureRespDTO::getId, e -> e)); for (MesWmItemConsumeLineRespVO vo : voPage.getList()) { findAndThen(itemMap, vo.getItemId(), item -> { vo.setItemCode(item.getCode()).setItemName(item.getName()).setSpecification(item.getSpecification()); findAndThen(unitMap, item.getUnitMeasureId(), unit -> vo.setUnitName(unit.getName())); }); } return success(voPage); return success(pageResult); } } yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/wm/itemconsume/MesWmItemConsumeLineMapper.java
@@ -4,8 +4,12 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -17,11 +21,17 @@ @Mapper public interface MesWmItemConsumeLineMapper extends BaseMapperX<MesWmItemConsumeLineDO> { default PageResult<MesWmItemConsumeLineDO> selectPage(MesWmItemConsumeLinePageReqVO reqVO, Long consumeId) { return selectPage(reqVO, new LambdaQueryWrapperX<MesWmItemConsumeLineDO>() .eq(MesWmItemConsumeLineDO::getConsumeId, consumeId) .orderByDesc(MesWmItemConsumeLineDO::getId)); /** * å页æ¥è¯¢æ¶èè¡ï¼å ³è mdm_item + mdm_unit_measureï¼éè¿ feedbackIdï¼ */ IPage<MesWmItemConsumeLineRespVO> selectPageByFeedbackId( Page<MesWmItemConsumeLineRespVO> page, @Param("feedbackId") Long feedbackId); default PageResult<MesWmItemConsumeLineRespVO> selectPageByFeedbackId( MesWmItemConsumeLinePageReqVO reqVO) { Page<MesWmItemConsumeLineRespVO> mpPage = new Page<>(reqVO.getPageNo(), reqVO.getPageSize()); IPage<MesWmItemConsumeLineRespVO> result = selectPageByFeedbackId(mpPage, reqVO.getFeedbackId()); return new PageResult<>(result.getRecords(), result.getTotal()); } default List<MesWmItemConsumeLineDO> selectListByConsumeId(Long consumeId) { yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/feedback/MesProFeedbackServiceImpl.java
@@ -205,28 +205,28 @@ .setStatus(MesProFeedbackStatusEnum.FINISHED.getStatus()) .setUncheckQuantity(BigDecimal.ZERO)); // 6. å ³é®å·¥åºï¼çæäº§åºåï¼å¹¶æ ¹æ®æ¯å¦éè¦æ£éªå³å®å ¥åºæ¹å¼ if (keyFlag) { // 6. æ ¹æ®æ¯å¦éè¦æ£éªï¼å³å®äº§åºåå ¥åºæ¹å¼ if (checkFlag) { // 6.1 éè¦æ£éªï¼çæäº§åºåï¼è´¨éç¶æ=å¾ æ£éªï¼ï¼æ´æ°æ¥å·¥ç¶æä¸ºå¾ æ£éªï¼çè´¨æ£å®æåè°ååå ¥åº if (checkFlag) { // 宿æ¶åè°è§ï¼MesQcIpqcServiceImpl#finishIpqc â splitPendingAndFinishProduce + completeFeedbackFromIpqc productProduceService.generateProductProduce(feedback, true); feedbackMapper.updateById(new MesProFeedbackDO().setId(id) .setStatus(MesProFeedbackStatusEnum.UNCHECK.getStatus())); return false; } // 6.2 æ 鿣éªï¼çæäº§åºåï¼æåæ ¼/ä¸åæ ¼æè¡ï¼ï¼ç´æ¥å®æå ¥åºï¼å¹¶æ´æ°ä»»å¡/å·¥åçå·²ç产æ°é // 宿æ¶åè°è§ï¼MesQcIpqcServiceImpl#finishIpqc â splitPendingAndFinishProduce + updateProFeedbackWhenIpqcFinish productProduceService.generateProductProduce(feedback, true); feedbackMapper.updateById(new MesProFeedbackDO().setId(id) .setStatus(MesProFeedbackStatusEnum.UNCHECK.getStatus())); return false; } else { // 6.2 æ 鿣éªï¼çæäº§åºåï¼æåæ ¼/ä¸åæ ¼æè¡ï¼ï¼ç´æ¥å®æå ¥åº MesWmProductProduceDO produce = productProduceService.generateProductProduce(feedback, false); productProduceService.finishProductProduce(produce.getId()); updateTaskAndWorkOrderByFeedback(feedback); } else { // 6.3 éå ³é®å·¥åºï¼åªæ´æ°ä»»å¡çå·²ç产æ°éï¼å·¥å䏿´æ°ï¼å·¥ååªçå ³é®å·¥åºäº§åºï¼ taskService.updateProducedQuantity(feedback.getTaskId(), feedback.getFeedbackQuantity(), ObjectUtil.defaultIfNull(feedback.getQualifiedQuantity(), BigDecimal.ZERO), ObjectUtil.defaultIfNull(feedback.getUnqualifiedQuantity(), BigDecimal.ZERO)); // 6.4 éå ³é®å·¥åºä¹éè¦æ£æ¥ MPS å®æç¶æï¼ææå·¥åºæ¥å·¥å®ææç®å®æï¼ checkAndPublishProductionFinished(feedback.getWorkOrderId()); // å ³é®å·¥åºï¼æ´æ°ä»»å¡ + å·¥åçå·²ç产æ°éï¼éå ³é®å·¥åºï¼åªæ´æ°ä»»å¡çå·²ç产æ°éï¼å·¥ååªçå ³é®å·¥åºäº§åºï¼ if (keyFlag) { updateTaskAndWorkOrderByFeedback(feedback); } else { taskService.updateProducedQuantity(feedback.getTaskId(), feedback.getFeedbackQuantity(), ObjectUtil.defaultIfNull(feedback.getQualifiedQuantity(), BigDecimal.ZERO), ObjectUtil.defaultIfNull(feedback.getUnqualifiedQuantity(), BigDecimal.ZERO)); checkAndPublishProductionFinished(feedback.getWorkOrderId()); } } return true; // 已宿 yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineService.java
@@ -2,6 +2,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; import java.util.List; @@ -21,12 +22,12 @@ void createItemConsumeLineBatch(List<MesWmItemConsumeLineDO> lines); /** * æ ¹æ®æ¥å·¥è®°å½ç¼å·å页æ¥è¯¢æ¶èè¡ * æ ¹æ®æ¥å·¥è®°å½ç¼å·å页æ¥è¯¢æ¶èè¡ï¼å ³èç©æ+åä½ä¿¡æ¯ï¼ * * @param pageReqVO å页æ¥è¯¢åæ°ï¼å« feedbackIdï¼ * @return æ¶èè¡å页 * @return æ¶èè¡å页ï¼å«ç©æç¼ç ãåç§°ãè§æ ¼ãåä½ï¼ */ PageResult<MesWmItemConsumeLineDO> getItemConsumeLinePage(MesWmItemConsumeLinePageReqVO pageReqVO); PageResult<MesWmItemConsumeLineRespVO> getItemConsumeLinePage(MesWmItemConsumeLinePageReqVO pageReqVO); /** * æ¥è¯¢æå®æ¶èè®°å½çææè¡ yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeLineServiceImpl.java
@@ -2,11 +2,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLinePageReqVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeDO; import cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO; import cn.iocoder.yudao.module.mes.dal.dataobject.wm.itemconsume.MesWmItemConsumeLineDO; import cn.iocoder.yudao.module.mes.dal.mysql.wm.itemconsume.MesWmItemConsumeLineMapper; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -24,24 +23,14 @@ @Resource private MesWmItemConsumeLineMapper itemConsumeLineMapper; @Resource @Lazy private MesWmItemConsumeService itemConsumeService; @Override public void createItemConsumeLineBatch(List<MesWmItemConsumeLineDO> lines) { itemConsumeLineMapper.insertBatch(lines); } @Override public PageResult<MesWmItemConsumeLineDO> getItemConsumeLinePage(MesWmItemConsumeLinePageReqVO pageReqVO) { // 1. å éè¿ feedbackId æ¾å°æ¶è头ï¼éè¿ Service è°ç¨ï¼ä¸ç´æ¥æ³¨å ¥ Mapperï¼ MesWmItemConsumeDO consume = itemConsumeService.getByFeedbackId(pageReqVO.getFeedbackId()); if (consume == null) { return PageResult.empty(); } // 2. å页æ¥è¯¢æ¶èè¡ return itemConsumeLineMapper.selectPage(pageReqVO, consume.getId()); public PageResult<MesWmItemConsumeLineRespVO> getItemConsumeLinePage(MesWmItemConsumeLinePageReqVO pageReqVO) { return itemConsumeLineMapper.selectPageByFeedbackId(pageReqVO); } @Override yudao-module-mes/src/main/resources/mapper/wm/itemconsume/MesWmItemConsumeLineMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,32 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.iocoder.yudao.module.mes.dal.mysql.wm.itemconsume.MesWmItemConsumeLineMapper"> <!-- ç©ææ¶èè¡å页æ¥è¯¢ï¼å ³è mdm_item + mdm_unit_measureï¼ éè¿ feedbackId å ³èæ¶è头ï¼åæ¥æ¶èè¡ --> <select id="selectPageByFeedbackId" resultType="cn.iocoder.yudao.module.mes.controller.admin.wm.itemconsume.vo.MesWmItemConsumeLineRespVO"> SELECT l.id, l.consume_id, l.item_id, l.quantity, l.batch_id, l.batch_code, l.remark, l.create_time, i.code AS itemCode, i.name AS itemName, i.specification AS specification, u.name AS unitName FROM mes_wm_item_consume_line l INNER JOIN mes_wm_item_consume c ON l.consume_id = c.id AND c.deleted = 0 LEFT JOIN mdm_item i ON l.item_id = i.id AND i.deleted = 0 LEFT JOIN mdm_unit_measure u ON i.unit_measure_id = u.id AND u.deleted = 0 WHERE l.deleted = 0 AND c.feedback_id = #{feedbackId} ORDER BY l.id DESC </select> </mapper>