From 69bb4a6479653f2e27cb67ce0ab817bd40e9c791 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 04 二月 2026 17:38:27 +0800
Subject: [PATCH] Merge remote-tracking branch 'refs/remotes/origin/dev_New' into jtwy
---
src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java | 5
src/main/resources/mapper/production/ProductWorkOrderMapper.xml | 8
src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java | 7
src/main/java/com/ruoyi/production/pojo/ProductionProductInput.java | 1
src/main/java/com/ruoyi/home/controller/HomeController.java | 194 +++---
src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java | 20
src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml | 2
src/main/resources/mapper/sales/ReceiptPaymentMapper.xml | 13
src/main/java/com/ruoyi/production/service/ProductOrderService.java | 4
src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java | 18
src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml | 3
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | 2
src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java | 8
src/main/resources/application-zxsq.yml | 245 ++++++++
src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java | 11
src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java | 2
src/main/java/com/ruoyi/production/service/ProductionProductMainService.java | 5
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 31
src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java | 6
src/main/resources/mapper/production/ProductOrderMapper.xml | 10
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 35
src/main/java/com/ruoyi/basic/controller/EnumController.java | 6
src/main/java/com/ruoyi/common/enums/StockOutQualifiedRecordTypeEnum.java | 21
src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java | 5
src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java | 25
src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java | 367 ++++++------
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 171 +++++
src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java | 3
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 69 +
src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java | 8
src/main/java/com/ruoyi/common/enums/StockInUnQualifiedRecordTypeEnum.java | 7
src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java | 3
src/main/java/com/ruoyi/quality/pojo/QualityInspect.java | 5
src/main/java/com/ruoyi/stock/controller/StockInventoryController.java | 7
src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java | 14
src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java | 18
src/main/resources/mapper/quality/QualityInspectMapper.xml | 39 +
src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java | 7
/dev/null | 26
src/main/java/com/ruoyi/quality/controller/QualityInspectController.java | 9
src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java | 15
src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java | 185 +++---
src/main/java/com/ruoyi/production/controller/ProductOrderController.java | 11
src/main/resources/mapper/production/ProductionProductMainMapper.xml | 16
src/main/java/com/ruoyi/common/enums/StockOutUnQualifiedRecordTypeEnum.java | 21
src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml | 3
46 files changed, 1,096 insertions(+), 595 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
index 9acc594..dd7618a 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/ApproveNodeServiceImpl.java
@@ -11,9 +11,9 @@
import com.ruoyi.approve.pojo.ApproveNode;
import com.ruoyi.approve.pojo.ApproveProcess;
import com.ruoyi.approve.service.IApproveNodeService;
-import com.ruoyi.approve.vo.ApproveProcessVO;
import com.ruoyi.common.enums.FileNameType;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.device.mapper.DeviceRepairMapper;
import com.ruoyi.device.pojo.DeviceRepair;
@@ -31,7 +31,6 @@
import com.ruoyi.sales.pojo.SalesQuotation;
import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.impl.CommonFileServiceImpl;
-import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -206,7 +205,7 @@
purchaseLedgerServiceImpl.addQualityInspect(purchaseLedger, salesLedgerProduct);
}else {
//鐩存帴鍏ュ簱
- stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
+ stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockInQualifiedRecordTypeEnum.PURCHASE_STOCK_IN.getCode(), purchaseLedger.getId());
}
}
} else if (status.equals(3)) {
diff --git a/src/main/java/com/ruoyi/basic/controller/EnumController.java b/src/main/java/com/ruoyi/basic/controller/EnumController.java
index b02326a..235eb26 100644
--- a/src/main/java/com/ruoyi/basic/controller/EnumController.java
+++ b/src/main/java/com/ruoyi/basic/controller/EnumController.java
@@ -1,7 +1,7 @@
package com.ruoyi.basic.controller;
import com.ruoyi.basic.utils.EnumUtils;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
import com.ruoyi.framework.web.domain.R;
@@ -24,13 +24,13 @@
@GetMapping("/stockRecordType")
@Anonymous
public R getStockRecordTypeEnum(){
- List<Map<String, Object>> list = EnumUtil.toList(StockQualifiedRecordTypeEnum.class);
+ List<Map<String, Object>> list = EnumUtil.toList(StockOutQualifiedRecordTypeEnum.class);
return R.ok(list);
}
@GetMapping("/{className}")
@Anonymous
- public R test(@PathVariable String className){
+ public R stockRecordTypeByClassName(@PathVariable("className") String className){
return R.ok(EnumUtils.getOptions("com.ruoyi.common.enums." + className));
}
}
diff --git a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
index 8bf7123..e5c05ed 100644
--- a/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
+++ b/src/main/java/com/ruoyi/collaborativeApproval/service/impl/MeetingServiceImpl.java
@@ -25,6 +25,7 @@
import com.ruoyi.collaborativeApproval.vo.SearchMeetingDraftVo;
import com.ruoyi.collaborativeApproval.vo.SearchMeetingRoomVo;
import com.ruoyi.collaborativeApproval.vo.SearchMeetingUseVo;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.project.system.domain.SysUser;
@@ -34,7 +35,9 @@
import com.ruoyi.staff.pojo.StaffOnJob;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;
@@ -83,7 +86,22 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void deleteMeetingRoom(Long id) {
+ if (id == null){
+ throw new ServiceException("鍒犻櫎浼氳瀹ゅけ璐�,浼氳瀹D涓嶈兘涓虹┖");
+ }
+
+ LocalDateTime now = LocalDateTime.now();
+ List<MeetApplication> meetApplicationList = meetApplicationMapper.selectList(Wrappers.<MeetApplication>lambdaQuery()
+ .eq(MeetApplication::getRoomId, id)
+ .gt(MeetApplication::getEndTime, now)
+ .in(MeetApplication::getStatus, Arrays.asList(0, 1)));
+
+ if (!meetApplicationList.isEmpty()){
+ throw new ServiceException("鍒犻櫎浼氳瀹ゅけ璐�,璇ヤ細璁灏氭湁鏈紑濮嬫垨杩涜涓殑鏈夋晥浼氳棰勭害");
+ }
+
meetingRoomMapper.deleteById(id);
}
diff --git a/src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java b/src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
new file mode 100644
index 0000000..102bcc4
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/enums/StockInQualifiedRecordTypeEnum.java
@@ -0,0 +1,25 @@
+package com.ruoyi.common.enums;
+
+import lombok.Getter;
+
+
+@Getter
+public enum StockInQualifiedRecordTypeEnum implements BaseEnum<String> {
+
+
+ CUSTOMIZATION_STOCK_IN("0", "鍚堟牸鑷畾涔夊叆搴�"),
+ PRODUCTION_REPORT_STOCK_IN("2", "鐢熶骇鎶ュ伐-鍏ュ簱"),
+ PURCHASE_STOCK_IN("7", "閲囪喘-鍏ュ簱"),
+ QUALITYINSPECT_STOCK_IN("11", "璐ㄦ-鍚堟牸鍏ュ簱"),
+ DEFECTIVE_PASS("11", "涓嶅悎鏍�-璁╂鏀捐");
+
+
+ private final String code;
+ private final String value;
+
+ StockInQualifiedRecordTypeEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/common/enums/StockUnQualifiedRecordTypeEnum.java b/src/main/java/com/ruoyi/common/enums/StockInUnQualifiedRecordTypeEnum.java
similarity index 60%
rename from src/main/java/com/ruoyi/common/enums/StockUnQualifiedRecordTypeEnum.java
rename to src/main/java/com/ruoyi/common/enums/StockInUnQualifiedRecordTypeEnum.java
index 8a39c56..ab6b041 100644
--- a/src/main/java/com/ruoyi/common/enums/StockUnQualifiedRecordTypeEnum.java
+++ b/src/main/java/com/ruoyi/common/enums/StockInUnQualifiedRecordTypeEnum.java
@@ -4,20 +4,19 @@
@Getter
-public enum StockUnQualifiedRecordTypeEnum implements BaseEnum<String> {
+public enum StockInUnQualifiedRecordTypeEnum implements BaseEnum<String> {
- PRODUCTION_SCRAP("4", "鐢熶骇鎶ュ伐-鎶ュ簾"),
DEFECTIVE_SCRAP("5", "涓嶅悎鏍煎鐞�-鎶ュ簾"),
+ PRODUCTION_SCRAP("5", "鐢熶骇鎶ュ伐-鎶ュ簾"),
CUSTOMIZATION_UNSTOCK_IN("9", "涓嶅悎鏍艰嚜瀹氫箟鍏ュ簱"),
- CUSTOMIZATION_UNSTOCK_OUT("10", "涓嶅悎鏍艰嚜瀹氫箟鍑哄簱"),
QUALITYINSPECT_UNSTOCK_IN("12", "璐ㄦ-涓嶅悎鏍煎叆搴�");
private final String code;
private final String value;
- StockUnQualifiedRecordTypeEnum(String code, String value) {
+ StockInUnQualifiedRecordTypeEnum(String code, String value) {
this.code = code;
this.value = value;
}
diff --git a/src/main/java/com/ruoyi/common/enums/StockOutQualifiedRecordTypeEnum.java b/src/main/java/com/ruoyi/common/enums/StockOutQualifiedRecordTypeEnum.java
new file mode 100644
index 0000000..37ee471
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/enums/StockOutQualifiedRecordTypeEnum.java
@@ -0,0 +1,21 @@
+package com.ruoyi.common.enums;
+
+import lombok.Getter;
+
+
+@Getter
+public enum StockOutQualifiedRecordTypeEnum implements BaseEnum<String> {
+ CUSTOMIZATION_STOCK_OUT("1", "鍚堟牸鑷畾涔夊嚭搴�"),
+ PRODUCTION_REPORT_STOCK_OUT("3", "鐢熶骇鎶ュ伐-鍑哄簱"),
+ SALE_STOCK_OUT("8", "閿�鍞�-鍑哄簱"),
+ SALE_SHIP_STOCK_OUT("13", "閿�鍞�-鍙戣揣鍑哄簱");
+
+ private final String code;
+ private final String value;
+
+ StockOutQualifiedRecordTypeEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ }
diff --git a/src/main/java/com/ruoyi/common/enums/StockOutUnQualifiedRecordTypeEnum.java b/src/main/java/com/ruoyi/common/enums/StockOutUnQualifiedRecordTypeEnum.java
new file mode 100644
index 0000000..2ee40bd
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/enums/StockOutUnQualifiedRecordTypeEnum.java
@@ -0,0 +1,21 @@
+package com.ruoyi.common.enums;
+
+import lombok.Getter;
+
+
+@Getter
+public enum StockOutUnQualifiedRecordTypeEnum implements BaseEnum<String> {
+
+
+ CUSTOMIZATION_UNSTOCK_OUT("10", "涓嶅悎鏍艰嚜瀹氫箟鍑哄簱");
+
+
+ private final String code;
+ private final String value;
+
+ StockOutUnQualifiedRecordTypeEnum(String code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/common/enums/StockQualifiedRecordTypeEnum.java b/src/main/java/com/ruoyi/common/enums/StockQualifiedRecordTypeEnum.java
deleted file mode 100644
index 50ef0c7..0000000
--- a/src/main/java/com/ruoyi/common/enums/StockQualifiedRecordTypeEnum.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.ruoyi.common.enums;
-
-import lombok.Getter;
-
-
-@Getter
-public enum StockQualifiedRecordTypeEnum implements BaseEnum<String> {
- CUSTOMIZATION_STOCK_IN("0", "鍚堟牸鑷畾涔夊叆搴�"),
- CUSTOMIZATION_STOCK_OUT("1", "鍚堟牸鑷畾涔夊嚭搴�"),
- PRODUCTION_REPORT_STOCK_IN("2", "鐢熶骇鎶ュ伐-鍏ュ簱"),
- PRODUCTION_REPORT_STOCK_OUT("3", "鐢熶骇鎶ュ伐-鍑哄簱"),
- DEFECTIVE_PASS("6", "涓嶅悎鏍煎鐞�-璁╂鏀捐"),
- PURCHASE_STOCK_IN("7", "閲囪喘-鍏ュ簱"),
- SALE_STOCK_OUT("8", "閿�鍞�-鍑哄簱"),
- QUALITYINSPECT_STOCK_IN("11", "璐ㄦ-鍚堟牸鍏ュ簱"),
- SALE_SHIP_STOCK_OUT("13", "閿�鍞�-鍙戣揣鍑哄簱");
-
- private final String code;
- private final String value;
-
- StockQualifiedRecordTypeEnum(String code, String value) {
- this.code = code;
- this.value = value;
- }
-
- }
diff --git a/src/main/java/com/ruoyi/home/controller/HomeController.java b/src/main/java/com/ruoyi/home/controller/HomeController.java
index 7cf3f95..54fde04 100644
--- a/src/main/java/com/ruoyi/home/controller/HomeController.java
+++ b/src/main/java/com/ruoyi/home/controller/HomeController.java
@@ -69,6 +69,7 @@
return AjaxResult.success(homeSummaryDto);
}
+ /********************************************************钀ラ攢閲囪喘绫�**************************************************/
@GetMapping("/supplierPurchaseRanking")
@ApiOperation("渚涘簲鍟嗛噰璐帓鍚�")
public AjaxResult supplierPurchaseRanking(@RequestParam(value = "type", defaultValue = "1") Integer type) {
@@ -80,13 +81,6 @@
@ApiOperation("瀹㈡埛钀ユ敹璐$尞鏁板�煎垎鏋�")
public AjaxResult customerRevenueAnalysis(@RequestParam("customerId") Long customerId, @RequestParam(value = "type", defaultValue = "1") Integer type) {
CustomerRevenueAnalysisDto dto = homeService.customerRevenueAnalysis(customerId, type);
- return AjaxResult.success(dto);
- }
-
- @GetMapping("/productCategoryDistribution")
- @ApiOperation("浜у搧澶х被鍒嗗竷")
- public AjaxResult productCategoryDistribution() {
- ProductCategoryDistributionDto dto = homeService.productCategoryDistribution();
return AjaxResult.success(dto);
}
@@ -111,63 +105,23 @@
return AjaxResult.success(list);
}
- @GetMapping("/salesPurchaseStorageProductCount")
- @ApiOperation("閿�鍞�-閲囪喘-鍌ㄥ瓨浜у搧鏁�")
- public AjaxResult salesPurchaseStorageProductCount(){
- List<MapDto> list = homeService.salesPurchaseStorageProductCount();
- return AjaxResult.success(list);
+ @GetMapping("/business")
+ @Log(title = "閿�鍞�-閲囪喘-搴撳瓨鏁版嵁", businessType = BusinessType.OTHER)
+ @ApiOperation("閿�鍞�-閲囪喘-搴撳瓨鏁版嵁")
+ public AjaxResult business(HomeBusinessDto req) {
+ HomeBusinessDto homeBusinessDto = homeService.business();
+ return AjaxResult.success(homeBusinessDto);
}
- @GetMapping("/productInOutAnalysis")
- @ApiOperation("浜у搧鍑哄叆搴撳垎鏋�")
- public AjaxResult productInOutAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type){
- List<Map<String, Object>> result = homeService.productInOutAnalysis(type);
- return AjaxResult.success(result);
+ @GetMapping("/analysisCustomerContractAmounts")
+ @Log(title = "瀹㈡埛鍚堝悓閲戦鍒嗘瀽", businessType = BusinessType.OTHER)
+ @ApiOperation("瀹㈡埛鍚堝悓閲戦鍒嗘瀽")
+ public AjaxResult analysisCustomerContractAmounts(AnalysisCustomerContractAmountsDto req) {
+ AnalysisCustomerContractAmountsDto analysisCustomerContractAmounts = homeService.analysisCustomerContractAmounts();
+ return AjaxResult.success(analysisCustomerContractAmounts);
}
- @GetMapping("/productTurnoverDays")
- @ApiOperation("浜у搧鍛ㄨ浆澶╂暟")
- public AjaxResult productTurnoverDays(){
- List<MapDto> list = homeService.productTurnoverDays();
- return AjaxResult.success(list);
- }
-
- @GetMapping("/incomeExpenseAnalysis")
- @ApiOperation("鏀敹瀵规瘮鍒嗘瀽")
- public AjaxResult incomeExpenseAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type) {
- List<Map<String, Object>> result = homeService.incomeExpenseAnalysis(type);
- return AjaxResult.success(result);
- }
-
- @GetMapping("/profitTrendAnalysis")
- @ApiOperation("鍒╂鼎瓒嬪娍鍒嗘瀽")
- public AjaxResult profitTrendAnalysis(){
- List<MapDto> list = homeService.profitTrendAnalysis();
- return AjaxResult.success(list);
- }
-
- @GetMapping("/expenseCompositionAnalysis")
- @ApiOperation("鏋勬垚鍒嗘瀽")
- public AjaxResult expenseCompositionAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type) {
- List<MapDto> list = homeService.expenseCompositionAnalysis(type);
- return AjaxResult.success(list);
- }
-
- @GetMapping("/monthlyIncome")
- @ApiOperation("鏈堝害鏀跺叆")
- public AjaxResult monthlyIncome(){
- MonthlyIncomeDto dto = homeService.monthlyIncome();
- return AjaxResult.success(dto);
- }
-
- @GetMapping("/monthlyExpenditure")
- @ApiOperation("鏈堝害鏀嚭")
- public AjaxResult monthlyExpenditure(){
- MonthlyExpenditureDto dto = homeService.monthlyExpenditure();
- return AjaxResult.success(dto);
- }
-
-
+ /********************************************************鐢熶骇绫�*****************************************************/
@GetMapping("/inputOutputAnalysis")
@ApiOperation("鎶曞叆浜у嚭鍒嗘瀽")
public AjaxResult inputOutputAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type){
@@ -176,7 +130,7 @@
}
@GetMapping("/processOutputAnalysis")
- @ApiOperation("宸ュ簭浜у嚭鍒嗘瀽")
+ @ApiOperation("宸ュ簭浜у嚭鍒嗘瀽")
public AjaxResult processOutputAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type){
List<MapDto> list = homeService.processOutputAnalysis(type);
return AjaxResult.success(list);
@@ -202,6 +156,21 @@
return AjaxResult.success(homeService.orderCount());
}
+ @GetMapping("/progressStatistics")
+ @ApiOperation("鍚勭敓浜ц鍗曠殑瀹屾垚杩涘害缁熻")
+ public AjaxResult progressStatistics(){
+ ProductionProgressDto productionProgressDto = homeService.productionProgress();
+ return AjaxResult.success(productionProgressDto);
+ }
+
+ @GetMapping("/workInProcessTurnover")
+ @ApiOperation("鍦ㄥ埗鍝佸懆杞儏鍐�")
+ public AjaxResult workInProcessTurnover(){
+ ProductionTurnoverDto productionTurnoverDto = homeService.workInProcessTurnover();
+ return AjaxResult.success(productionTurnoverDto);
+ }
+
+ /********************************************************璐ㄩ噺绫�*****************************************************/
@GetMapping("/rawMaterialDetection")
@ApiOperation("鍘熸潗鏂欐娴�")
public AjaxResult rawMaterialDetection(@RequestParam(value = "type", defaultValue = "1") Integer type){
@@ -255,42 +224,6 @@
return AjaxResult.success(list);
}
- /********************************************************钀ラ攢閲囪喘绫�**************************************************/
- @GetMapping("/business")
- @Log(title = "閿�鍞�-閲囪喘-搴撳瓨鏁版嵁", businessType = BusinessType.OTHER)
- @ApiOperation("閿�鍞�-閲囪喘-搴撳瓨鏁版嵁")
- public AjaxResult business(HomeBusinessDto req) {
- HomeBusinessDto homeBusinessDto = homeService.business();
- return AjaxResult.success(homeBusinessDto);
- }
-
-
- @GetMapping("/analysisCustomerContractAmounts")
- @Log(title = "瀹㈡埛鍚堝悓閲戦鍒嗘瀽", businessType = BusinessType.OTHER)
- @ApiOperation("瀹㈡埛鍚堝悓閲戦鍒嗘瀽")
- public AjaxResult analysisCustomerContractAmounts(AnalysisCustomerContractAmountsDto req) {
- AnalysisCustomerContractAmountsDto analysisCustomerContractAmounts = homeService.analysisCustomerContractAmounts();
- return AjaxResult.success(analysisCustomerContractAmounts);
- }
-
-
- /********************************************************鐢熶骇绫�*****************************************************/
- @GetMapping("/progressStatistics")
- @ApiOperation("鍚勭敓浜ц鍗曠殑瀹屾垚杩涘害缁熻")
- public AjaxResult progressStatistics(){
- ProductionProgressDto productionProgressDto = homeService.productionProgress();
- return AjaxResult.success(productionProgressDto);
- }
- @GetMapping("/workInProcessTurnover")
- @ApiOperation("鍦ㄥ埗鍝佸懆杞儏鍐�")
- public AjaxResult workInProcessTurnover(){
- ProductionTurnoverDto productionTurnoverDto = homeService.workInProcessTurnover();
- return AjaxResult.success(productionTurnoverDto);
- }
-
-
-
- /********************************************************璐ㄩ噺绫�*****************************************************/
@GetMapping("/qualityStatistics")
@Log(title = "璐ㄩ噺鍒嗘瀽", businessType = BusinessType.OTHER)
@ApiOperation("璐ㄩ噺鍒嗘瀽")
@@ -299,8 +232,42 @@
return AjaxResult.success(qualityStatisticsDto);
}
-
/********************************************************璐㈠姟绫�*****************************************************/
+ @GetMapping("/incomeExpenseAnalysis")
+ @ApiOperation("鏀敹瀵规瘮鍒嗘瀽")
+ public AjaxResult incomeExpenseAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type) {
+ List<Map<String, Object>> result = homeService.incomeExpenseAnalysis(type);
+ return AjaxResult.success(result);
+ }
+
+ @GetMapping("/profitTrendAnalysis")
+ @ApiOperation("鍒╂鼎瓒嬪娍鍒嗘瀽")
+ public AjaxResult profitTrendAnalysis(){
+ List<MapDto> list = homeService.profitTrendAnalysis();
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/expenseCompositionAnalysis")
+ @ApiOperation("鏋勬垚鍒嗘瀽")
+ public AjaxResult expenseCompositionAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type) {
+ List<MapDto> list = homeService.expenseCompositionAnalysis(type);
+ return AjaxResult.success(list);
+ }
+
+ @GetMapping("/monthlyIncome")
+ @ApiOperation("鏈堝害鏀跺叆")
+ public AjaxResult monthlyIncome(){
+ MonthlyIncomeDto dto = homeService.monthlyIncome();
+ return AjaxResult.success(dto);
+ }
+
+ @GetMapping("/monthlyExpenditure")
+ @ApiOperation("鏈堝害鏀嚭")
+ public AjaxResult monthlyExpenditure(){
+ MonthlyExpenditureDto dto = homeService.monthlyExpenditure();
+ return AjaxResult.success(dto);
+ }
+
@GetMapping("/statisticsReceivablePayable")
@Log(title = "搴旀敹搴斾粯缁熻", businessType = BusinessType.OTHER)
@ApiOperation("搴旀敹搴斾粯缁熻")
@@ -309,17 +276,34 @@
return AjaxResult.success(statisticsReceivablePayable);
}
-
/********************************************************浠撳偍绫�*****************************************************/
+ @GetMapping("/productCategoryDistribution")
+ @ApiOperation("浜у搧澶х被鍒嗗竷")
+ public AjaxResult productCategoryDistribution() {
+ ProductCategoryDistributionDto dto = homeService.productCategoryDistribution();
+ return AjaxResult.success(dto);
+ }
+ @GetMapping("/salesPurchaseStorageProductCount")
+ @ApiOperation("閿�鍞�-閲囪喘-鍌ㄥ瓨浜у搧鏁�")
+ public AjaxResult salesPurchaseStorageProductCount(){
+ List<MapDto> list = homeService.salesPurchaseStorageProductCount();
+ return AjaxResult.success(list);
+ }
+ @GetMapping("/productInOutAnalysis")
+ @ApiOperation("浜у搧鍑哄叆搴撳垎鏋�")
+ public AjaxResult productInOutAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type){
+ List<Map<String, Object>> result = homeService.productInOutAnalysis(type);
+ return AjaxResult.success(result);
+ }
-
-
-
-
-
-
+ @GetMapping("/productTurnoverDays")
+ @ApiOperation("浜у搧鍛ㄨ浆澶╂暟")
+ public AjaxResult productTurnoverDays(){
+ List<MapDto> list = homeService.productTurnoverDays();
+ return AjaxResult.success(list);
+ }
}
diff --git a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
index 8de8a83..265cbec 100644
--- a/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
+++ b/src/main/java/com/ruoyi/home/service/impl/HomeServiceImpl.java
@@ -1729,8 +1729,7 @@
BigDecimal finishQty = item.getQuantity() != null ? item.getQuantity() : BigDecimal.ZERO;
BigDecimal scrapQty = item.getScrapQty() != null ? item.getScrapQty() : BigDecimal.ZERO;
- dto.setFinishQuantity(
- dto.getFinishQuantity() != null ? dto.getFinishQuantity().add(finishQty) : finishQty);
+ dto.setFinishQuantity(dto.getFinishQuantity() != null ? dto.getFinishQuantity().add(finishQty) : finishQty);
}
}
@@ -1746,9 +1745,11 @@
.filter(i -> i.getCreateTime() != null)
.collect(Collectors.groupingBy(
i -> i.getCreateTime().toLocalDate().toString(),
- Collectors.reducing(BigDecimal.ZERO,
- i -> i.getQuantity() != null ? i.getQuantity() : BigDecimal.ZERO,
- BigDecimal::add)));
+ Collectors.reducing(BigDecimal.ZERO, i -> {
+ BigDecimal qty = (i.getQuantity() != null) ? i.getQuantity() : BigDecimal.ZERO;
+ BigDecimal scrap = (i.getScrapQty() != null) ? i.getScrapQty() : BigDecimal.ZERO;
+ return qty.subtract(scrap);
+ }, BigDecimal::add)));
finishMap.forEach((date, qty) -> {
WorkOrderEfficiencyDto dto = dateMap.getOrDefault(date, new WorkOrderEfficiencyDto());
diff --git a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
index 4beb89f..4cb0c68 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -87,4 +87,15 @@
}
+ @ApiOperation("鏂板鐢熶骇璁㈠崟")
+ @PostMapping("addProductOrder")
+ public R addProductOrder(@RequestBody ProductOrder productOrder) {
+ return R.ok(productOrderService.addProductOrder(productOrder));
+ }
+
+ @ApiOperation("鍒犻櫎鐢熶骇璁㈠崟")
+ @DeleteMapping("/{ids}")
+ public R delete(@PathVariable("ids") Long[] ids) {
+ return R.ok(productOrderService.delete(ids));
+ }
}
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
index d4265bf..bd3610c 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerWorkController.java
@@ -1,93 +1,92 @@
-package com.ruoyi.production.controller;
-
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.framework.aspectj.lang.annotation.Log;
-import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
-import com.ruoyi.framework.web.controller.BaseController;
-import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.production.dto.ProcessSchedulingDto;
-import com.ruoyi.production.dto.ProductionReportDto;
-import com.ruoyi.production.dto.SalesLedgerSchedulingProcessDto;
-import com.ruoyi.production.dto.SalesLedgerWorkDto;
-import com.ruoyi.production.pojo.SalesLedgerWork;
-import com.ruoyi.production.service.SalesLedgerWorkService;
-import com.ruoyi.production.service.impl.SalesLedgerWorkServiceImpl;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.*;
-
-import javax.servlet.http.HttpServletResponse;
-import java.util.List;
-
-/**
- * @author :yys
- * @date : 2025/7/21 14:43
- */
-@RestController
-@Api(tags = "鐢熶骇鎶ュ伐(鎺掍骇璁板綍)")
-@RequestMapping("/salesLedger/work")
-@Deprecated // 鏍囪璇ョ被宸插純鐢�
-public class SalesLedgerWorkController extends BaseController {
-
-
- @Autowired
- private SalesLedgerWorkServiceImpl salesLedgerWorkService;
-
- @GetMapping("/listPage")
- @Log(title = "鐢熶骇鎶ュ伐-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
- @ApiOperation("鐢熶骇鎶ュ伐-鍒嗛〉鏌ヨ")
- public AjaxResult listPage(Page page, SalesLedgerWorkDto salesLedgerWorkDto) {
- IPage<SalesLedgerWorkDto> listPage = salesLedgerWorkService.listPage(page, salesLedgerWorkDto);
- return AjaxResult.success(listPage);
- }
-
- /**
- * 瀵煎嚭
- * @param response
- */
- @PostMapping("/export")
- @ApiOperation("鐢熶骇绠$悊-鐢熶骇鎶ュ伐-瀵煎嚭")
- public void export(HttpServletResponse response) {
- Page page = new Page(-1,-1);
- SalesLedgerWorkDto salesLedgerSchedulingDto = new SalesLedgerWorkDto();
- IPage<SalesLedgerWorkDto> result = salesLedgerWorkService.listPage(page,salesLedgerSchedulingDto);
- result.getRecords().forEach(item -> {
- item.setDaiNum(item.getFinishedNum().subtract(item.getSchedulingNum()));
- item.setStatusName(item.getStatus().toString());
- });
- ExcelUtil<SalesLedgerWorkDto> util = new ExcelUtil<>(SalesLedgerWorkDto.class);
- util.exportExcel(response, result.getRecords(), "宸ュ簭鎺掍骇");
- }
-
- @GetMapping("/list")
- @Log(title = "鐢熶骇鎶ュ伐-鏌ヨ", businessType = BusinessType.OTHER)
- @ApiOperation("鐢熶骇鎶ュ伐-鏌ヨ")
- public AjaxResult list(@RequestParam("id") Long id) {
- List<ProductionReportDto> list = salesLedgerWorkService.getList(id);
- return AjaxResult.success(list);
- }
-
- @PostMapping("/productionReport")
- @Log(title = "鐢熶骇绠$悊-鐢熶骇鎶ュ伐", businessType = BusinessType.INSERT)
- @ApiOperation("鐢熶骇绠$悊-鐢熶骇鎶ュ伐")
- @Transactional(rollbackFor = Exception.class)
- public AjaxResult productionReport(@RequestBody ProductionReportDto productionReportDto) {
- int result = salesLedgerWorkService.productionReport(productionReportDto);
- return AjaxResult.success(result);
- }
-
-
- @PostMapping("/productionReportUpdate")
- @Log(title = "鐢熶骇绠$悊-鐢熶骇鎶ュ伐-淇敼", businessType = BusinessType.UPDATE)
- @ApiOperation("鐢熶骇绠$悊-鐢熶骇鎶ュ伐-淇敼")
- @Transactional(rollbackFor = Exception.class)
- public AjaxResult productionReportUpdate(@RequestBody ProductionReportDto productionReportDto) {
- int result = salesLedgerWorkService.productionReportUpdate(productionReportDto);
- return AjaxResult.success(result);
- }
-
-}
+//package com.ruoyi.production.controller;
+//
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.ruoyi.common.utils.poi.ExcelUtil;
+//import com.ruoyi.framework.aspectj.lang.annotation.Log;
+//import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+//import com.ruoyi.framework.web.controller.BaseController;
+//import com.ruoyi.framework.web.domain.AjaxResult;
+//import com.ruoyi.production.dto.ProcessSchedulingDto;
+//import com.ruoyi.production.dto.ProductionReportDto;
+//import com.ruoyi.production.dto.SalesLedgerSchedulingProcessDto;
+//import com.ruoyi.production.dto.SalesLedgerWorkDto;
+//import com.ruoyi.production.pojo.SalesLedgerWork;
+//import com.ruoyi.production.service.SalesLedgerWorkService;
+//import io.swagger.annotations.Api;
+//import io.swagger.annotations.ApiOperation;
+//import org.springframework.beans.factory.annotation.Autowired;
+//import org.springframework.transaction.annotation.Transactional;
+//import org.springframework.web.bind.annotation.*;
+//
+//import javax.servlet.http.HttpServletResponse;
+//import java.util.List;
+//
+///**
+// * @author :yys
+// * @date : 2025/7/21 14:43
+// */
+//@RestController
+//@Api(tags = "鐢熶骇鎶ュ伐(鎺掍骇璁板綍)")
+//@RequestMapping("/salesLedger/work")
+//@Deprecated // 鏍囪璇ョ被宸插純鐢�
+//public class SalesLedgerWorkController extends BaseController {
+//
+//
+// @Autowired
+// private SalesLedgerWorkServiceImpl salesLedgerWorkService;
+//
+// @GetMapping("/listPage")
+// @Log(title = "鐢熶骇鎶ュ伐-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+// @ApiOperation("鐢熶骇鎶ュ伐-鍒嗛〉鏌ヨ")
+// public AjaxResult listPage(Page page, SalesLedgerWorkDto salesLedgerWorkDto) {
+// IPage<SalesLedgerWorkDto> listPage = salesLedgerWorkService.listPage(page, salesLedgerWorkDto);
+// return AjaxResult.success(listPage);
+// }
+//
+// /**
+// * 瀵煎嚭
+// * @param response
+// */
+// @PostMapping("/export")
+// @ApiOperation("鐢熶骇绠$悊-鐢熶骇鎶ュ伐-瀵煎嚭")
+// public void export(HttpServletResponse response) {
+// Page page = new Page(-1,-1);
+// SalesLedgerWorkDto salesLedgerSchedulingDto = new SalesLedgerWorkDto();
+// IPage<SalesLedgerWorkDto> result = salesLedgerWorkService.listPage(page,salesLedgerSchedulingDto);
+// result.getRecords().forEach(item -> {
+// item.setDaiNum(item.getFinishedNum().subtract(item.getSchedulingNum()));
+// item.setStatusName(item.getStatus().toString());
+// });
+// ExcelUtil<SalesLedgerWorkDto> util = new ExcelUtil<>(SalesLedgerWorkDto.class);
+// util.exportExcel(response, result.getRecords(), "宸ュ簭鎺掍骇");
+// }
+//
+// @GetMapping("/list")
+// @Log(title = "鐢熶骇鎶ュ伐-鏌ヨ", businessType = BusinessType.OTHER)
+// @ApiOperation("鐢熶骇鎶ュ伐-鏌ヨ")
+// public AjaxResult list(@RequestParam("id") Long id) {
+// List<ProductionReportDto> list = salesLedgerWorkService.getList(id);
+// return AjaxResult.success(list);
+// }
+//
+// @PostMapping("/productionReport")
+// @Log(title = "鐢熶骇绠$悊-鐢熶骇鎶ュ伐", businessType = BusinessType.INSERT)
+// @ApiOperation("鐢熶骇绠$悊-鐢熶骇鎶ュ伐")
+// @Transactional(rollbackFor = Exception.class)
+// public AjaxResult productionReport(@RequestBody ProductionReportDto productionReportDto) {
+// int result = salesLedgerWorkService.productionReport(productionReportDto);
+// return AjaxResult.success(result);
+// }
+//
+//
+// @PostMapping("/productionReportUpdate")
+// @Log(title = "鐢熶骇绠$悊-鐢熶骇鎶ュ伐-淇敼", businessType = BusinessType.UPDATE)
+// @ApiOperation("鐢熶骇绠$悊-鐢熶骇鎶ュ伐-淇敼")
+// @Transactional(rollbackFor = Exception.class)
+// public AjaxResult productionReportUpdate(@RequestBody ProductionReportDto productionReportDto) {
+// int result = salesLedgerWorkService.productionReportUpdate(productionReportDto);
+// return AjaxResult.success(result);
+// }
+//
+//}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
index 9d39a77..d637f7d 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductWorkOrderMapper.java
@@ -20,4 +20,6 @@
ProductWorkOrderDto getProductWorkOrderFlowCard(@Param("id") Long id);
List<ProductWorkOrderDto> selectWorkOrderStartStats(@Param("startDate") String startDate, @Param("endDate") String endDate);
+
+ ProductWorkOrder selectMax(@Param("datePrefix") String datePrefix);
}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
index 818b6f1..e63e032 100644
--- a/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
+++ b/src/main/java/com/ruoyi/production/mapper/ProductionProductMainMapper.java
@@ -10,6 +10,7 @@
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
+import java.util.ArrayList;
import java.util.List;
@Mapper
@@ -30,4 +31,6 @@
ProductOrder getOrderByMainId(@Param("productMainId") Long productMainId);
IPage<ProductionProductMainDto> listProductionDetails(@Param("ew") SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto, Page page);
+
+ ArrayList<Long> listMain(List<Long> idList);
}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionProductInput.java b/src/main/java/com/ruoyi/production/pojo/ProductionProductInput.java
index c938170..82bece9 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionProductInput.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionProductInput.java
@@ -24,6 +24,7 @@
private BigDecimal quantity;
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@ApiModelProperty(value = "绉熸埛ID")
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java b/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
index 2889bdd..f78df35 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionProductOutput.java
@@ -20,10 +20,11 @@
@ApiModelProperty(value = "浜у搧id")
private Long productModelId;
- @ApiModelProperty(value = "鎶ュ伐鏁伴噺")
+ @ApiModelProperty(value = "鎶ュ伐鏁伴噺(鎬绘暟閲�)")
private BigDecimal quantity;
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@ApiModelProperty(value = "绉熸埛ID")
diff --git a/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java b/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java
index b410df7..cb56f29 100644
--- a/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java
+++ b/src/main/java/com/ruoyi/production/pojo/SalesLedgerProductionAccounting.java
@@ -23,24 +23,9 @@
private Long id;
/**
- * 閿�鍞帓浜�-鎶ュ伐琛╥d
+ * 鎶ュ伐琛╥d
*/
- private Long salesLedgerWorkId;
-
- /**
- * 閿�鍞帓浜ц〃id
- */
- private Long salesLedgerSchedulingId;
-
- /**
- * 閿�鍞彴璐d
- */
- private Long salesLedgerId;
-
- /**
- * 閿�鍞骇鍝乮d
- */
- private Long salesLedgerProductId;
+ private Long productMainId;
/**
* 鐢熶骇浜篿d
@@ -101,6 +86,5 @@
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
- private Long ProductMainId;
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductOrderService.java b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
index 78a3de1..5a714a6 100644
--- a/src/main/java/com/ruoyi/production/service/ProductOrderService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -21,4 +21,8 @@
List<ProcessRoute> listProcessRoute(Long productModelId);
List<ProductStructureDto> listProcessBom(Long orderId);
+
+ Boolean addProductOrder(ProductOrder productOrder);
+
+ Boolean delete(Long[] id);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
index af6e414..72d868c 100644
--- a/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductionProductMainService.java
@@ -6,10 +6,15 @@
import com.ruoyi.production.dto.ProductionProductMainDto;
import com.ruoyi.production.pojo.ProductionProductMain;
+import java.util.ArrayList;
+import java.util.List;
+
public interface ProductionProductMainService extends IService<ProductionProductMain> {
IPage<ProductionProductMainDto> listPageProductionProductMainDto(Page page, ProductionProductMainDto productionProductMainDto);
Boolean addProductMain(ProductionProductMainDto productionProductMainDto);
Boolean removeProductMain(Long id);
+
+ ArrayList<Long> listMain(List<Long> idList);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
index a6fdd11..2ef08c1 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -1,22 +1,29 @@
package com.ruoyi.production.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.production.dto.ProductBomDto;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductOrderDto;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
-import com.ruoyi.production.service.ProcessRouteService;
import com.ruoyi.production.service.ProductOrderService;
+import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
+import java.util.stream.Collectors;
@Service
public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrder> implements ProductOrderService {
@@ -39,6 +46,23 @@
@Autowired
private ProductWorkOrderMapper productWorkOrderMapper;
+ @Autowired
+ private ProductionProductMainMapper productionProductMainMapper;
+
+ @Autowired
+ private ProductionProductOutputMapper productionProductOutputMapper;
+
+ @Autowired
+ private ProductionProductInputMapper productionProductInputMapper;
+
+ @Autowired
+ private QualityInspectMapper qualityInspectMapper;
+
+ @Autowired
+ private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
+
+ @Autowired
+ private StockUtils stockUtils;
@Override
public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) {
@@ -69,11 +93,7 @@
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);
+ ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix);
int sequenceNumber = 1; // 榛樿搴忓彿
if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
String lastNo = lastWorkOrder.getWorkOrderNo().toString();
@@ -87,7 +107,7 @@
}
}
// 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
- String workOrderNoStr ="GD"+ String.format("%s%03d", datePrefix, sequenceNumber);
+ String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber);
ProductWorkOrder productWorkOrder = new ProductWorkOrder();
productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
productWorkOrder.setProductOrderId(productOrder.getId());
@@ -110,4 +130,139 @@
public List<ProductStructureDto> listProcessBom(Long orderId) {
return productOrderMapper.listProcessBom(orderId);
}
+
+ @Override
+ public Boolean addProductOrder(ProductOrder productOrder) {
+ String string = generateNextOrderNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+ productOrder.setNpsNo(string);
+ productOrder.setCompleteQuantity(BigDecimal.ZERO);
+ this.save(productOrder);
+ if (ObjectUtils.isNotEmpty(productOrder.getRouteId())) {
+ this.bindingRoute(productOrder);
+ }
+ return true;
+ }
+
+ @Override
+ public Boolean delete(Long[] ids) {
+
+ //鎵归噺鏌ヨproductOrder
+ List<ProductOrder> productOrders = productOrderMapper.selectList(
+ new LambdaQueryWrapper<ProductOrder>()
+ .in(ProductOrder::getId, ids)
+ );
+ if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
+
+
+ // 鎵归噺鏌ヨprocessRouteItems
+ List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList(
+ new LambdaQueryWrapper<ProductProcessRouteItem>()
+ .in(ProductProcessRouteItem::getProductOrderId, ids)
+ );
+
+ if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(allRouteItems)) {
+ // 鑾峰彇瑕佸垹闄ょ殑宸ュ簭椤笽D
+ List<Long> routeItemIds = allRouteItems.stream()
+ .map(ProductProcessRouteItem::getId)
+ .collect(Collectors.toList());
+
+ // 鏌ヨ鍏宠仈鐨勫伐鍗旾D
+ List<ProductWorkOrder> workOrders = productWorkOrderMapper.selectList(
+ new LambdaQueryWrapper<ProductWorkOrder>()
+ .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds)
+ );
+ if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(workOrders)) {
+ List<Long> workOrderIds = workOrders.stream()
+ .map(ProductWorkOrder::getId)
+ .collect(Collectors.toList());
+
+ // 鏌ヨ鍏宠仈鐨勭敓浜т富琛↖D
+ List<ProductionProductMain> productMains = productionProductMainMapper.selectList(
+ new LambdaQueryWrapper<ProductionProductMain>()
+ .in(ProductionProductMain::getWorkOrderId, workOrderIds)
+ );
+ List<Long> productMainIds = productMains.stream()
+ .map(ProductionProductMain::getId)
+ .collect(Collectors.toList());
+
+ // 鍒犻櫎浜у嚭琛ㄣ�佹姇鍏ヨ〃鏁版嵁
+ if (!com.baomidou.mybatisplus.core.toolkit.CollectionUtils.isEmpty(productMainIds)) {
+ productionProductOutputMapper.deleteByProductMainIds(productMainIds);
+ productionProductInputMapper.deleteByProductMainIds(productMainIds);
+ List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
+ new LambdaQueryWrapper<QualityInspect>()
+ .in(QualityInspect::getProductMainId, productMainIds)
+ );
+ //鍒犻櫎鍑哄簱璁板綍
+ for (Long productMainId : productMainIds) {
+ //鍒犻櫎鐢熶骇鍑哄簱璁板綍
+ stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+ //鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
+ stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+ }
+ qualityInspects.forEach(qualityInspect -> {
+ //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
+ if (qualityInspect.getInspectState() == 1) {
+ throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
+ }
+ });
+ qualityInspectMapper.deleteByProductMainIds(productMainIds);
+ salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+ .in(SalesLedgerProductionAccounting::getProductMainId, productMainIds));
+ }
+
+ // 鍒犻櫎鐢熶骇涓昏〃鏁版嵁
+ productionProductMainMapper.deleteByWorkOrderIds(workOrderIds);
+
+ // 鍒犻櫎宸ュ崟鏁版嵁
+ productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
+ .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds));
+ }
+ }
+ // 鎵归噺鍒犻櫎processRouteItem
+ productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>()
+ .in(ProductProcessRouteItem::getProductOrderId, ids));
+
+ // 鎵归噺鍒犻櫎productProcessRoute
+ productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>()
+ .in(ProductProcessRoute::getProductOrderId, ids));
+
+ // 鎵归噺鍒犻櫎productOrder
+ productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
+ .in(ProductOrder::getId, ids));
+ }
+ return true;
+ }
+
+ //鑾峰彇褰撳墠鐢熶骇璁㈠崟鍙�
+ public String getMaxOrderNoByDate(String datePrefix) {
+ QueryWrapper<ProductOrder> queryWrapper = new QueryWrapper<>();
+ // 鍖归厤浠� SC + 鏃ユ湡寮�澶寸殑璁㈠崟鍙�
+ queryWrapper.likeRight("nps_no", "SC" + datePrefix);
+ // 鎸夎鍗曞彿鍊掑簭鎺掑垪
+ queryWrapper.orderByDesc("nps_no");
+ queryWrapper.last("LIMIT 1");
+
+ ProductOrder latestOrder = this.getOne(queryWrapper);
+ return latestOrder != null ? latestOrder.getNpsNo() : null;
+ }
+
+ public String generateNextOrderNo(String datePrefix) {
+ String maxOrderNo = getMaxOrderNoByDate(datePrefix);
+ int sequence = 1; // 榛樿璧峰搴忓彿
+ if (maxOrderNo != null && !maxOrderNo.isEmpty()) {
+ // 鎻愬彇娴佹按鍙烽儴鍒嗭紙鍋囪鏍煎紡涓� SC + 鏃ユ湡 + 娴佹按鍙凤級
+ String sequenceStr = maxOrderNo.substring(("SC" + datePrefix).length());
+ try {
+ sequence = Integer.parseInt(sequenceStr) + 1;
+ } catch (NumberFormatException e) {
+ // 寮傚父鎯呭喌涓嬮噸缃负1
+ sequence = 1;
+ }
+ }
+ // 鐢熸垚鏂拌鍗曞彿
+ return "SC" + datePrefix + String.format("%04d", sequence);
+ }
+
+
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
index 7f73d6b..c5fbac0 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -101,14 +101,12 @@
// // 鍒犻櫎璐ㄦ
// qualityInspectMapper.delete(new LambdaQueryWrapper<QualityInspect>()
// .eq(QualityInspect::getProductMainId, mainId));
+ salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+ .eq(SalesLedgerProductionAccounting::getProductMainId, main.getId()));
}
}
// 鏌ヨ璁㈠崟 + 鍒犻櫎鏍哥畻
- ProductOrder productOrder = productOrderMapper.selectById(productOrderId);
- if (productOrder != null && productOrder.getSalesLedgerId() != null) {
- salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
- .eq(SalesLedgerProductionAccounting::getSalesLedgerId, productOrder.getSalesLedgerId()));
- }
+
// 鍒犻櫎鍏宠仈宸ュ崟
productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
.eq(ProductWorkOrder::getProductProcessRouteItemId, routeItemId));
@@ -144,11 +142,7 @@
String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
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);
+ ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix);
int sequenceNumber = 1; // 榛樿搴忓彿
if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
String lastNo = lastWorkOrder.getWorkOrderNo().toString();
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 8ac0c7e..7a67d50 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -11,8 +11,10 @@
import com.ruoyi.basic.mapper.ProductModelMapper;
import com.ruoyi.basic.pojo.Product;
import com.ruoyi.basic.pojo.ProductModel;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductStructureDto;
@@ -24,6 +26,7 @@
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.quality.mapper.*;
import com.ruoyi.quality.pojo.*;
+import com.ruoyi.quality.service.IQualityInspectService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -33,6 +36,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -41,6 +45,7 @@
@Transactional(rollbackFor = Exception.class)
public class ProductionProductMainServiceImpl extends ServiceImpl<ProductionProductMainMapper, ProductionProductMain> implements ProductionProductMainService {
+ private IQualityInspectService qualityInspectService;
private ProductionProductMainMapper productionProductMainMapper;
@@ -148,7 +153,7 @@
productionProductInput.setQuantity(productStructureDto.getUnitQuantity().multiply(dto.getQuantity()));
productionProductInput.setProductMainId(productionProductMain.getId());
productionProductInputMapper.insert(productionProductInput);
- stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
+ stockUtils.substractStock(productStructureDto.getProductModelId(), productionProductInput.getQuantity(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode(), productionProductMain.getId());
}
/*鏂板鎶ュ伐浜у嚭琛�*/
@@ -202,7 +207,7 @@
}
}else {
//鐩存帴鍏ュ簱
- stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
+ stockUtils.addStock(productProcessRouteItem.getProductModelId(), productionProductOutput.getQuantity(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode(), productionProductMain.getId());
}
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(dto.getWorkOrderId());
@@ -229,10 +234,7 @@
productOrderMapper.updateById(productOrder);
/*娣诲姞鐢熶骇鏍哥畻*/
SalesLedgerProductionAccounting salesLedgerProductionAccounting = SalesLedgerProductionAccounting.builder()
- .salesLedgerWorkId(productionProductMain.getId())
- .salesLedgerSchedulingId(0L)
- .salesLedgerId(productOrder.getSalesLedgerId())
- .salesLedgerProductId(productOrder.getSaleLedgerProductId())
+ .productMainId(productionProductMain.getId())
.schedulingUserId(user.getUserId())
.schedulingUserName(user.getNickName())
.finishedNum(productQty)
@@ -246,13 +248,14 @@
//濡傛灉鎶ュ簾鏁伴噺>0,闇�瑕佽繘鍏ユ姤搴熺殑搴撳瓨
if (ObjectUtils.isNotEmpty(dto.getScrapQty())) {
if (dto.getScrapQty().compareTo(BigDecimal.ZERO) > 0) {
- stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
+ stockUtils.addUnStock(productModel.getId(), dto.getScrapQty(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode(), productionProductMain.getId());
}
}
return true;
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public Boolean removeProductMain(Long id) {
ProductionProductMain productionProductMain = productionProductMainMapper.selectById(id);
//璇ユ姤宸ュ搴旂殑宸ヨ壓璺嚎璇︽儏
@@ -261,20 +264,39 @@
/*鍒犻櫎鏍哥畻*/
salesLedgerProductionAccountingMapper.delete(
new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
- .eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, productionProductMain.getId())
+ .eq(SalesLedgerProductionAccounting::getProductMainId, productionProductMain.getId())
);
/*鏇存柊宸ュ崟鍜岀敓浜ц鍗�*/
ProductWorkOrder productWorkOrder = productWorkOrderMapper.selectById(productionProductMain.getWorkOrderId());
- productWorkOrder.setCompleteQuantity(productWorkOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
- productWorkOrder.setActualEndTime(null);
- productWorkOrderMapper.updateById(productWorkOrder);
+ if (productWorkOrder != null && productionProductOutput != null) {
+ BigDecimal outputQty = productionProductOutput.getQuantity() == null ? BigDecimal.ZERO : productionProductOutput.getQuantity();
+ BigDecimal scrapQty = productionProductOutput.getScrapQty() == null ? BigDecimal.ZERO : productionProductOutput.getScrapQty();
+ BigDecimal completeQty = productWorkOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productWorkOrder.getCompleteQuantity();
+
+ BigDecimal validQuantity = outputQty.subtract(scrapQty);
+
+ productWorkOrder.setCompleteQuantity(completeQty.subtract(validQuantity));
+ productWorkOrder.setActualEndTime(null);
+ productWorkOrderMapper.updateById(productWorkOrder);
+ } else {
+ throw new ServiceException("鎿嶄綔澶辫触锛氬伐鍗曚俊鎭垨浜у嚭璁板綍涓嶅瓨鍦�");
+ }
+
//鍒ゆ柇鏄惁鏄渶鍚庝竴閬撳伐搴�
List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().eq(ProductProcessRouteItem::getProductRouteId, productProcessRouteItem.getProductRouteId()));
- if (productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
+ if (productProcessRouteItem.getDragSort() != null && productProcessRouteItems != null && productProcessRouteItem.getDragSort() == productProcessRouteItems.size()) {
ProductOrder productOrder = productOrderMapper.selectById(productWorkOrder.getProductOrderId());
- productOrder.setCompleteQuantity(productOrder.getCompleteQuantity().subtract(productionProductOutput.getQuantity()));
- productOrder.setEndTime(null);
- productOrderMapper.updateById(productOrder);
+ if (productOrder != null) {
+ BigDecimal orderCompleteQty = productOrder.getCompleteQuantity() == null ? BigDecimal.ZERO : productOrder.getCompleteQuantity();
+ BigDecimal outputQty = productionProductOutput.getQuantity() != null
+ ? productionProductOutput.getQuantity() : BigDecimal.ZERO;
+
+ productOrder.setCompleteQuantity(orderCompleteQty.subtract(outputQty));
+ productOrder.setEndTime(null);
+ productOrderMapper.updateById(productOrder);
+ } else {
+ throw new ServiceException("鍏宠仈鐨勭敓浜ц鍗曚笉瀛樺湪");
+ }
}
//鍒犻櫎璐ㄦ
qualityInspectMapper.selectList(
@@ -285,7 +307,9 @@
new LambdaQueryWrapper<QualityInspectParam>()
.eq(QualityInspectParam::getInspectId, q.getId()));
qualityInspectMapper.deleteById(q.getId());
+ stockUtils.deleteStockInRecord(q.getId(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode());
});
+
// 鍒犻櫎浜у嚭璁板綍
productionProductOutputMapper.delete(new LambdaQueryWrapper<ProductionProductOutput>()
.eq(ProductionProductOutput::getProductMainId, productionProductMain.getId()));
@@ -293,13 +317,18 @@
productionProductInputMapper.delete(new LambdaQueryWrapper<ProductionProductInput>()
.eq(ProductionProductInput::getProductMainId, productionProductMain.getId()));
//鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
- stockUtils.deleteStockInRecord(productionProductMain.getId(), StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+ stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
//鍒犻櫎涓嶉渶瑕佽川妫�鐨勫悎鏍煎叆搴�
- stockUtils.deleteStockInRecord(productionProductMain.getId(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode());
+ stockUtils.deleteStockInRecord(productionProductMain.getId(), StockInQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_IN.getCode());
//鍒犻櫎鎶曞叆瀵瑰簲鐨勫嚭搴撹褰�
- stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+ stockUtils.deleteStockOutRecord(productionProductMain.getId(), StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
// 鍒犻櫎涓昏〃
productionProductMainMapper.deleteById(productionProductMain.getId());
return true;
}
+
+ @Override
+ public ArrayList<Long> listMain(List<Long> idList) {
+ return productionProductMainMapper.listMain(idList);
+ }
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
index 2135a8b..6573b73 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerWorkServiceImpl.java
@@ -1,185 +1,182 @@
-package com.ruoyi.production.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.framework.security.LoginUser;
-import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.Details;
-import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
-import com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl;
-import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl;
-import com.ruoyi.production.dto.ProductionReportDto;
-import com.ruoyi.production.dto.SalesLedgerWorkDto;
-import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
-import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
-import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
-import com.ruoyi.production.pojo.SalesLedgerWork;
-import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
-import com.ruoyi.production.service.SalesLedgerWorkService;
-import com.ruoyi.project.system.domain.SysUser;
-import com.ruoyi.project.system.mapper.SysUserMapper;
-import com.ruoyi.sales.mapper.LossMapper;
-import com.ruoyi.sales.pojo.Loss;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.time.LocalDate;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author :yys
- * @date : 2025/7/21 14:40
- */
-@Service
-@RequiredArgsConstructor
-@Slf4j
-public class SalesLedgerWorkServiceImpl extends ServiceImpl<SalesLedgerWorkMapper, SalesLedgerWork> implements SalesLedgerWorkService {
-
- private final SalesLedgerWorkMapper salesLedgerWorkMapper;
-
- private final SysUserMapper sysUserMapper;
-
- private final LossMapper lossMapper;
-
- private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
-
- @Override
- public IPage<SalesLedgerWorkDto> listPage(Page page, SalesLedgerWorkDto salesLedgerWorkDto) {
- IPage<SalesLedgerWorkDto> iPage = salesLedgerWorkMapper.listPage(page, salesLedgerWorkDto);
- List<Loss> losses = lossMapper.selectList(null);
- if(!CollectionUtils.isEmpty(losses)){
- iPage.getRecords().forEach(item -> {
- String[] split = item.getSpecificationModel().split("\\*");
- if(split.length == 2 && isNumeric(split[1]) && isNumeric(split[0])){
- // 璁$畻鎹熻�楋紙100000浠h〃 鎹熻�楃殑 100 鍜� 鍗曚綅杞崲鐨�1000锛�
- BigDecimal divide = new BigDecimal(split[0])
- .multiply(new BigDecimal(split[1]))
- .multiply(item.getFinishedNum())
- .multiply(losses.get(0).getRate())
- .divide(new BigDecimal(100000), 2, RoundingMode.HALF_UP);
- item.setLoss(divide.toString());
- }
-
- });
- }
- return iPage;
- }
-
- public static boolean isNumeric(String str) {
- if (str == null || str.isEmpty()) {
- return false;
- }
- // 閬嶅巻瀛楃涓茬殑姣忎釜瀛楃锛屾鏌ユ槸鍚︿负鏁板瓧
- for (int i = 0; i < str.length(); i++) {
- if (!Character.isDigit(str.charAt(i))) {
- return false;
- }
- }
- return true;
- }
-
- private final ProcurementRecordServiceImpl procurementRecordService;
-
- @Override
- public int productionReport(ProductionReportDto productionReportDto) {
- SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(productionReportDto.getId());
- SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
- if (salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
- if (salesLedgerWork.getStatus() == 3) throw new RuntimeException("鎶ュ伐宸插畬鎴�");
- if (sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
- salesLedgerWork.setFinishedNum(salesLedgerWork.getFinishedNum().add(productionReportDto.getFinishedNum()));
- if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
- salesLedgerWork.setStatus(3);
- }else{
- salesLedgerWork.setStatus(2);
- }
- salesLedgerWorkMapper.updateById(salesLedgerWork);
- // 鏂板鎶ュ伐鏁版嵁
- SalesLedgerProductionAccounting.SalesLedgerProductionAccountingBuilder builder = SalesLedgerProductionAccounting.builder()
- .salesLedgerWorkId(salesLedgerWork.getId())
- .salesLedgerSchedulingId(salesLedgerWork.getSalesLedgerSchedulingId())
- .salesLedgerId(salesLedgerWork.getSalesLedgerId())
- .salesLedgerProductId((long)salesLedgerWork.getSalesLedgerProductId())
- .schedulingUserId(sysUser.getUserId())
- .schedulingUserName(sysUser.getNickName())
- .finishedNum(productionReportDto.getFinishedNum())
- .workHours(salesLedgerWork.getWorkHours())
- .process(salesLedgerWork.getProcess())
- .schedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
- salesLedgerProductionAccountingMapper.insert(builder.build());
- // 鐢熶骇鎶ュ伐鎴愬姛 -> 鍏ュ簱
- LoginUser loginUser = SecurityUtils.getLoginUser();
- ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto();
- procurementRecordOutAdd.setType(2);
- procurementRecordOutAdd.setTypeName("鐢熶骇鍏ュ簱");
- procurementRecordOutAdd.setNickName(loginUser.getNickName());
- List<Details> details = new ArrayList<>();
- Details details1 = new Details();
- details1.setInboundQuantity(productionReportDto.getFinishedNum());
- details1.setId(Integer.parseInt(salesLedgerWork.getSalesLedgerProductId().toString()));
- details1.setUnitPrice(productionReportDto.getUnitPrice());
- details1.setTotalPrice(productionReportDto.getTotalPrice());
- details.add(details1);
- procurementRecordOutAdd.setDetails(details);
- procurementRecordService.add(procurementRecordOutAdd);
-
- return 0;
- }
-
- @Override
- public int productionReportUpdate(ProductionReportDto productionReportDto) {
- SalesLedgerProductionAccounting salesLedgerProductionAccounting = salesLedgerProductionAccountingMapper.selectById(productionReportDto.getId());
- if(salesLedgerProductionAccounting == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
- SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
- if(sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
- salesLedgerProductionAccounting.setFinishedNum(productionReportDto.getFinishedNum());
- salesLedgerProductionAccounting.setSchedulingUserId(sysUser.getUserId());
- salesLedgerProductionAccounting.setSchedulingUserName(sysUser.getNickName());
- salesLedgerProductionAccounting.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
- salesLedgerProductionAccountingMapper.updateById(salesLedgerProductionAccounting);
-
- // 鏇存柊鎶ュ伐鏁版嵁
- SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(salesLedgerProductionAccounting.getSalesLedgerWorkId());
- if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
- salesLedgerWork.setFinishedNum(productionReportDto.getFinishedNum());
- if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
- salesLedgerWork.setStatus(3);
- }else{
- salesLedgerWork.setStatus(2);
- }
- salesLedgerWork.setSchedulingUserId(sysUser.getUserId());
- salesLedgerWork.setSchedulingUserName(sysUser.getNickName());
- salesLedgerWork.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
- salesLedgerWorkMapper.updateById(salesLedgerWork);
- return 0;
- }
-
- @Override
- public List<ProductionReportDto> getList(Long id) {
- SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(id);
- if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
- LambdaQueryWrapper<SalesLedgerProductionAccounting> salesLedgerProductionAccountingLambdaQueryWrapper = new LambdaQueryWrapper<>();
- salesLedgerProductionAccountingLambdaQueryWrapper.eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, id);
- List<SalesLedgerProductionAccounting> salesLedgerProductionAccountingList = salesLedgerProductionAccountingMapper.selectList(salesLedgerProductionAccountingLambdaQueryWrapper);
- if(CollectionUtils.isEmpty(salesLedgerProductionAccountingList)) throw new RuntimeException("娌℃湁鐢熶骇璁板綍鏁版嵁");
- return salesLedgerProductionAccountingList.stream().map(salesLedgerProductionAccounting -> {
- ProductionReportDto productionReportDto = new ProductionReportDto();
- BeanUtils.copyProperties(salesLedgerProductionAccounting, productionReportDto);
- productionReportDto.setSchedulingDate(salesLedgerProductionAccounting.getSchedulingDate().format(DateTimeFormatter.ISO_LOCAL_DATE));
- productionReportDto.setSchedulingNum(salesLedgerWork.getSchedulingNum());
- return productionReportDto;
- }).collect(Collectors.toList());
- }
-}
+//package com.ruoyi.production.service.impl;
+//
+//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+//import com.baomidou.mybatisplus.core.metadata.IPage;
+//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+//import com.ruoyi.common.utils.SecurityUtils;
+//import com.ruoyi.framework.security.LoginUser;
+//import com.ruoyi.framework.web.domain.AjaxResult;
+//import com.ruoyi.procurementrecord.dto.Details;
+//import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
+//import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
+//import com.ruoyi.procurementrecord.service.impl.ProcurementRecordOutServiceImpl;
+//import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl;
+//import com.ruoyi.production.dto.ProductionReportDto;
+//import com.ruoyi.production.dto.SalesLedgerWorkDto;
+//import com.ruoyi.production.mapper.SalesLedgerProductionAccountingMapper;
+//import com.ruoyi.production.mapper.SalesLedgerWorkMapper;
+//import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
+//import com.ruoyi.production.pojo.SalesLedgerWork;
+//import com.ruoyi.production.service.SalesLedgerProductionAccountingService;
+//import com.ruoyi.production.service.SalesLedgerWorkService;
+//import com.ruoyi.project.system.domain.SysUser;
+//import com.ruoyi.project.system.mapper.SysUserMapper;
+//import com.ruoyi.sales.mapper.LossMapper;
+//import com.ruoyi.sales.pojo.Loss;
+//import lombok.RequiredArgsConstructor;
+//import lombok.extern.slf4j.Slf4j;
+//import org.springframework.beans.BeanUtils;
+//import org.springframework.stereotype.Service;
+//import org.springframework.util.CollectionUtils;
+//
+//import java.math.BigDecimal;
+//import java.math.RoundingMode;
+//import java.time.LocalDate;
+//import java.time.format.DateTimeFormatter;
+//import java.util.ArrayList;
+//import java.util.List;
+//import java.util.stream.Collectors;
+//
+///**
+// * @author :yys
+// * @date : 2025/7/21 14:40
+// */
+//@Service
+//@RequiredArgsConstructor
+//@Slf4j
+//public class SalesLedgerWorkServiceImpl extends ServiceImpl<SalesLedgerWorkMapper, SalesLedgerWork> implements SalesLedgerWorkService {
+//
+// private final SalesLedgerWorkMapper salesLedgerWorkMapper;
+//
+// private final SysUserMapper sysUserMapper;
+//
+// private final LossMapper lossMapper;
+//
+// private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
+//
+// @Override
+// public IPage<SalesLedgerWorkDto> listPage(Page page, SalesLedgerWorkDto salesLedgerWorkDto) {
+// IPage<SalesLedgerWorkDto> iPage = salesLedgerWorkMapper.listPage(page, salesLedgerWorkDto);
+// List<Loss> losses = lossMapper.selectList(null);
+// if(!CollectionUtils.isEmpty(losses)){
+// iPage.getRecords().forEach(item -> {
+// String[] split = item.getSpecificationModel().split("\\*");
+// if(split.length == 2 && isNumeric(split[1]) && isNumeric(split[0])){
+// // 璁$畻鎹熻�楋紙100000浠h〃 鎹熻�楃殑 100 鍜� 鍗曚綅杞崲鐨�1000锛�
+// BigDecimal divide = new BigDecimal(split[0])
+// .multiply(new BigDecimal(split[1]))
+// .multiply(item.getFinishedNum())
+// .multiply(losses.get(0).getRate())
+// .divide(new BigDecimal(100000), 2, RoundingMode.HALF_UP);
+// item.setLoss(divide.toString());
+// }
+//
+// });
+// }
+// return iPage;
+// }
+//
+// public static boolean isNumeric(String str) {
+// if (str == null || str.isEmpty()) {
+// return false;
+// }
+// // 閬嶅巻瀛楃涓茬殑姣忎釜瀛楃锛屾鏌ユ槸鍚︿负鏁板瓧
+// for (int i = 0; i < str.length(); i++) {
+// if (!Character.isDigit(str.charAt(i))) {
+// return false;
+// }
+// }
+// return true;
+// }
+//
+// private final ProcurementRecordServiceImpl procurementRecordService;
+//
+// @Override
+// public int productionReport(ProductionReportDto productionReportDto) {
+// SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(productionReportDto.getId());
+// SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
+// if (salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+// if (salesLedgerWork.getStatus() == 3) throw new RuntimeException("鎶ュ伐宸插畬鎴�");
+// if (sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
+// salesLedgerWork.setFinishedNum(salesLedgerWork.getFinishedNum().add(productionReportDto.getFinishedNum()));
+// if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
+// salesLedgerWork.setStatus(3);
+// }else{
+// salesLedgerWork.setStatus(2);
+// }
+// salesLedgerWorkMapper.updateById(salesLedgerWork);
+// // 鏂板鎶ュ伐鏁版嵁
+// SalesLedgerProductionAccounting.SalesLedgerProductionAccountingBuilder builder = SalesLedgerProductionAccounting.builder()
+// .productMainId(null)
+// .schedulingUserId(sysUser.getUserId())
+// .schedulingUserName(sysUser.getNickName())
+// .finishedNum(productionReportDto.getFinishedNum())
+// .workHours(salesLedgerWork.getWorkHours())
+// .process(salesLedgerWork.getProcess())
+// .schedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
+// salesLedgerProductionAccountingMapper.insert(builder.build());
+// // 鐢熶骇鎶ュ伐鎴愬姛 -> 鍏ュ簱
+// LoginUser loginUser = SecurityUtils.getLoginUser();
+// ProcurementAddDto procurementRecordOutAdd = new ProcurementAddDto();
+// procurementRecordOutAdd.setType(2);
+// procurementRecordOutAdd.setTypeName("鐢熶骇鍏ュ簱");
+// procurementRecordOutAdd.setNickName(loginUser.getNickName());
+// List<Details> details = new ArrayList<>();
+// Details details1 = new Details();
+// details1.setInboundQuantity(productionReportDto.getFinishedNum());
+// details1.setId(Integer.parseInt(salesLedgerWork.getSalesLedgerProductId().toString()));
+// details1.setUnitPrice(productionReportDto.getUnitPrice());
+// details1.setTotalPrice(productionReportDto.getTotalPrice());
+// details.add(details1);
+// procurementRecordOutAdd.setDetails(details);
+// procurementRecordService.add(procurementRecordOutAdd);
+//
+// return 0;
+// }
+//
+// @Override
+// public int productionReportUpdate(ProductionReportDto productionReportDto) {
+// SalesLedgerProductionAccounting salesLedgerProductionAccounting = salesLedgerProductionAccountingMapper.selectById(productionReportDto.getId());
+// if(salesLedgerProductionAccounting == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+// SysUser sysUser = sysUserMapper.selectUserById(productionReportDto.getSchedulingUserId());
+// if(sysUser == null) throw new RuntimeException("鐢熶骇浜轰笉瀛樺湪");
+// salesLedgerProductionAccounting.setFinishedNum(productionReportDto.getFinishedNum());
+// salesLedgerProductionAccounting.setSchedulingUserId(sysUser.getUserId());
+// salesLedgerProductionAccounting.setSchedulingUserName(sysUser.getNickName());
+// salesLedgerProductionAccounting.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
+// salesLedgerProductionAccountingMapper.updateById(salesLedgerProductionAccounting);
+//
+// // 鏇存柊鎶ュ伐鏁版嵁
+// SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(salesLedgerProductionAccounting.getSalesLedgerWorkId());
+// if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+// salesLedgerWork.setFinishedNum(productionReportDto.getFinishedNum());
+// if(salesLedgerWork.getSchedulingNum().compareTo(salesLedgerWork.getFinishedNum()) <= 0){
+// salesLedgerWork.setStatus(3);
+// }else{
+// salesLedgerWork.setStatus(2);
+// }
+// salesLedgerWork.setSchedulingUserId(sysUser.getUserId());
+// salesLedgerWork.setSchedulingUserName(sysUser.getNickName());
+// salesLedgerWork.setSchedulingDate(LocalDate.parse(productionReportDto.getSchedulingDate(), DateTimeFormatter.ISO_LOCAL_DATE));
+// salesLedgerWorkMapper.updateById(salesLedgerWork);
+// return 0;
+// }
+//
+// @Override
+// public List<ProductionReportDto> getList(Long id) {
+// SalesLedgerWork salesLedgerWork = salesLedgerWorkMapper.selectById(id);
+// if(salesLedgerWork == null) throw new RuntimeException("鎶ュ伐鏁版嵁涓嶅瓨鍦�");
+// LambdaQueryWrapper<SalesLedgerProductionAccounting> salesLedgerProductionAccountingLambdaQueryWrapper = new LambdaQueryWrapper<>();
+// salesLedgerProductionAccountingLambdaQueryWrapper.eq(SalesLedgerProductionAccounting::getSalesLedgerWorkId, id);
+// List<SalesLedgerProductionAccounting> salesLedgerProductionAccountingList = salesLedgerProductionAccountingMapper.selectList(salesLedgerProductionAccountingLambdaQueryWrapper);
+// if(CollectionUtils.isEmpty(salesLedgerProductionAccountingList)) throw new RuntimeException("娌℃湁鐢熶骇璁板綍鏁版嵁");
+// return salesLedgerProductionAccountingList.stream().map(salesLedgerProductionAccounting -> {
+// ProductionReportDto productionReportDto = new ProductionReportDto();
+// BeanUtils.copyProperties(salesLedgerProductionAccounting, productionReportDto);
+// productionReportDto.setSchedulingDate(salesLedgerProductionAccounting.getSchedulingDate().format(DateTimeFormatter.ISO_LOCAL_DATE));
+// productionReportDto.setSchedulingNum(salesLedgerWork.getSchedulingNum());
+// return productionReportDto;
+// }).collect(Collectors.toList());
+// }
+//}
diff --git a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
index 3348a8e..39f90eb 100644
--- a/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
+++ b/src/main/java/com/ruoyi/quality/controller/QualityInspectController.java
@@ -2,21 +2,18 @@
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
-import com.ruoyi.procurementrecord.service.impl.ProcurementRecordServiceImpl;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.quality.dto.QualityInspectDto;
import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.quality.pojo.QualityInspectFile;
import com.ruoyi.quality.pojo.QualityInspectParam;
-import com.ruoyi.quality.pojo.QualityUnqualified;
import com.ruoyi.quality.service.IQualityInspectFileService;
import com.ruoyi.quality.service.IQualityInspectParamService;
import com.ruoyi.quality.service.IQualityInspectService;
-import com.ruoyi.quality.service.IQualityUnqualifiedService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
@@ -74,7 +71,7 @@
.in(QualityInspectFile::getInspectId,ids));
//鍒犻櫎鍏ュ簱璁板綍
for (Integer id : ids) {
- stockUtils.deleteStockInRecord(Long.valueOf(id), StockQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode());
+ stockUtils.deleteStockInRecord(Long.valueOf(id), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode());
}
//鍒犻櫎妫�楠屽崟
return AjaxResult.success(qualityInspectService.removeBatchByIds(ids));
diff --git a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
index 0fd11d8..9d23429 100644
--- a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
+++ b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -152,4 +152,9 @@
@ApiModelProperty("鍏宠仈妫�娴嬫爣鍑嗕富琛╥d")
private Long testStandardId;
+
+ @TableField(exist = false)
+ private String workOrderNo;
+ @TableField(exist = false)
+ private String purchaseContractNo;
}
diff --git a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
index 07f070e..2111b99 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityInspectServiceImpl.java
@@ -8,7 +8,8 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.HackLoopTableRenderPolicy;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
@@ -93,7 +94,7 @@
qualityUnqualifiedMapper.insert(qualityUnqualified);
} else {
//鍚堟牸鐩存帴鍏ュ簱
- stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
+ stockUtils.addStock(qualityInspect.getProductModelId(), qualityInspect.getQuantity(), StockInQualifiedRecordTypeEnum.QUALITYINSPECT_STOCK_IN.getCode(), qualityInspect.getId());
}
qualityInspect.setInspectState(1);//宸叉彁浜�
return qualityInspectMapper.updateById(qualityInspect);
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 68c819c..5e98fa8 100644
--- a/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
+++ b/src/main/java/com/ruoyi/quality/service/impl/QualityUnqualifiedServiceImpl.java
@@ -7,8 +7,9 @@
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.StockQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.procurementrecord.utils.StockUtils;
@@ -98,11 +99,7 @@
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);
+ ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix);
int sequenceNumber = 1; // 榛樿搴忓彿
if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
String lastNo = lastWorkOrder.getWorkOrderNo().toString();
@@ -130,11 +127,11 @@
break;
case "鎶ュ簾":
//璋冪敤涓嶅悎鏍煎簱瀛樻帴鍙� 鍏ヤ笉鍚堟牸搴�
- stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
+ stockUtils.addUnStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInUnQualifiedRecordTypeEnum.DEFECTIVE_SCRAP.getCode(), unqualified.getId());
break;
case "璁╂鏀捐":
//璋冪敤鎻愪氦鍚堟牸鐨勬帴鍙�
- stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
+ stockUtils.addStock(qualityInspect.getProductModelId(), unqualified.getQuantity(), StockInQualifiedRecordTypeEnum.DEFECTIVE_PASS.getCode(), unqualified.getId());
qualityInspect.setCheckResult("鍚堟牸");
qualityInspectService.submit(qualityInspect);
break;
diff --git a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
index 39bdbf2..49548e1 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -1,29 +1,18 @@
package com.ruoyi.sales.controller;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.math.LongMath;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
-import com.ruoyi.procurementrecord.dto.ProcurementAddDto;
-import com.ruoyi.procurementrecord.dto.ProcurementRecordOutAdd;
-import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
-import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
-import com.ruoyi.procurementrecord.service.ProcurementRecordOutService;
-import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
-import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.pojo.ShipmentApproval;
-import com.ruoyi.sales.pojo.ShippingInfo;
import com.ruoyi.sales.service.ISalesLedgerProductService;
import com.ruoyi.sales.service.ShipmentApprovalService;
-import com.ruoyi.sales.service.ShippingInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,9 +20,6 @@
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
-import java.math.BigDecimal;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
import java.util.List;
@RestController
@@ -101,7 +87,7 @@
//鍑哄簱
- stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId());
+ stockUtils.addStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId());
}
return AjaxResult.success();
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index 35ac5f5..672fe75 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -37,7 +37,7 @@
/**
* 瀹㈡埛鍚堝悓鍙�
*/
- @Excel(name = "瀹㈡埛鍚堝悓鍙�")
+ @Excel(name = "瀹㈡埛鍚堝悓鍙�", type = Excel.Type.IMPORT)
private String customerContractNo;
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index f596e88..09fba03 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -5,16 +5,15 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
-import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.production.dto.ProductStructureDto;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.service.impl.ProductOrderServiceImpl;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.quality.mapper.QualityInspectMapper;
@@ -25,7 +24,6 @@
import com.ruoyi.sales.mapper.SalesLedgerMapper;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
-import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
import com.ruoyi.sales.pojo.SalesLedger;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.pojo.ShippingInfo;
@@ -92,6 +90,8 @@
private ProductStructureMapper productStructureMapper;
@Autowired
private StockInventoryMapper stockInventoryMapper;
+ @Autowired
+ private ProductOrderServiceImpl productOrderServiceImpl;
@Override
public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
@@ -228,9 +228,7 @@
/*鍒犻櫎瀵瑰簲鐨勭敓浜ф暟鎹苟閲嶆柊鏂板*/
deleteProductionData(Arrays.asList(salesLedgerProduct.getId()));
// 鍒犻櫎鐢熶骇鏍哥畻鏁版嵁
- LambdaQueryWrapper<SalesLedgerProductionAccounting> reportWrapper = new LambdaQueryWrapper<>();
- reportWrapper.in(SalesLedgerProductionAccounting::getSalesLedgerId, salesLedgerId);
- salesLedgerProductionAccountingMapper.delete(reportWrapper);
+
addProductionData(salesLedgerProduct);
}
@@ -272,7 +270,8 @@
productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
productOrder.setProductModelId(salesLedgerProduct.getProductModelId());
productOrder.setSaleLedgerProductId(salesLedgerProduct.getId());
- productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId()));
+ String string = productOrderServiceImpl.generateNextOrderNo(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")));
+ productOrder.setNpsNo(string);
productOrder.setQuantity(salesLedgerProduct.getQuantity());//闇�姹傛暟閲�
productOrder.setCompleteQuantity(BigDecimal.ZERO);//瀹屾垚鏁伴噺
productOrderMapper.insert(productOrder);
@@ -303,13 +302,7 @@
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);
-
+ ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectMax(datePrefix);
int sequenceNumber = 1; // 榛樿搴忓彿
if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
String lastNo = lastWorkOrder.getWorkOrderNo().toString();
@@ -396,9 +389,9 @@
//鍒犻櫎鍑哄簱璁板綍
for (Long productMainId : productMainIds) {
//鍒犻櫎鐢熶骇鍑哄簱璁板綍
- stockUtils.deleteStockOutRecord(productMainId, StockQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
+ stockUtils.deleteStockOutRecord(productMainId, StockOutQualifiedRecordTypeEnum.PRODUCTION_REPORT_STOCK_OUT.getCode());
//鍒犻櫎鎶ュ簾鐨勫叆搴撹褰�
- stockUtils.deleteStockInRecord(productMainId, StockUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
+ stockUtils.deleteStockInRecord(productMainId, StockInUnQualifiedRecordTypeEnum.PRODUCTION_SCRAP.getCode());
}
qualityInspects.forEach(qualityInspect -> {
//inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
@@ -407,6 +400,8 @@
}
});
qualityInspectMapper.deleteByProductMainIds(productMainIds);
+ salesLedgerProductionAccountingMapper.delete(new LambdaQueryWrapper<SalesLedgerProductionAccounting>()
+ .in(SalesLedgerProductionAccounting::getProductMainId, productMainIds));
}
// 鍒犻櫎鐢熶骇涓昏〃鏁版嵁
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index c80ea78..3a42fc7 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -25,6 +25,8 @@
import com.ruoyi.other.pojo.TempFile;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
+import com.ruoyi.production.service.ProductionProductMainService;
+import com.ruoyi.production.service.impl.ProductionProductMainServiceImpl;
import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysUser;
import com.ruoyi.project.system.mapper.SysDeptMapper;
@@ -146,7 +148,9 @@
private ProductMapper productMapper;
@Autowired
private ProductStructureMapper productStructureMapper;
-;
+ @Autowired
+ private ProductionProductMainService productionProductMainService;
+ ;
@Override
public List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto) {
@@ -178,7 +182,7 @@
.eq(ShippingInfo::getSalesLedgerProductId, product.getId())
.orderByDesc(ShippingInfo::getCreateTime)
.last("limit 1"));
- if(shippingInfo != null){
+ if (shippingInfo != null) {
product.setShippingStatus(shippingInfo.getStatus());
}
}
@@ -350,7 +354,7 @@
// // 浜у搧澶х被鏁版嵁
// List<Product> productList = productMapper.selectList(new LambdaQueryWrapper<Product>().in(Product::getProductName,
// salesLedgerProductImportDtoList.stream().map(SalesLedgerImportDto::getProductCategory).collect(Collectors.toList())));
- List<Map<String,Object>> list = productModelMapper.getProductAndModelList();
+ List<Map<String, Object>> list = productModelMapper.getProductAndModelList();
// 褰曞叆浜烘暟鎹�
List<SysUser> sysUsers = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>().in(SysUser::getNickName,
salesLedgerImportDtoList.stream().map(SalesLedgerImportDto::getEntryPerson).collect(Collectors.toList())));
@@ -358,7 +362,7 @@
SalesLedger salesLedger1 = salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>()
.eq(SalesLedger::getSalesContractNo, salesLedgerImportDto.getSalesContractNo())
.last("LIMIT 1"));
- if(salesLedger1 != null){
+ if (salesLedger1 != null) {
continue;
}
SalesLedger salesLedger = new SalesLedger();
@@ -391,7 +395,7 @@
throw new RuntimeException("閿�鍞崟鍙�:" + salesLedgerImportDto.getSalesContractNo() + ",鏃犲搴斾骇鍝佹暟鎹紒");
salesLedger.setContractAmount(salesLedgerProductImportDtos.stream()
.map(SalesLedgerProductImportDto::getTaxInclusiveTotalPrice)
- .reduce(BigDecimal.ZERO,BigDecimal::add));
+ .reduce(BigDecimal.ZERO, BigDecimal::add));
salesLedgerMapper.insert(salesLedger);
@@ -553,25 +557,20 @@
// 鍒犻櫎鍙戣揣鍙拌处璁板綍
List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>()
.in(ShippingInfo::getSalesLedgerId, idList));
- if(CollectionUtils.isNotEmpty(shippingInfos)){
+ if (CollectionUtils.isNotEmpty(shippingInfos)) {
shippingInfoServiceImpl.delete(shippingInfos.stream().map(ShippingInfo::getId).collect(Collectors.toList()));
}
// 鍒犻櫎闄勪欢琛�
commonFileService.deleteByBusinessIds(idList, FileNameType.SALE.getValue());
// 鍒犻櫎鐢熶骇绠℃帶鏁版嵁
- // 鍒犻櫎鐢熶骇璁㈠崟鏁版嵁
- LambdaQueryWrapper<SalesLedgerScheduling> in = new LambdaQueryWrapper<SalesLedgerScheduling>()
- .in(SalesLedgerScheduling::getSalesLedgerId, idList);
- salesLedgerSchedulingMapper.delete(in);
- // 鍒犻櫎鐢熶骇娲惧伐鏁版嵁
- LambdaQueryWrapper<SalesLedgerWork> workOrderWrapper = new LambdaQueryWrapper<>();
- workOrderWrapper.in(SalesLedgerWork::getSalesLedgerId, idList);
- salesLedgerWorkMapper.delete(workOrderWrapper);
- // 鍒犻櫎鐢熶骇鏍哥畻鏁版嵁
- LambdaQueryWrapper<SalesLedgerProductionAccounting> reportWrapper = new LambdaQueryWrapper<>();
- reportWrapper.in(SalesLedgerProductionAccounting::getSalesLedgerId, idList);
- salesLedgerProductionAccountingMapper.delete(reportWrapper);
+ //鏌ヨ鐢熶骇鎶ュ伐id
+ ArrayList<Long> mainIdList = productionProductMainService.listMain(idList);
+ if (CollectionUtils.isNotEmpty(mainIdList)) {
+ mainIdList.stream().forEach(mainId -> {
+ productionProductMainService.removeProductMain(mainId);
+ });
+ }
// 2. 鍐嶅垹闄や富琛ㄦ暟鎹�
return salesLedgerMapper.deleteBatchIds(idList);
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index ea372b0..019320a 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -7,7 +7,7 @@
import com.ruoyi.approve.pojo.ApproveProcess;
import com.ruoyi.approve.service.impl.ApproveProcessServiceImpl;
import com.ruoyi.common.enums.FileNameType;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.other.service.impl.TempFileServiceImpl;
import com.ruoyi.procurementrecord.utils.StockUtils;
import com.ruoyi.sales.dto.ShippingInfoDto;
@@ -66,7 +66,7 @@
//鎵e噺搴撳瓨
if(!"宸插彂璐�".equals(byId.getStatus())){
SalesLedgerProduct salesLedgerProduct = salesLedgerProductMapper.selectById(byId.getSalesLedgerProductId());
- stockUtils.substractStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId());
+ stockUtils.substractStock(salesLedgerProduct.getProductModelId(), salesLedgerProduct.getQuantity(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode(), req.getId());
}
byId.setExpressNumber(req.getExpressNumber());
byId.setExpressCompany(req.getExpressCompany());
@@ -90,7 +90,7 @@
// 鎵e凡鍙戣揣搴撳瓨
for (ShippingInfo shippingInfo : shippingInfos) {
if("宸插彂璐�".equals(shippingInfo.getStatus())) {
- stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode());
+ stockUtils.deleteStockOutRecord(shippingInfo.getId(), StockOutQualifiedRecordTypeEnum.SALE_SHIP_STOCK_OUT.getCode());
}
}
// 鍒犻櫎鍙戣揣瀹℃壒
diff --git a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
index f4bd009..70f638e 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -2,7 +2,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
@@ -46,7 +47,7 @@
@PostMapping("/addstockInventory")
@ApiOperation("鏂板搴撳瓨")
public R addstockInventory(@RequestBody StockInventoryDto stockInventoryDto) {
- stockInventoryDto.setRecordType(String.valueOf(StockQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode()));
+ stockInventoryDto.setRecordType(String.valueOf(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode()));
stockInventoryDto.setRecordId(0L);
return R.ok(stockInventoryService.addstockInventory(stockInventoryDto));
}
@@ -55,7 +56,7 @@
@PostMapping("/subtractStockInventory")
@ApiOperation("鎵e噺搴撳瓨")
public R subtractStockInventory(@RequestBody StockInventoryDto stockInventoryDto) {
- stockInventoryDto.setRecordType(String.valueOf(StockQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_OUT.getCode()));
+ stockInventoryDto.setRecordType(String.valueOf(StockOutQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_OUT.getCode()));
stockInventoryDto.setRecordId(0L);
return R.ok(stockInventoryService.subtractStockInventory(stockInventoryDto));
}
diff --git a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
index 43714ca..39401c4 100644
--- a/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
+++ b/src/main/java/com/ruoyi/stock/controller/StockUninventoryController.java
@@ -2,7 +2,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutUnQualifiedRecordTypeEnum;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.stock.dto.StockInventoryDto;
import com.ruoyi.stock.dto.StockUninventoryDto;
@@ -37,7 +38,7 @@
@PostMapping("/addstockUninventory")
@ApiOperation("鏂板搴撳瓨")
public R addstockUninventory(@RequestBody StockUninventoryDto stockUninventoryDto) {
- stockUninventoryDto.setRecordType(String.valueOf(StockUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_IN.getCode()));
+ stockUninventoryDto.setRecordType(String.valueOf(StockInUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_IN.getCode()));
stockUninventoryDto.setRecordId(0L);
return R.ok(stockUninventoryService.addStockUninventory(stockUninventoryDto));
}
@@ -46,7 +47,7 @@
@PostMapping("/subtractstockUninventory")
@ApiOperation("鎵e噺搴撳瓨")
public R subtractstockUninventory(@RequestBody StockUninventoryDto stockUninventoryDto) {
- stockUninventoryDto.setRecordType(String.valueOf(StockUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode()));
+ stockUninventoryDto.setRecordType(String.valueOf(StockOutUnQualifiedRecordTypeEnum.CUSTOMIZATION_UNSTOCK_OUT.getCode()));
stockUninventoryDto.setRecordId(0L);
return R.ok(stockUninventoryService.subtractStockUninventory(stockUninventoryDto));
}
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
index ce6241a..30e545f 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -4,8 +4,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.common.utils.OrderUtils;
@@ -102,9 +102,9 @@
List<StockInRecordExportData> list = stockInRecordMapper.listStockInRecordExportData(stockInRecordDto);
for (StockInRecordExportData stockInRecordExportData : list) {
if (stockInRecordExportData.getType().equals("0")) {
- stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
+ stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
}else {
- stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
+ stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockInUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
}
}
ExcelUtil<StockInRecordExportData> util = new ExcelUtil<>(StockInRecordExportData.class);
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
index 4c89975..5cb6dda 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -5,7 +5,8 @@
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
@@ -127,7 +128,7 @@
item.getSpecificationModel().equals(dto.getModel())) {
StockInventoryDto stockInventoryDto = new StockInventoryDto();
stockInventoryDto.setRecordId(0L);
- stockInventoryDto.setRecordType(StockQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode());
+ stockInventoryDto.setRecordType(StockInQualifiedRecordTypeEnum.CUSTOMIZATION_STOCK_IN.getCode());
stockInventoryDto.setQualitity(dto.getQualitity());
stockInventoryDto.setRemark(dto.getRemark());
stockInventoryDto.setWarnNum(dto.getWarnNum());
diff --git a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
index f46f4c0..e01fe5d 100644
--- a/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -4,8 +4,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ruoyi.common.enums.StockQualifiedRecordTypeEnum;
-import com.ruoyi.common.enums.StockUnQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
+import com.ruoyi.common.enums.StockInUnQualifiedRecordTypeEnum;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.EnumUtil;
import com.ruoyi.common.utils.OrderUtils;
@@ -105,9 +105,9 @@
List<StockOutRecordExportData> list = stockOutRecordMapper.listStockOutRecordExportData(stockOutRecordDto);
for (StockOutRecordExportData stockInRecordExportData : list) {
if (stockInRecordExportData.getType().equals("0")) {
- stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
+ stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockOutQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
}else {
- stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
+ stockInRecordExportData.setRecordType(EnumUtil.fromCode(StockInUnQualifiedRecordTypeEnum.class, Integer.parseInt(stockInRecordExportData.getRecordType())).getValue());
}
}
ExcelUtil<StockOutRecordExportData> util = new ExcelUtil<>(StockOutRecordExportData.class);
diff --git a/src/main/resources/application-zxsq.yml b/src/main/resources/application-zxsq.yml
new file mode 100644
index 0000000..8ec1cb6
--- /dev/null
+++ b/src/main/resources/application-zxsq.yml
@@ -0,0 +1,245 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: /javaWork/product-inventory-management/file
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+ # 鍗忓悓瀹℃壒缂栧彿鍓嶇紑(閰嶇疆鏂囦欢鍚庣紑鍛藉悕)
+ approvalNumberPrefix: NEW
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 9005
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: jxc
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://172.17.0.1:3306/product-inventory-management-zxsq?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+ # host: 127.0.0.1
+ host: 172.17.0.1
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 1
+ # 瀵嗙爜
+ # password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+ # Quartz瀹氭椂浠诲姟閰嶇疆锛堟柊澧為儴鍒嗭級
+ quartz:
+ job-store-type: jdbc # 浣跨敤鏁版嵁搴撳瓨鍌�
+ jdbc:
+ initialize-schema: never # 棣栨杩愯鏃惰嚜鍔ㄥ垱寤鸿〃缁撴瀯锛屾垚鍔熷悗鏀逛负never
+ schema: classpath:org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql # MySQL琛ㄧ粨鏋勮剼鏈�
+ properties:
+ org:
+ quartz:
+ scheduler:
+ instanceName: RuoYiScheduler
+ instanceId: AUTO
+ jobStore:
+ class: org.quartz.impl.jdbcjobstore.JobStoreTX
+ driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate # MySQL閫傞厤
+ tablePrefix: qrtz_ # 琛ㄥ悕鍓嶇紑锛屼笌鑴氭湰涓�鑷�
+ isClustered: false # 鍗曡妭鐐规ā寮忥紙闆嗙兢闇�鏀逛负true锛�
+ clusterCheckinInterval: 10000
+ txIsolationLevelSerializable: true
+ threadPool:
+ class: org.quartz.simpl.SimpleThreadPool
+ threadCount: 10 # 绾跨▼姹犲ぇ灏�
+ threadPriority: 5
+ makeThreadsDaemons: true
+ updateCheck: false # 鍏抽棴鐗堟湰妫�鏌�
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: /javaWork/product-inventory-management/file/temp/uploads
+ upload-dir: /javaWork/product-inventory-management/file/prod/uploads
\ No newline at end of file
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
index 2581105..fdcb54e 100644
--- a/src/main/resources/mapper/production/ProductOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -17,8 +17,9 @@
select po.*,
sl.sales_contract_no,
sl.customer_name,
- slp.product_category,
- slp.specification_model,
+ p.product_name as product_category,
+ pm.model as specification_model,
+ pm.unit,
ppr.process_route_code,
pb.bom_no,
ROUND(po.complete_quantity / po.quantity * 100, 2) AS completionStatus,
@@ -38,6 +39,8 @@
FROM shipping_info
GROUP BY sales_ledger_id
) shipping_status_counts ON sl.id = shipping_status_counts.sales_ledger_id
+ left join product_model pm on po.product_model_id = pm.id
+ left join product p on pm.product_id = p.id
left join sales_ledger_product slp on po.sale_ledger_product_id = slp.id
left join product_process_route ppr on po.id = ppr.product_order_id
left join product_bom pb on pb.id = ppr.bom_id
@@ -66,8 +69,7 @@
select pr.*
from process_route pr
left join product_model pm on pr.product_model_id = pm.id
- left join sales_ledger_product slp on pm.id = slp.product_model_id
- where slp.id = #{productModelId}
+ where pm.id = #{productModelId}
</select>
<select id="listProcessBom" resultType="com.ruoyi.production.dto.ProductStructureDto">
select ps.id,
diff --git a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
index fef6bef..14b883e 100644
--- a/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
+++ b/src/main/resources/mapper/production/ProductWorkOrderMapper.xml
@@ -87,4 +87,12 @@
actual_start_time >= #{startDate}
AND actual_start_time <= #{endDate}
</select>
+ <select id="selectMax" resultType="com.ruoyi.production.pojo.ProductWorkOrder">
+ SELECT SUBSTRING(work_order_no, 3) as work_order_no
+ FROM product_work_order
+ WHERE SUBSTRING(work_order_no, 3) like concat(#{datePrefix},'%')
+ order by work_order_no desc
+ limit 1
+ ;
+ </select>
</mapper>
diff --git a/src/main/resources/mapper/production/ProductionProductMainMapper.xml b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
index 1cfc0d8..9c3bf3d 100644
--- a/src/main/resources/mapper/production/ProductionProductMainMapper.xml
+++ b/src/main/resources/mapper/production/ProductionProductMainMapper.xml
@@ -71,7 +71,7 @@
slpa.work_hours * slpa.finished_num AS wages
FROM
production_product_main ppm
- LEFT JOIN sales_ledger_production_accounting slpa ON slpa.sales_ledger_work_id = ppm.id
+ LEFT JOIN sales_ledger_production_accounting slpa ON slpa.product_main_id = ppm.id
LEFT JOIN production_product_output ppo ON ppm.id = ppo.product_main_id
LEFT JOIN product_work_order pwo ON pwo.id = ppm.work_order_id
LEFT JOIN product_order po ON po.id = pwo.product_order_id
@@ -93,6 +93,20 @@
</if>
</where>
</select>
+ <select id="listMain" resultType="java.lang.Long">
+ SELECT ppm.id FROM production_product_main ppm
+ left join product_work_order pwo on pwo.id = ppm.work_order_id
+ left join product_order po on po.id = pwo.product_order_id
+ left join sales_ledger sl on sl.id = po.sales_ledger_id
+ <where>
+ <if test="idList != null and idList.size() > 0">
+ and sl.id in
+ <foreach item="id" collection="idList" open="(" separator="," close=")">
+ #{id}
+ </foreach>
+ </if>
+ </where>
+ </select>
<delete id="deleteByWorkOrderIds" parameterType="java.util.List">
DELETE FROM production_product_main
diff --git a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
index 3535b77..fdbe7cc 100644
--- a/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerProductionAccountingMapper.xml
@@ -68,7 +68,7 @@
'%'
) as output_rate
FROM sales_ledger_production_accounting slpa
- LEFT JOIN production_product_main ppm ON slpa.sales_ledger_work_id = ppm.id
+ LEFT JOIN production_product_main ppm ON slpa.product_main_id = ppm.id
LEFT JOIN production_product_output ppout ON ppm.id = ppout.product_main_id
<where>
<if test="ew.schedulingUserName != null and ew.schedulingUserName !=''">
diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
index b8defca..c5c007e 100644
--- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
+++ b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml
@@ -199,6 +199,7 @@
</where>
GROUP BY T1.supplier_name
</select>
+
<select id="supplierNameListPageDetails" resultType="com.ruoyi.purchase.dto.PaymentRegistrationDto">
SELECT
T1.supplier_id,
@@ -209,7 +210,7 @@
T1.purchase_contract_number,
T2.payment_date
FROM purchase_ledger T1
- LEFT JOIN payment_registration T2 ON T1.id = T2.purchase_ledger_id
+ INNER JOIN payment_registration T2 ON T1.id = T2.purchase_ledger_id
<where>
T1.supplier_id = #{req.supplierId}
<if test="req.supplierName != null and req.supplierName != '' ">
diff --git a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
index 6cbad29..98c2675 100644
--- a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
+++ b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml
@@ -28,7 +28,8 @@
pl.approve_user_ids,
sm.is_white,
pl.approval_status,
- pl.payment_method
+ pl.payment_method,
+ pl.remarks
from purchase_ledger pl
left join sales_ledger_product slp on slp.sales_ledger_id = pl.id and slp.type=2
left join product_record pr on pl.id = pr.purchase_ledger_id
diff --git a/src/main/resources/mapper/quality/QualityInspectMapper.xml b/src/main/resources/mapper/quality/QualityInspectMapper.xml
index 0efab8c..48fb369 100644
--- a/src/main/resources/mapper/quality/QualityInspectMapper.xml
+++ b/src/main/resources/mapper/quality/QualityInspectMapper.xml
@@ -3,30 +3,49 @@
<mapper namespace="com.ruoyi.quality.mapper.QualityInspectMapper">
<select id="qualityInspectListPage" resultType="com.ruoyi.quality.pojo.QualityInspect">
SELECT
- *
- FROM quality_inspect
- where
+ qi.*,
+ <choose>
+ <when test="qualityInspect.inspectType == 0">
+ pl.purchase_contract_number as purchase_contract_no
+ </when>
+ <otherwise>
+ pwo.work_order_no
+ </otherwise>
+ </choose>
+ FROM
+ quality_inspect qi
+ <choose>
+ <when test="qualityInspect.inspectType == 0 ">
+ LEFT JOIN purchase_ledger pl ON pl.id = qi.purchase_ledger_id
+ </when>
+ <otherwise>
+ LEFT JOIN production_product_main ppm ON qi.product_main_id = ppm.id
+ LEFT JOIN product_work_order pwo ON ppm.work_order_id = pwo.id
+ </otherwise>
+ </choose>
+ WHERE
inspect_type=#{qualityInspect.inspectType}
<if test="qualityInspect.supplier != null and qualityInspect.supplier != '' ">
- AND supplier like concat('%',#{qualityInspect.supplier},'%')
+ AND qi.supplier like concat('%',#{qualityInspect.supplier},'%')
</if>
<if test="qualityInspect.customer != null and qualityInspect.customer != '' ">
- AND customer like concat('%',#{qualityInspect.customer},'%')
+ AND qi.customer like concat('%',#{qualityInspect.customer},'%')
</if>
<if test="qualityInspect.process != null and qualityInspect.process != '' ">
- AND process like concat('%',#{qualityInspect.process},'%')
+ AND qi.process like concat('%',#{qualityInspect.process},'%')
</if>
<if test="qualityInspect.productName != null and qualityInspect.productName != '' ">
- AND product_name like concat('%',#{qualityInspect.productName},'%')
+ AND qi.product_name like concat('%',#{qualityInspect.productName},'%')
</if>
<if test="qualityInspect.entryDateStart != null and qualityInspect.entryDateStart != '' ">
- AND check_time >= DATE_FORMAT(#{qualityInspect.entryDateStart},'%Y-%m-%d')
+ AND qi.check_time >= DATE_FORMAT(#{qualityInspect.entryDateStart},'%Y-%m-%d')
</if>
<if test="qualityInspect.entryDateEnd != null and qualityInspect.entryDateEnd != '' ">
- AND check_time <= DATE_FORMAT(#{qualityInspect.entryDateEnd},'%Y-%m-%d')
+ AND qi.check_time <= DATE_FORMAT(#{qualityInspect.entryDateEnd},'%Y-%m-%d')
</if>
- ORDER BY check_time DESC
+ ORDER BY qi.check_time DESC
</select>
+
<select id="qualityInspectExport" resultType="com.ruoyi.quality.pojo.QualityInspect">
SELECT
*
diff --git a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
index 91fd041..355402e 100644
--- a/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
+++ b/src/main/resources/mapper/sales/ReceiptPaymentMapper.xml
@@ -432,22 +432,23 @@
</where>
</select>
+
<select id="invoiceLedgerSalesAccount" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto">
SELECT
T1.sales_contract_no,
- SUM(contract_amount) AS invoice_total,
- IFNULL( SUM(T2.receipt_payment_amount) , 0 ) AS receipt_payment_amount,
- IFNULL((IFNULL(SUM(contract_amount),0) - IFNULL(SUM(T2.receipt_payment_amount),0)),0) AS unReceipt_payment_amount,
+ T1.contract_amount AS invoice_total,
+ IFNULL(SUM(T2.receipt_payment_amount), 0) AS receipt_payment_amount,
+ IFNULL((T1.contract_amount - IFNULL(SUM(T2.receipt_payment_amount), 0)), 0) AS unReceipt_payment_amount,
T2.receipt_payment_date
FROM sales_ledger T1
- LEFT JOIN receipt_payment T2 ON T1.id = T2.sales_ledger_id
+ INNER JOIN receipt_payment T2 ON T1.id = T2.sales_ledger_id
<where>
T1.customer_id = #{invoiceLedgerDto.customerId}
<if test="invoiceLedgerDto.searchText != null and invoiceLedgerDto.searchText != '' ">
- T1.customer_name LIKE CONCAT ('%',#{invoiceLedgerDto.searchText},'%')
+ AND T1.customer_name LIKE CONCAT ('%', #{invoiceLedgerDto.searchText}, '%')
</if>
</where>
- GROUP BY T1.sales_contract_no,T2.receipt_payment_date
+ GROUP BY T1.id, T1.sales_contract_no, T1.contract_amount, T2.receipt_payment_date
</select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3