From c3a981e80973ac52b5988aca62b87409976c6fb1 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 18 六月 2026 13:09:28 +0800
Subject: [PATCH] 1.计量器具台账上传附件报错 2.质量拉的数据不对(未明确) 3.计量器具台账逾期的做标红提醒 4.设备保养定时任务和记录要加上具体的保养内容 5.质量要区分质检规则抽检还是全检,抽检的话是抽多少百分比 6.供应商管理东西太少了,没有资质文件啊这些东西(是不是可以参考pro) 7.采购审批把人从李莹莹改成龙红星
---
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 73 ++++++++++++++++++++++++++++++------
1 files changed, 61 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
index 808e75d..00a340e 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -12,7 +12,6 @@
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.bean.BeanUtils;
@@ -27,6 +26,8 @@
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.quality.mapper.*;
import com.ruoyi.quality.pojo.*;
+import com.ruoyi.stock.pojo.StockInRecord;
+import com.ruoyi.stock.service.StockInRecordService;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.service.StockInventoryService;
import com.ruoyi.technology.mapper.TechnologyOperationMapper;
@@ -78,6 +79,7 @@
private final TechnologyRoutingOperationMapper technologyRoutingOperationMapper;
private final TechnologyOperationMapper technologyOperationMapper;
private final StockUtils stockUtils;
+ private final StockInRecordService stockInRecordService;
private final StockInventoryService stockInventoryService;
@Override
@@ -292,7 +294,6 @@
// 褰撳墠瀹炵幇鎸夊伐搴忔垚鍝佺洿鎺ヤ綔涓烘姇鍏ワ紝鍚庣画鑻ユ帴鍏ラ鏂欒褰曞彲鍦ㄨ繖閲屾浛鎹㈡潵婧愩��
ProductionProductInput productionProductInput = new ProductionProductInput();
productionProductInput.setProductionProductMainId(productionProductMain.getId());
- productionProductInput.setProductMainId(productionProductMain.getId());
productionProductInput.setProductModelId(item.getProductModelId());
productionProductInput.setInputQuantity(item.getUnitQuantity().multiply(defaultDecimal(dto.getQuantity())));
productionProductInput.setQuantity(productionProductInput.getInputQuantity());
@@ -301,13 +302,14 @@
ProductionProductOutput productionProductOutput = new ProductionProductOutput();
productionProductOutput.setProductionProductMainId(productionProductMain.getId());
- productionProductOutput.setProductMainId(productionProductMain.getId());
productionProductOutput.setProductModelId(productModel.getId());
productionProductOutput.setQuantity(defaultDecimal(dto.getQuantity()));
productionProductOutput.setScrapQty(defaultDecimal(dto.getScrapQty()));
productionProductOutputMapper.insert(productionProductOutput);
BigDecimal reportQty = defaultDecimal(productionProductOutput.getQuantity());
+ BigDecimal scrapQty = defaultDecimal(productionProductOutput.getScrapQty());
BigDecimal productQty = reportQty;
+ String qualifiedBatchNo = null;
List<ProductionOrderRoutingOperation> routingOperationList = productionOrderRoutingOperationMapper.selectList(
Wrappers.<ProductionOrderRoutingOperation>lambdaQuery()
@@ -334,7 +336,25 @@
qualityInspectMapper.insert(qualityInspect);
List<QualityTestStandard> qualityTestStandard = qualityTestStandardMapper.getQualityTestStandardByProductId(product.getId(), inspectType, process);
if (!qualityTestStandard.isEmpty()) {
- qualityInspect.setTestStandardId(qualityTestStandard.get(0).getId());
+ QualityTestStandard std = qualityTestStandard.get(0);
+ qualityInspect.setTestStandardId(std.getId());
+ qualityInspect.setInspectRule(std.getInspectRule());
+ // 鏍规嵁 inspectRule 璁剧疆鎶芥姣斾緥鍜屾娊妫�鏁伴噺榛樿鍊�
+ if (std.getInspectRule() == null || std.getInspectRule() == 0) {
+ // 鍏ㄦ: sampleRatio=100, sampleQuantity=鍏ㄩ儴鏁伴噺
+ qualityInspect.setSampleRatio(java.math.BigDecimal.valueOf(100));
+ qualityInspect.setSampleQuantity(productQty != null ? productQty : java.math.BigDecimal.ZERO);
+ } else {
+ // 鎶芥: sampleRatio 鍙栨爣鍑嗛厤缃��
+ java.math.BigDecimal ratio = std.getSampleRatio() != null ? std.getSampleRatio() : java.math.BigDecimal.ZERO;
+ qualityInspect.setSampleRatio(ratio);
+ if (productQty != null && ratio.compareTo(java.math.BigDecimal.ZERO) > 0) {
+ qualityInspect.setSampleQuantity(productQty.multiply(ratio)
+ .divide(java.math.BigDecimal.valueOf(100), 0, java.math.RoundingMode.CEILING));
+ } else {
+ qualityInspect.setSampleQuantity(java.math.BigDecimal.ZERO);
+ }
+ }
qualityInspectMapper.updateById(qualityInspect);
qualityTestStandardParamMapper.selectList(Wrappers.<QualityTestStandardParam>lambdaQuery()
.eq(QualityTestStandardParam::getTestStandardId, qualityTestStandard.get(0).getId()))
@@ -353,6 +373,11 @@
stockInventoryDto.setQualitity(productQty);
stockInventoryDto.setProductModelId(productModel.getId());
stockInventoryService.addStockInRecordOnly(stockInventoryDto);
+ qualifiedBatchNo = resolveLatestStockInBatchNo(
+ productionProductMain.getId(),
+ StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(),
+ productModel.getId(),
+ "0");
}
productionOperationTask.setCompleteQuantity(defaultDecimal(productionOperationTask.getCompleteQuantity()).add(productQty));
@@ -391,21 +416,45 @@
}
ProductionAccount productionAccount = new ProductionAccount();
productionAccount.setProductionProductMainId(productionProductMain.getId());
-// productionAccount.setSalesLedgerId(productionOrder.getSalesLedgerId());
-// productionAccount.setSalesLedgerProductId(productionOrder.getSalesLedgerProductId() == null ? null : productionOrder.getSalesLedgerProductId().longValue());
productionAccount.setSchedulingUserId(user == null ? null : user.getUserId());
productionAccount.setSchedulingUserName(user == null ? dto.getUserName() : user.getNickName());
productionAccount.setFinishedNum(productQty);
- productionAccount.setWorkHours(workHours);
+ productionAccount.setWorkHours(technologyOperation != null ? technologyOperation.getSalaryQuota() : null);
productionAccount.setTechnologyOperationName(technologyOperation == null ? null : technologyOperation.getName());
productionAccount.setSchedulingDate(LocalDateTime.now());
productionAccountMapper.insert(productionAccount);
}
-// if (defaultDecimal(dto.getScrapQty()).compareTo(BigDecimal.ZERO) > 0) {
-// stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(),
-// StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
-// }
+ if (scrapQty.compareTo(BigDecimal.ZERO) > 0) {
+ stockUtils.addUnStockWithBatchNo(
+ productModel.getId(),
+ scrapQty,
+ StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(),
+ productionProductMain.getId(),
+ qualifiedBatchNo);
+ }
return true;
+ }
+
+ private String resolveLatestStockInBatchNo(Long recordId,
+ String recordType,
+ Long productModelId,
+ String stockType) {
+ if (recordId == null || productModelId == null) {
+ return null;
+ }
+ StockInRecord stockInRecord = stockInRecordService.getOne(
+ Wrappers.<StockInRecord>lambdaQuery()
+ .eq(StockInRecord::getRecordId, recordId)
+ .eq(StockInRecord::getRecordType, recordType)
+ .eq(StockInRecord::getProductModelId, productModelId)
+ .eq(StockInRecord::getType, stockType)
+ .orderByDesc(StockInRecord::getId)
+ .last("limit 1"),
+ false);
+ if (stockInRecord == null) {
+ throw new ServiceException("鏈壘鍒板搴旂殑鍏ュ簱鐢宠璁板綍");
+ }
+ return stockInRecord.getBatchNo();
}
private void syncOperationParamInputValue(ProductionProductMainDto dto,
@@ -605,7 +654,7 @@
productionOrderRoutingOperationParamMapper.delete(
Wrappers.<ProductionOrderRoutingOperationParam>lambdaQuery()
.eq(ProductionOrderRoutingOperationParam::getProductionProductMainId, productionProductMain.getId()));
- stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+ stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode());
stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
productionProductMainMapper.deleteById(productionProductMain.getId());
--
Gitblit v1.9.3