3 天以前 ffb7c59cadfb8a043a41849fd6d093f7967ea4cb
src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -7,9 +7,16 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.mapper.PurchaseReturnOrderProductsMapper;
import com.ruoyi.purchase.mapper.PurchaseReturnOrdersMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.purchase.pojo.PurchaseReturnOrderProducts;
import com.ruoyi.purchase.pojo.PurchaseReturnOrders;
import com.ruoyi.production.mapper.ProductionOperationTaskMapper;
import com.ruoyi.production.mapper.ProductionOrderMapper;
import com.ruoyi.production.mapper.ProductionOrderRoutingMapper;
@@ -30,10 +37,12 @@
import com.ruoyi.stock.service.StockUninventoryService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import jakarta.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.HashMap;
@@ -54,6 +63,9 @@
    private final ProductionOperationTaskMapper productionOperationTaskMapper;
    private final StockUninventoryService stockUninventoryService;
    private final StockInRecordService stockInRecordService;
    private final PurchaseReturnOrdersMapper purchaseReturnOrdersMapper;
    private final PurchaseReturnOrderProductsMapper purchaseReturnOrderProductsMapper;
    private final PurchaseLedgerMapper purchaseLedgerMapper;
    @Override
    public IPage<QualityUnqualified> qualityUnqualifiedListPage(Page page, QualityUnqualified qualityUnqualified) {
@@ -68,6 +80,7 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int deal(QualityUnqualified qualityUnqualified) {
        QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
        QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
@@ -106,6 +119,9 @@
                case "让步放行":
                    stockUtils.addStock(modelId, unqualified.getQuantity(),
                            StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
                    break;
                case "拒收":
                    createRejectPurchaseReturn(qualityInspect, qualityUnqualified);
                    break;
                default:
                    break;
@@ -226,6 +242,34 @@
        return value == null ? BigDecimal.ZERO : value;
    }
    private void createRejectPurchaseReturn(QualityInspect qualityInspect, QualityUnqualified qualityUnqualified) {
        if (qualityInspect == null) {
            throw new ServiceException("手动新增的不合格记录不支持拒收处理,请选择报废或让步放行");
        }
        Long supplierId = null;
        Long purchaseLedgerId = qualityInspect.getPurchaseLedgerId();
        if (purchaseLedgerId != null) {
            PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(purchaseLedgerId);
            if (purchaseLedger != null) {
                supplierId = purchaseLedger.getSupplierId();
            }
        }
        PurchaseReturnOrders returnOrder = new PurchaseReturnOrders();
        returnOrder.setReturnType(1);
        returnOrder.setSupplierId(supplierId);
        returnOrder.setPurchaseLedgerId(purchaseLedgerId);
        returnOrder.setPreparedAt(LocalDate.now());
        returnOrder.setReturnUserName(qualityUnqualified.getDealName());
        returnOrder.setRemark("原料检验不合格-拒收");
        returnOrder.setNo(OrderUtils.countTodayByCreateTime(purchaseReturnOrdersMapper, "CGTL", "no", LocalDateTime.now()));
        purchaseReturnOrdersMapper.insert(returnOrder);
        PurchaseReturnOrderProducts product = new PurchaseReturnOrderProducts();
        product.setPurchaseReturnOrderId(returnOrder.getId());
        product.setReturnQuantity(qualityUnqualified.getQuantity());
        product.setStockInRecordId(0L);
        purchaseReturnOrderProductsMapper.insert(product);
    }
    private String resolveProductionBatchNo(Long productionProductMainId,
                                            Long qualityInspectId,
                                            Long productModelId) {