| | |
| | | import com.ruoyi.quality.pojo.QualityTestStandard; |
| | | import com.ruoyi.quality.pojo.QualityTestStandardParam; |
| | | import com.ruoyi.sales.pojo.SalesLedgerProduct; |
| | | import com.ruoyi.sales.pojo.ShippingInfo; |
| | | import com.ruoyi.sales.pojo.ShippingProductDetail; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | |
| | | QualityTestStandard firstStandard = qualityTestStandardList.get(0); |
| | | qualityInspect.setTestStandardId(firstStandard.getId()); |
| | | // 根据 inspectRule 设置默认抽检比例和抽检数量 |
| | | applyInspectRuleDefaults(qualityInspect, firstStandard, saleProduct.getQuantity()); |
| | | qualityInspectMapper.updateById(qualityInspect); |
| | | |
| | | List<QualityTestStandardParam> standardParams = qualityTestStandardParamMapper.selectList( |
| | |
| | | qualityInspectParamMapper.insert(param); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 根据 inspectRule 设置抽检比例和抽检数量默认值 |
| | | * - inspectRule=0 (全检): sampleRatio=100, sampleQuantity=全部数量 |
| | | * - inspectRule=1 (抽检): sampleRatio 取标准配置值, sampleQuantity=数量×比例/100 |
| | | */ |
| | | private void applyInspectRuleDefaults(QualityInspect inspect, QualityTestStandard standard, BigDecimal quantity) { |
| | | Integer rule = standard.getInspectRule(); |
| | | inspect.setInspectRule(rule); |
| | | |
| | | if (rule == null || rule == 0) { |
| | | // 全检 |
| | | inspect.setSampleRatio(BigDecimal.valueOf(100)); |
| | | inspect.setSampleQuantity(quantity != null ? quantity : BigDecimal.ZERO); |
| | | } else { |
| | | // 抽检 |
| | | BigDecimal ratio = standard.getSampleRatio(); |
| | | if (ratio == null) { |
| | | ratio = BigDecimal.ZERO; |
| | | } |
| | | inspect.setSampleRatio(ratio); |
| | | if (quantity != null && ratio.compareTo(BigDecimal.ZERO) > 0) { |
| | | BigDecimal sampleQty = quantity.multiply(ratio) |
| | | .divide(BigDecimal.valueOf(100), 4, BigDecimal.ROUND_HALF_UP) |
| | | .setScale(0, BigDecimal.ROUND_HALF_UP); |
| | | inspect.setSampleQuantity(sampleQty); |
| | | } else { |
| | | inspect.setSampleQuantity(BigDecimal.ZERO); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 创建出厂检验单(发货审批通过后自动生成) |
| | | * @param shippingInfo 发货信息 |
| | | * @param detail 发货产品明细 |
| | | * @param customerName 客户名称 |
| | | * @param salesLedgerId 销售台账ID |
| | | */ |
| | | public void addFactoryInspect(ShippingInfo shippingInfo, ShippingProductDetail detail, |
| | | String customerName, Long salesLedgerId) { |
| | | QualityInspect qualityInspect = new QualityInspect(); |
| | | qualityInspect.setInspectType(2); // 出厂检验 |
| | | qualityInspect.setCustomer(customerName); |
| | | qualityInspect.setSalesLedgerId(salesLedgerId); |
| | | qualityInspect.setShippingInfoId(shippingInfo.getId()); // 关联发货信息 |
| | | qualityInspect.setProductModelId(detail.getProductModelId()); |
| | | qualityInspect.setQuantity(detail.getQuantity()); |
| | | qualityInspect.setInspectState(0); // 未提交 |
| | | |
| | | // 通过 productModelId 查询产品信息 |
| | | if (detail.getProductModelId() != null) { |
| | | com.ruoyi.basic.pojo.ProductModel productModel = qualityInspectMapper.selectProductModelById(detail.getProductModelId()); |
| | | if (productModel != null) { |
| | | qualityInspect.setProductId(productModel.getProductId()); |
| | | qualityInspect.setModel(productModel.getModel()); |
| | | qualityInspect.setUnit(productModel.getUnit()); |
| | | // 查询产品名称 |
| | | if (productModel.getProductId() != null) { |
| | | com.ruoyi.basic.pojo.Product product = qualityInspectMapper.selectProductById(productModel.getProductId()); |
| | | if (product != null) { |
| | | qualityInspect.setProductName(product.getProductName()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | qualityInspectMapper.insert(qualityInspect); |
| | | |
| | | // 查询出厂检验标准,初始化检验参数 |
| | | if (qualityInspect.getProductId() != null) { |
| | | List<QualityTestStandard> qualityTestStandardList = qualityTestStandardMapper |
| | | .getQualityTestStandardByProductId(qualityInspect.getProductId(), 2, null); |
| | | |
| | | if (!qualityTestStandardList.isEmpty()) { |
| | | QualityTestStandard firstStandard = qualityTestStandardList.get(0); |
| | | qualityInspect.setTestStandardId(firstStandard.getId()); |
| | | applyInspectRuleDefaults(qualityInspect, firstStandard, detail.getQuantity()); |
| | | qualityInspectMapper.updateById(qualityInspect); |
| | | |
| | | List<QualityTestStandardParam> standardParams = qualityTestStandardParamMapper.selectList( |
| | | Wrappers.<QualityTestStandardParam>lambdaQuery() |
| | | .eq(QualityTestStandardParam::getTestStandardId, firstStandard.getId())); |
| | | |
| | | for (QualityTestStandardParam standardParam : standardParams) { |
| | | QualityInspectParam param = new QualityInspectParam(); |
| | | BeanUtils.copyProperties(standardParam, param); |
| | | param.setId(null); |
| | | param.setInspectId(qualityInspect.getId()); |
| | | qualityInspectParamMapper.insert(param); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |