From bb1befa2a8abae3f75cc71b524c46a6d206cb46b Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 30 一月 2026 10:47:01 +0800
Subject: [PATCH] feat(production): 添加生产核算功能和相关接口
---
src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java | 150 +++++++++++++++++++++++++-------------------------
1 files changed, 75 insertions(+), 75 deletions(-)
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
index f2e615d..68c819c 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -7,7 +7,8 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockRecordTypeEnum;
+import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.utils.StockUtils;
@@ -17,14 +18,11 @@
import com.ruoyi.production.mapper.ProductionProductMainMapper;
import com.ruoyi.production.pojo.*;
import com.ruoyi.production.service.ProductOrderService;
-import com.ruoyi.quality.mapper.QualityInspectMapper;
import com.ruoyi.quality.mapper.QualityUnqualifiedMapper;
import com.ruoyi.quality.pojo.QualityInspect;
-import com.ruoyi.quality.pojo.QualityTestStandard;
import com.ruoyi.quality.pojo.QualityUnqualified;
import com.ruoyi.quality.service.IQualityInspectService;
import com.ruoyi.quality.service.IQualityUnqualifiedService;
-import com.ruoyi.stock.dto.StockUninventoryDto;
import com.ruoyi.stock.service.StockUninventoryService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@@ -65,82 +63,84 @@
public int deal(QualityUnqualified qualityUnqualified) {
QualityUnqualified unqualified = qualityUnqualifiedMapper.selectById(qualityUnqualified.getId());
QualityInspect qualityInspect = qualityInspectService.getById(unqualified.getInspectId());
- switch (qualityUnqualified.getDealResult()) {
- case "杩斾慨":
- case "杩斿伐":
- //鍒ゆ柇璐ㄦ琛ㄦ槸鍚︽湁鐩稿叧鐨勬姤宸d,濡傛灉鏈夋姤宸d,閭d箞杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
- if (ObjectUtils.isNotNull(qualityInspect.getProductMainId())) {
- //杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
- ProductOrder productOrder = productionProductMainMapper.getOrderByMainId(qualityInspect.getProductMainId());
- ProductOrder order = new ProductOrder();
- BeanUtils.copyProperties(productOrder, order);
- order.setId(null);
- order.setQuantity(unqualified.getQuantity());
- order.setCompleteQuantity(BigDecimal.ZERO);
- order.setStartTime(null);
- order.setEndTime(null);
- productOrderService.save(order);
- //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎涓昏〃
- ProductProcessRoute productProcessRoute = productProcessRouteMapper.selectList(Wrappers.<ProductProcessRoute>lambdaQuery().eq(ProductProcessRoute::getProductOrderId, productOrder.getId()).orderByDesc(ProductProcessRoute::getId)).get(0);
- ProductProcessRoute newProcessRoute = new ProductProcessRoute();
- BeanUtils.copyProperties(productProcessRoute, newProcessRoute);
- newProcessRoute.setId(null);
- newProcessRoute.setProductOrderId(order.getId());
- productProcessRouteMapper.insert(newProcessRoute);
- //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎瀛愯〃
- List<ProductProcessRouteItem> processRouteItems = productProcessRouteItemMapper.selectList(new QueryWrapper<ProductProcessRouteItem>().lambda().eq(ProductProcessRouteItem::getProductRouteId, productProcessRoute.getId()));
- // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
- String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
- for (ProductProcessRouteItem processRouteItem : processRouteItems) {
- ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
- BeanUtils.copyProperties(processRouteItem, productProcessRouteItem);
- productProcessRouteItem.setId(null);
- productProcessRouteItem.setProductRouteId(newProcessRoute.getId());
- int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
- if (insert > 0) {
- // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
- QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
- queryWrapper.likeRight("work_order_no", datePrefix)
- .orderByDesc("work_order_no")
- .last("LIMIT 1");
- ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
- int sequenceNumber = 1; // 榛樿搴忓彿
- if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
- String lastNo = lastWorkOrder.getWorkOrderNo().toString();
- if (lastNo.startsWith(datePrefix)) {
- String seqStr = lastNo.substring(datePrefix.length());
- try {
- sequenceNumber = Integer.parseInt(seqStr) + 1;
- } catch (NumberFormatException e) {
- sequenceNumber = 1;
+ if (ObjectUtils.isNotNull(qualityInspect) && qualityInspect.getInspectType()!=0) {
+ switch (qualityUnqualified.getDealResult()) {
+ case "杩斾慨":
+ case "杩斿伐":
+ //鍒ゆ柇璐ㄦ琛ㄦ槸鍚︽湁鐩稿叧鐨勬姤宸d,濡傛灉鏈夋姤宸d,閭d箞杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
+ if (ObjectUtils.isNotNull(qualityInspect.getProductMainId())) {
+ //杩斿伐闇�瑕侀噸鏂板垱寤虹敓浜ц鍗曢噸鏂扮敓浜�
+ ProductOrder productOrder = productionProductMainMapper.getOrderByMainId(qualityInspect.getProductMainId());
+ ProductOrder order = new ProductOrder();
+ BeanUtils.copyProperties(productOrder, order);
+ order.setId(null);
+ order.setQuantity(unqualified.getQuantity());
+ order.setCompleteQuantity(BigDecimal.ZERO);
+ order.setStartTime(null);
+ order.setEndTime(null);
+ productOrderService.save(order);
+ //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎涓昏〃
+ ProductProcessRoute productProcessRoute = productProcessRouteMapper.selectList(Wrappers.<ProductProcessRoute>lambdaQuery().eq(ProductProcessRoute::getProductOrderId, productOrder.getId()).orderByDesc(ProductProcessRoute::getId)).get(0);
+ ProductProcessRoute newProcessRoute = new ProductProcessRoute();
+ BeanUtils.copyProperties(productProcessRoute, newProcessRoute);
+ newProcessRoute.setId(null);
+ newProcessRoute.setProductOrderId(order.getId());
+ productProcessRouteMapper.insert(newProcessRoute);
+ //鏂板鐢熶骇璁㈠崟涓嬬殑宸ヨ壓璺嚎瀛愯〃
+ List<ProductProcessRouteItem> processRouteItems = productProcessRouteItemMapper.selectList(new QueryWrapper<ProductProcessRouteItem>().lambda().eq(ProductProcessRouteItem::getProductRouteId, productProcessRoute.getId()));
+ // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
+ String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+ for (ProductProcessRouteItem processRouteItem : processRouteItems) {
+ ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
+ BeanUtils.copyProperties(processRouteItem, productProcessRouteItem);
+ productProcessRouteItem.setId(null);
+ productProcessRouteItem.setProductRouteId(newProcessRoute.getId());
+ int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
+ if (insert > 0) {
+ // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
+ QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
+ queryWrapper.likeRight("work_order_no", datePrefix)
+ .orderByDesc("work_order_no")
+ .last("LIMIT 1");
+ ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
+ int sequenceNumber = 1; // 榛樿搴忓彿
+ if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
+ String lastNo = lastWorkOrder.getWorkOrderNo().toString();
+ if (lastNo.startsWith(datePrefix)) {
+ String seqStr = lastNo.substring(datePrefix.length());
+ try {
+ sequenceNumber = Integer.parseInt(seqStr) + 1;
+ } catch (NumberFormatException e) {
+ sequenceNumber = 1;
+ }
}
}
+ // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
+ String workOrderNoStr ="FG" +String.format("%s%03d", datePrefix, sequenceNumber);
+ ProductWorkOrder productWorkOrder = new ProductWorkOrder();
+ productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
+ productWorkOrder.setProductOrderId(order.getId());
+ productWorkOrder.setPlanQuantity(order.getQuantity());
+ productWorkOrder.setWorkOrderNo(workOrderNoStr);
+ productWorkOrder.setStatus(1);
+ productWorkOrderMapper.insert(productWorkOrder);
}
- // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
- String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
- ProductWorkOrder productWorkOrder = new ProductWorkOrder();
- productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
- productWorkOrder.setProductOrderId(order.getId());
- productWorkOrder.setPlanQuantity(order.getQuantity());
- productWorkOrder.setWorkOrderNo(workOrderNoStr);
- productWorkOrder.setStatus(1);
- productWorkOrderMapper.insert(productWorkOrder);
}
}
- }
- break;
- case "鎶ュ簾":
- //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
- stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockRecordTypeEnum.DEFECTIVE_SCRAP.getCode(),unqualified.getId());
- break;
- case "璁╂鏀捐":
- //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
- stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockRecordTypeEnum.DEFECTIVE_PASS.getCode(),unqualified.getId());
- qualityInspect.setCheckResult("鍚堟牸");
- qualityInspectService.submit(qualityInspect);
- break;
- default:
- break;
+ break;
+ case "鎶ュ簾":
+ //璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
+ stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ break;
+ case "璁╂鏀捐":
+ //璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
+ stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+ qualityInspect.setCheckResult("鍚堟牸");
+ qualityInspectService.submit(qualityInspect);
+ break;
+ default:
+ break;
+ }
}
qualityUnqualified.setInspectState(1);//宸插鐞�
return qualityUnqualifiedMapper.updateById(qualityUnqualified);
--
Gitblit v1.9.3