| | |
| | | import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.supplier.ErpSupplierPageReqVO; |
| | | import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpSupplierDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * ERP ä¾åºå Mapper |
| | |
| | | return selectList(ErpSupplierDO::getStatus, status); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ä¾åºå被åªäºä¸å¡è¡¨å¼ç¨ï¼æªå é¤çè®°å½ï¼ |
| | | * |
| | | * @param supplierId ä¾åºåç¼å· |
| | | * @return å¼ç¨æ¥æºåè¡¨ï¼æ¯é¡¹å
å« source(æ¥æºå) å cnt(å¼ç¨æ°é)ï¼ä»
è¿å cnt > 0 ç |
| | | */ |
| | | List<Map<String, Object>> selectSupplierReferenceCount(@Param("supplierId") Long supplierId); |
| | | |
| | | } |
| | |
| | | // ========== ERP ä¾åºåï¼1-030-100-000ï¼ ========== |
| | | ErrorCode SUPPLIER_NOT_EXISTS = new ErrorCode(1_030_100_000, "ä¾åºåä¸åå¨"); |
| | | ErrorCode SUPPLIER_NOT_ENABLE = new ErrorCode(1_030_100_000, "ä¾åºå({})æªå¯ç¨"); |
| | | ErrorCode SUPPLIER_EXISTS_REFERENCE = new ErrorCode(1_030_100_001, "ä¾åºå已被ä¸å¡å¼ç¨ï¼æ æ³å é¤"); |
| | | |
| | | // ========== ERP éè´è®¢åï¼1-030-101-000ï¼ ========== |
| | | ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_030_101_000, "éè´è®¢åä¸åå¨"); |
| | |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.stream.Collectors; |
| | | |
| | | import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; |
| | | import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; |
| | |
| | | public void deleteSupplier(Long id) { |
| | | // æ ¡éªåå¨ |
| | | validateSupplierExists(id); |
| | | // æ ¡éªä¾åºåæ¯å¦è¢«ä¸å¡å¼ç¨ |
| | | validateSupplierNoReference(id); |
| | | // å é¤ |
| | | supplierMapper.deleteById(id); |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªä¾åºåæªè¢«ä¸å¡å¼ç¨ï¼éè´ãè´¨æ£ãç产ãåºåçï¼ |
| | | * |
| | | * @param id ä¾åºåç¼å· |
| | | */ |
| | | private void validateSupplierNoReference(Long id) { |
| | | List<Map<String, Object>> references = supplierMapper.selectSupplierReferenceCount(id); |
| | | if (CollUtil.isNotEmpty(references)) { |
| | | String refDesc = references.stream() |
| | | .map(r -> r.get("source") + "(" + r.get("cnt") + ")") |
| | | .collect(Collectors.joining("ã")); |
| | | throw exception(SUPPLIER_EXISTS_REFERENCE, refDesc); |
| | | } |
| | | } |
| | | |
| | | private void validateSupplierExists(Long id) { |
| | | if (supplierMapper.selectById(id) == null) { |
| | | throw exception(SUPPLIER_NOT_EXISTS); |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.erp.dal.mysql.purchase.ErpSupplierMapper"> |
| | | |
| | | <!-- |
| | | æ¥è¯¢ä¾åºå被åªäºä¸å¡è¡¨å¼ç¨ï¼æªå é¤çè®°å½ï¼ |
| | | ERP 模åç¨ supplier_idï¼MES 模åç¨ vendor_id |
| | | è¿åæå¼ç¨çæ¥æºååå¼ç¨æ°éï¼ç¨äºå 餿 ¡éª |
| | | --> |
| | | <select id="selectSupplierReferenceCount" resultType="map"> |
| | | SELECT source, cnt FROM ( |
| | | <!-- ERPï¼éè´è®¢å --> |
| | | SELECT 'éè´-éè´è®¢å' AS source, COUNT(*) AS cnt FROM erp_purchase_order WHERE supplier_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ERPï¼éè´ç³è¯· --> |
| | | SELECT 'éè´-éè´ç³è¯·' AS source, COUNT(*) AS cnt FROM erp_purchase_request WHERE supplier_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ERPï¼ä»æ¬¾å --> |
| | | SELECT 'éè´-仿¬¾å' AS source, COUNT(*) AS cnt FROM erp_finance_payment WHERE supplier_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- MESï¼å°è´§éç¥ --> |
| | | SELECT 'éè´-å°è´§éç¥' AS source, COUNT(*) AS cnt FROM mes_wm_arrival_notice WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- MESï¼éè´å
¥åº --> |
| | | SELECT 'éè´-éè´å
¥åº' AS source, COUNT(*) AS cnt FROM mes_wm_item_receipt WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- MESï¼å§å¤å
¥åº --> |
| | | SELECT 'éè´-å§å¤å
¥åº' AS source, COUNT(*) AS cnt FROM mes_wm_outsource_receipt WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- MESï¼å§å¤åæ --> |
| | | SELECT 'éè´-å§å¤åæ' AS source, COUNT(*) AS cnt FROM mes_wm_outsource_issue WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- MESï¼éè´éè´§ --> |
| | | SELECT 'éè´-éè´éè´§' AS source, COUNT(*) AS cnt FROM mes_wm_return_vendor WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- è´¨æ£ï¼IQC --> |
| | | SELECT 'è´¨æ£-IQC' AS source, COUNT(*) AS cnt FROM mes_qc_iqc WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ç产ï¼å·¥å --> |
| | | SELECT 'ç产-å·¥å' AS source, COUNT(*) AS cnt FROM mes_pro_work_order WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- åºåï¼åºå --> |
| | | SELECT 'åºå-åºå' AS source, COUNT(*) AS cnt FROM mes_wm_material_stock WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- åºåï¼æ¹æ¬¡ --> |
| | | SELECT 'åºå-æ¹æ¬¡' AS source, COUNT(*) AS cnt FROM mes_wm_batch WHERE vendor_id = #{supplierId} AND deleted = 0 |
| | | ) t |
| | | WHERE t.cnt > 0 |
| | | ORDER BY t.source |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | import cn.iocoder.yudao.module.mdm.controller.admin.item.vo.MdmItemPageReqVO; |
| | | import cn.iocoder.yudao.module.mdm.dal.dataobject.item.MdmItemDO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.Collection; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * MDM ç©æä¸»æ°æ® Mapper |
| | |
| | | return selectList(MdmItemDO::getId, ids); |
| | | } |
| | | |
| | | /** |
| | | * æ¥è¯¢ç©æè¢«åªäºä¸å¡è¡¨å¼ç¨ï¼æªå é¤çè®°å½ï¼ |
| | | * |
| | | * @param itemId ç©æç¼å· |
| | | * @return å¼ç¨æ¥æºåè¡¨ï¼æ¯é¡¹å
å« source(æ¥æºå) å cnt(å¼ç¨æ°é)ï¼ä»
è¿å cnt > 0 ç |
| | | */ |
| | | List<Map<String, Object>> selectItemReferenceCount(@Param("itemId") Long itemId); |
| | | |
| | | } |
| | |
| | | ErrorCode MDM_ITEM_SKU_NOT_EXISTS = new ErrorCode(1_050_004, "ç©æSKUä¸åå¨"); |
| | | ErrorCode MDM_ITEM_SKU_IS_DISABLE = new ErrorCode(1_050_005, "ç©æSKUå·²ç¦ç¨"); |
| | | ErrorCode MDM_ITEM_SKU_CODE_DUPLICATE = new ErrorCode(1_050_006, "SKUç¼ç å·²åå¨"); |
| | | ErrorCode MDM_ITEM_EXISTS_REFERENCE = new ErrorCode(1_050_007, "ç©æå·²è¢«ä¸å¡å¼ç¨ï¼æ æ³å é¤"); |
| | | |
| | | // ========== ç©æåç±»ç¸å
³ 1-050-051 ~ 1-050-100 ========== |
| | | ErrorCode MDM_ITEM_CATEGORY_NOT_EXISTS = new ErrorCode(1_050_051, "ç©æåç±»ä¸åå¨"); |
| | |
| | | public void deleteItem(Long id) { |
| | | // æ ¡éªåå¨ |
| | | MdmItemDO item = validateItemExists(id); |
| | | // è§£å³è½¯å é¤å¯ä¸é®å²çªï¼å¦æå·²åå¨ç¸å code ä¸å·²è½¯å é¤çè®°å½ï¼å
ç©çå é¤å® |
| | | // MdmItemDO existingDeleted = itemMapper.selectByCodeAndDeleted(item.getCode(), true); |
| | | // if (existingDeleted != null && !existingDeleted.getId().equals(id)) { |
| | | // itemMapper.physicalDeleteById(existingDeleted.getId()); |
| | | // } |
| | | // æ ¡éªç©ææ¯å¦è¢«ä¸å¡å¼ç¨ |
| | | validateItemNoReference(id); |
| | | // 软å é¤å½åè®°å½ |
| | | itemMapper.deleteById(id); |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªç©ææªè¢«ä¸å¡å¼ç¨ï¼éå®ãéè´ãç产ãè´¨æ£ãåºåçï¼ |
| | | * |
| | | * @param id ç©æç¼å· |
| | | */ |
| | | private void validateItemNoReference(Long id) { |
| | | List<Map<String, Object>> references = itemMapper.selectItemReferenceCount(id); |
| | | if (CollUtil.isNotEmpty(references)) { |
| | | String refDesc = references.stream() |
| | | .map(r -> r.get("source") + "(" + r.get("cnt") + ")") |
| | | .collect(Collectors.joining("ã")); |
| | | throw exception(MDM_ITEM_EXISTS_REFERENCE, refDesc); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void deleteItemList(Collection<Long> ids) { |
| ¶Ô±ÈÐÂÎļþ |
| | |
| | | <?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.mdm.dal.mysql.item.MdmItemMapper"> |
| | | |
| | | <!-- |
| | | æ¥è¯¢ç©æè¢«åªäºä¸å¡è¡¨å¼ç¨ï¼æªå é¤çè®°å½ï¼ |
| | | è¿åæå¼ç¨ç表ååå¼ç¨æ°éï¼ç¨äºå 餿 ¡éª |
| | | --> |
| | | <select id="selectItemReferenceCount" resultType="map"> |
| | | SELECT source, cnt FROM ( |
| | | <!-- ç产ï¼å·¥åBOM --> |
| | | SELECT 'ç产-å·¥åBOM' AS source, COUNT(*) AS cnt FROM mes_pro_work_order_bom WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- çäº§ï¼æ¥å·¥ --> |
| | | SELECT 'ç产-æ¥å·¥' AS source, COUNT(*) AS cnt FROM mes_pro_feedback WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ç产ï¼çäº§ä»»å¡ --> |
| | | SELECT 'ç产-ç产任å¡' AS source, COUNT(*) AS cnt FROM mes_pro_task WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ç产ï¼å·¥èºè·¯çº¿äº§å --> |
| | | SELECT 'ç产-å·¥èºè·¯çº¿' AS source, COUNT(*) AS cnt FROM mes_pro_route_product WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ç产ï¼å·¥èºè·¯çº¿BOM --> |
| | | SELECT 'ç产-å·¥èºè·¯çº¿BOM' AS source, COUNT(*) AS cnt FROM mes_pro_route_product_bom WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- è´¨æ£ï¼IQC --> |
| | | SELECT 'è´¨æ£-IQC' AS source, COUNT(*) AS cnt FROM mes_qc_iqc WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- è´¨æ£ï¼IPQC --> |
| | | SELECT 'è´¨æ£-IPQC' AS source, COUNT(*) AS cnt FROM mes_qc_ipqc WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- è´¨æ£ï¼OQC --> |
| | | SELECT 'è´¨æ£-OQC' AS source, COUNT(*) AS cnt FROM mes_qc_oqc WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- è´¨æ£ï¼RQC --> |
| | | SELECT 'è´¨æ£-RQC' AS source, COUNT(*) AS cnt FROM mes_qc_rqc WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- éè´ï¼å°è´§éç¥è¡ --> |
| | | SELECT 'éè´-å°è´§éç¥' AS source, COUNT(*) AS cnt FROM mes_wm_arrival_notice_line WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- éè´ï¼éè´å
¥åºè¡ --> |
| | | SELECT 'éè´-éè´å
¥åº' AS source, COUNT(*) AS cnt FROM mes_wm_item_receipt_line WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- éå®ï¼éå®éç¥è¡ --> |
| | | SELECT 'éå®-éå®éç¥' AS source, COUNT(*) AS cnt FROM mes_wm_sales_notice_line WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- éå®ï¼éå®åºåºè¡ --> |
| | | SELECT 'éå®-éå®åºåº' AS source, COUNT(*) AS cnt FROM mes_wm_product_sales_line WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- éå®ï¼éå®éè´§è¡ --> |
| | | SELECT 'éå®-éå®éè´§' AS source, COUNT(*) AS cnt FROM mes_wm_return_sales_line WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- åºåï¼åºåè®°å½ --> |
| | | SELECT 'åºå-åºå' AS source, COUNT(*) AS cnt FROM mes_wm_material_stock WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- CRMï¼é宿¥ä»·äº§å --> |
| | | SELECT 'éå®-æ¥ä»·å' AS source, COUNT(*) AS cnt FROM crm_sale_quotation_product WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- CRMï¼åæºäº§å --> |
| | | SELECT 'éå®-åæº' AS source, COUNT(*) AS cnt FROM crm_business_product WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- CRMï¼åå产å --> |
| | | SELECT 'éå®-åå' AS source, COUNT(*) AS cnt FROM crm_contract_product WHERE item_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ERPï¼éè´è®¢åæç»ï¼product_id å¼ç¨ç©æï¼ --> |
| | | SELECT 'éè´-éè´è®¢å' AS source, COUNT(*) AS cnt FROM erp_purchase_order_items WHERE product_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ERPï¼éè´ç³è¯·æç»ï¼product_id å¼ç¨ç©æï¼ --> |
| | | SELECT 'éè´-éè´ç³è¯·' AS source, COUNT(*) AS cnt FROM erp_purchase_request_items WHERE product_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ERPï¼éå®è®¢åæç»ï¼product_id å¼ç¨ç©æï¼ --> |
| | | SELECT 'éå®-éå®è®¢å' AS source, COUNT(*) AS cnt FROM erp_sale_order_items WHERE product_id = #{itemId} AND deleted = 0 |
| | | UNION ALL |
| | | <!-- ç产ï¼å·¥å产åï¼product_id å¼ç¨ç©æï¼ --> |
| | | SELECT 'ç产-ç产工å' AS source, COUNT(*) AS cnt FROM mes_pro_work_order WHERE product_id = #{itemId} AND deleted = 0 |
| | | ) t |
| | | WHERE t.cnt > 0 |
| | | ORDER BY t.source |
| | | </select> |
| | | |
| | | </mapper> |
| | |
| | | */ |
| | | private String purchaseOrderCode; |
| | | /** |
| | | * éè´è®¢åç¼å· |
| | | * |
| | | * å
³è ERP {@link cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO#getId()} |
| | | * ä»å°è´§éç¥å带å
¥ï¼ç¨äºå
¥åºå®ææ¶ååéè´è®¢åå
¥åºæ°é |
| | | */ |
| | | private Long purchaseOrderId; |
| | | /** |
| | | * ä¾åºåç¼å· |
| | | * |
| | | * å
³è ERP ä¾åºå {@link cn.iocoder.yudao.module.erp.api.purchase.dto.ErpSupplierRespDTO#getId()} |
| | |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.pro.MesProFeedbackStatusEnum; |
| | | import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants; |
| | | import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; |
| | | import cn.iocoder.yudao.module.mes.service.md.workstation.MesMdWorkstationService; |
| | |
| | | import cn.iocoder.yudao.module.mes.service.wm.productproduce.MesWmProductProduceLineService; |
| | | import cn.iocoder.yudao.module.system.api.user.AdminUserApi; |
| | | import jakarta.annotation.Resource; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.context.annotation.Lazy; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | */ |
| | | @Service |
| | | @Validated |
| | | @Slf4j |
| | | public class MesQcIpqcServiceImpl implements MesQcIpqcService { |
| | | |
| | | /** |
| | |
| | | * @param ipqc è¿ç¨æ£éªå |
| | | */ |
| | | private void writeBackSourceDoc(MesQcIpqcDO ipqc) { |
| | | if (ipqc.getSourceDocType() == null) { |
| | | return; |
| | | // 1. ç¡®å® sourceDocType/sourceDocId |
| | | Long sourceDocId = ipqc.getSourceDocId(); |
| | | Long sourceLineId = ipqc.getSourceLineId(); |
| | | |
| | | // 妿 IPQC åæ²¡æè®¾ç½®æ¥æºï¼å°è¯éè¿ taskId æ¥æ¾å
³èçå¾
æ£éªæ¥å·¥ |
| | | if (sourceDocId == null && ipqc.getTaskId() != null) { |
| | | MesProFeedbackDO feedback = feedbackService.getFeedbackListByTaskId(ipqc.getTaskId()).stream() |
| | | .filter(f -> MesProFeedbackStatusEnum.UNCHECK.getStatus().equals(f.getStatus())) |
| | | .findFirst().orElse(null); |
| | | if (feedback != null) { |
| | | sourceDocId = feedback.getId(); |
| | | log.info("[writeBackSourceDoc] IPQC({}) æªè®¾ç½®æ¥æºåæ®ï¼éè¿ taskId({}) æ¾å°å¾
æ£éªæ¥å·¥({})", |
| | | ipqc.getId(), ipqc.getTaskId(), feedback.getId()); |
| | | } |
| | | if (ipqc.getSourceDocId() == null) { |
| | | throw new IllegalArgumentException( |
| | | "IPQC å[" + ipqc.getId() + "] sourceDocType éç©ºä½ sourceDocId 为空"); |
| | | } |
| | | |
| | | if (Objects.equals(ipqc.getSourceDocType(), MesBizTypeConstants.PRO_FEEDBACK)) { |
| | | feedbackService.updateProFeedbackWhenIpqcFinish(ipqc.getSourceDocId(), ipqc.getSourceLineId(), |
| | | if (sourceDocId == null) { |
| | | log.warn("[writeBackSourceDoc] IPQC({}) æ æ³ç¡®å®æ¥æºæ¥å·¥ï¼è·³è¿åå", ipqc.getId()); |
| | | return; |
| | | } |
| | | |
| | | // 2. å忥工 |
| | | feedbackService.updateProFeedbackWhenIpqcFinish(sourceDocId, sourceLineId, |
| | | ObjectUtil.defaultIfNull(ipqc.getQualifiedQuantity(), BigDecimal.ZERO), |
| | | ObjectUtil.defaultIfNull(ipqc.getUnqualifiedQuantity(), BigDecimal.ZERO), |
| | | ObjectUtil.defaultIfNull(ipqc.getLaborScrapQuantity(), BigDecimal.ZERO), |
| | | ObjectUtil.defaultIfNull(ipqc.getMaterialScrapQuantity(), BigDecimal.ZERO), |
| | | ObjectUtil.defaultIfNull(ipqc.getOtherScrapQuantity(), BigDecimal.ZERO)); |
| | | } else { |
| | | throw new IllegalArgumentException( |
| | | "IPQC å[" + ipqc.getId() + "] sourceDocType=" + ipqc.getSourceDocType() + " æ æ³è¯å«ï¼æ æ³å忥æºåæ®"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | * åå ERP éè´è®¢åçå
¥åºæ°é |
| | | */ |
| | | private void updateErpPurchaseOrderInCount(MesWmItemReceiptDO receipt) { |
| | | // è·åå
¥åºåè¡ |
| | | List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(receipt.getId()); |
| | | if (CollUtil.isEmpty(lines)) { |
| | | return; |
| | | // 1. ç¡®å®éè´è®¢å IDï¼ä¼å
ä»å
¥åºå头åï¼ä»å°è´§éç¥å带å
¥ï¼ï¼å
¶æ¬¡ä»è¡åæ¥ |
| | | Long purchaseOrderId = receipt.getPurchaseOrderId(); |
| | | if (purchaseOrderId == null && receipt.getNoticeId() != null) { |
| | | // ä»å
³èçå°è´§éç¥åè·åéè´è®¢å ID |
| | | MesWmArrivalNoticeDO notice = arrivalNoticeService.getArrivalNotice(receipt.getNoticeId()); |
| | | if (notice != null) { |
| | | purchaseOrderId = notice.getPurchaseOrderId(); |
| | | } |
| | | // ç¨äºåå¨éè´è®¢å IDï¼é¿å
é夿´æ° |
| | | Long purchaseOrderId = null; |
| | | // éåè¡ï¼æ purchaseOrderItemId æ´æ°å
¥åºæ°é |
| | | } |
| | | |
| | | // 2. è·åå
¥åºåè¡ï¼æ purchaseOrderItemId æ´æ°å
¥åºæ°é |
| | | List<MesWmItemReceiptLineDO> lines = itemReceiptLineService.getItemReceiptLineListByReceiptId(receipt.getId()); |
| | | if (CollUtil.isNotEmpty(lines)) { |
| | | for (MesWmItemReceiptLineDO line : lines) { |
| | | if (line.getPurchaseOrderItemId() != null && line.getReceivedQuantity() != null) { |
| | | purchaseOrderApi.updateOrderItemInCount(line.getPurchaseOrderItemId(), line.getReceivedQuantity()); |
| | | // è·åéè´è®¢å IDï¼ä»ç¬¬ä¸ä¸ªææçæç»é¡¹è·åï¼ |
| | | // å¦æè¿æ²¡æ¿å° purchaseOrderIdï¼ä»æç»é¡¹åæ¥ |
| | | if (purchaseOrderId == null) { |
| | | cn.iocoder.yudao.module.erp.api.purchase.dto.ErpPurchaseOrderItemRespDTO itemDTO = |
| | | purchaseOrderApi.getPurchaseOrderItem(line.getPurchaseOrderItemId()).getCheckedData(); |
| | |
| | | } |
| | | } |
| | | } |
| | | // æ´æ°éè´è®¢åçå
¥åºç¶æ |
| | | } else if (receipt.getNoticeId() != null) { |
| | | // å
åºï¼å
¥åºè¡ä¸ºç©ºæ¶ï¼ä»å°è´§éç¥åè¡ååå
¥åºæ°é |
| | | List<MesWmArrivalNoticeLineDO> noticeLines = arrivalNoticeLineService |
| | | .getArrivalNoticeLineListByNoticeId(receipt.getNoticeId()); |
| | | for (MesWmArrivalNoticeLineDO noticeLine : noticeLines) { |
| | | if (noticeLine.getPurchaseOrderItemId() != null) { |
| | | // 使ç¨åæ ¼æ°éï¼æ IQC æ¶ä¸ºåæ ¼æ°éï¼å¦å为å°è´§æ°éï¼ |
| | | BigDecimal qty = noticeLine.getQualifiedQuantity() != null |
| | | ? noticeLine.getQualifiedQuantity() : noticeLine.getArrivalQuantity(); |
| | | if (qty != null && qty.compareTo(BigDecimal.ZERO) > 0) { |
| | | purchaseOrderApi.updateOrderItemInCount(noticeLine.getPurchaseOrderItemId(), qty); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 3. æ´æ°éè´è®¢åçå
¥åºç¶æ |
| | | if (purchaseOrderId != null) { |
| | | purchaseOrderApi.updateOrderInStatus(purchaseOrderId); |
| | | } |
| | |
| | | receipt.setCode(code); |
| | | receipt.setName(notice.getName() + "å
¥åºå"); |
| | | receipt.setNoticeId(arrivalNoticeId); |
| | | receipt.setPurchaseOrderId(notice.getPurchaseOrderId()); |
| | | receipt.setPurchaseOrderCode(notice.getPurchaseOrderCode()); |
| | | receipt.setVendorId(notice.getVendorId()); |
| | | receipt.setReceiptDate(java.time.LocalDateTime.now()); // å
¥åºæ¶é´ä¸ºå½åæ¶é´ |