From 56c6afb58c29c785b0a363d1dac183c4b1b2e1aa Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期六, 17 一月 2026 15:53:31 +0800
Subject: [PATCH] Merge branch 'jtwy' into dev_New
---
src/main/java/com/ruoyi/production/controller/ProductProcessController.java | 5
src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java | 4
src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java | 9
src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java | 15 +
src/main/java/com/ruoyi/production/pojo/ProductOrder.java | 2
src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java | 10 +
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 242 +++++++++++++++++------
src/main/java/com/ruoyi/production/controller/ProcessRouteController.java | 7
src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java | 3
src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java | 23 ++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 175 +----------------
src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java | 18 +
src/main/java/com/ruoyi/production/controller/ProductBomController.java | 8
src/main/java/com/ruoyi/production/service/ProcessRouteService.java | 4
src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java | 27 ++
src/main/java/com/ruoyi/production/service/ProductProcessService.java | 2
16 files changed, 311 insertions(+), 243 deletions(-)
diff --git a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
index 31ff3fb..50ac4a8 100644
--- a/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProcessRouteController.java
@@ -23,9 +23,6 @@
@Autowired
private ProcessRouteService processRouteService;
- @Autowired
- private ProcessRouteItemService processRouteItemService;
-
@GetMapping("page")
@ApiOperation("鍒嗛〉鏌ヨ")
public R page(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
@@ -45,8 +42,6 @@
@ApiOperation("鍒犻櫎宸ヨ壓璺嚎")
@DeleteMapping("/{ids}")
public R delete(@PathVariable("ids") Long[] ids) {
- //鍒犻櫎宸ヨ壓璺嚎璇︽儏
- processRouteItemService.remove(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId,Arrays.asList(ids)));
- return R.ok(processRouteService.removeBatchByIds(Arrays.asList(ids)));
+ return R.ok(processRouteService.batchDelete(Arrays.asList(ids)));
}
}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductBomController.java b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
index b8d9416..7279862 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductBomController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductBomController.java
@@ -11,8 +11,10 @@
import com.ruoyi.production.pojo.ProcessRoute;
import com.ruoyi.production.pojo.ProductBom;
import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductProcessRoute;
import com.ruoyi.production.service.ProcessRouteService;
import com.ruoyi.production.service.ProductBomService;
+import com.ruoyi.production.service.ProductProcessRouteService;
import com.ruoyi.production.service.ProductProcessService;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
@@ -39,6 +41,9 @@
@Autowired
private ProcessRouteService processRouteService;
+
+ @Autowired
+ private ProductProcessRouteService productProcessRouteService;
@GetMapping("/listPage")
@Log(title = "BOM-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
@@ -67,7 +72,8 @@
@Log(title = "鍒犻櫎", businessType = BusinessType.DELETE)
public AjaxResult batchDelete(@RequestBody List<Integer> ids) {
List<ProcessRoute> list = processRouteService.list(Wrappers.<ProcessRoute>lambdaQuery().in(ProcessRoute::getBomId, ids));
- if (list.size()>0){
+ List<ProductProcessRoute> list2 = productProcessRouteService.list(Wrappers.<ProductProcessRoute>lambdaQuery().in(ProductProcessRoute::getBomId, ids));
+ if (list.size()>0 || list2.size()>0){
return AjaxResult.error("璇OM宸茬粡瀛樺湪瀵瑰簲鐨勫伐鑹鸿矾绾�,鏃犳硶杩涜鍒犻櫎");
}
if(CollectionUtils.isEmpty(ids)){
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
index cff0c60..c25f2cc 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessController.java
@@ -59,10 +59,7 @@
@DeleteMapping("/batchDelete")
@Log(title = "鍒犻櫎", businessType = BusinessType.DELETE)
public AjaxResult batchDelete(@RequestBody List<Integer> ids) {
- if(CollectionUtils.isEmpty(ids)){
- return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
- }
- return AjaxResult.success(productProcessService.removeBatchByIds(ids));
+ return AjaxResult.success(productProcessService.batchDelete(ids));
}
@ApiOperation("鏌ヨ鎵�鏈夊伐搴�")
diff --git a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
index 948d6de..b32af78 100644
--- a/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
+++ b/src/main/java/com/ruoyi/production/controller/ProductionProductMainController.java
@@ -1,9 +1,11 @@
package com.ruoyi.production.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.R;
import com.ruoyi.production.dto.ProductProcessRouteItemDto;
import com.ruoyi.production.dto.ProductionProductMainDto;
+import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
import com.ruoyi.production.service.ProductionProductMainService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -11,6 +13,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
+import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
import java.util.List;
@@ -49,4 +52,16 @@
public R delete(@RequestBody ProductionProductMainDto productionProductMainDto) {
return R.ok(productionProductMainService.removeProductMain(productionProductMainDto));
}
+
+
+ /**
+ * 瀵煎嚭
+ */
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, ProductionProductMainDto productionProductMainDto) {
+ List<ProductionProductMainDto> list;
+ list = productionProductMainService.listPageProductionProductMainDto(new Page<>(1, -1), productionProductMainDto).getRecords();
+ ExcelUtil<ProductionProductMainDto> util = new ExcelUtil<ProductionProductMainDto>(ProductionProductMainDto.class);
+ util.exportExcel(response, list, "鐢熶骇鎶ュ伐鏁版嵁");
+ }
}
diff --git a/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java b/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
index ed7ac26..0473c3a 100644
--- a/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
+++ b/src/main/java/com/ruoyi/production/controller/SalesLedgerProductionAccountingController.java
@@ -2,10 +2,13 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountExpense;
+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.ProductOrderDto;
import com.ruoyi.production.dto.SalesLedgerProductionAccountingDto;
import com.ruoyi.production.pojo.SalesLedgerProductionAccounting;
import com.ruoyi.production.service.impl.SalesLedgerProductionAccountingServiceImpl;
@@ -13,8 +16,12 @@
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
/**
* @author :yys
@@ -36,4 +43,15 @@
return AjaxResult.success(list);
}
+ /**
+ * 瀵煎嚭
+ */
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, SalesLedgerProductionAccountingDto salesLedgerProductionAccountingDto) {
+ List<SalesLedgerProductionAccountingDto> list;
+ list = salesLedgerProductionAccountingService.listPage(new Page<>(1, -1), salesLedgerProductionAccountingDto).getRecords();
+ ExcelUtil<SalesLedgerProductionAccountingDto> util = new ExcelUtil<SalesLedgerProductionAccountingDto>(SalesLedgerProductionAccountingDto.class);
+ util.exportExcel(response, list, "鐢熶骇鏍哥畻鏁版嵁");
+ }
+
}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
index 3e171bc..843e4a6 100644
--- a/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProductionProductMainDto.java
@@ -1,5 +1,7 @@
package com.ruoyi.production.dto;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.production.pojo.ProductionProductMain;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -8,28 +10,36 @@
import java.time.LocalDateTime;
@Data
+@ExcelIgnoreUnannotated
public class ProductionProductMainDto extends ProductionProductMain {
@ApiModelProperty(value = "宸ュ崟缂栧彿")
+ @Excel(name = "宸ュ崟缂栧彿")
private String workOrderNo;
@ApiModelProperty(value = "宸ュ崟鐘舵��")
private String workOrderStatus;
@ApiModelProperty(value = "鎶ュ伐浜哄憳鏄电О")
+ @Excel(name = "鎶ュ伐浜�")
private String nickName;
@ApiModelProperty(value = "鎶ュ伐鏁伴噺")
+ @Excel(name = "鎶ュ伐鏁伴噺")
private BigDecimal quantity;
//浜у搧鍚嶇О
+ @Excel(name = "浜у搧鍚嶇О")
private String productName;
//浜у搧瑙勬牸鍨嬪彿
+ @Excel(name = "浜у搧瑙勬牸鍨嬪彿")
private String productModelName;
//鍗曚綅
+ @Excel(name = "鍗曚綅")
private String unit;
//閿�鍞悎鍚屽彿
+ @Excel(name = "閿�鍞悎鍚屽彿")
private String salesContractNo;
}
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
index 297f6b9..6707622 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerProductionAccountingDto.java
@@ -1,5 +1,7 @@
package com.ruoyi.production.dto;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -12,6 +14,7 @@
*/
@Data
@ApiModel
+@ExcelIgnoreUnannotated
public class SalesLedgerProductionAccountingDto extends SalesLedgerProductDto{
/**
@@ -24,6 +27,7 @@
* 鎺掍骇浜哄悕绉�
*/
@ApiModelProperty(value = "鐢熶骇浜哄悕绉�")
+ @Excel(name = "鐢熶骇浜�")
private String schedulingUserName;
@@ -31,29 +35,34 @@
* 宸ヨ祫
*/
@ApiModelProperty(value = "宸ヨ祫")
+ @Excel(name = "宸ヨ祫")
private BigDecimal wages;
/**
* 鐢熶骇鏁伴噺
*/
@ApiModelProperty(value = "鐢熶骇鏁伴噺")
+ @Excel(name = "鐢熶骇鏁伴噺")
private BigDecimal finishedNum;
/**
* 宸ユ椂瀹氶
*/
@ApiModelProperty(value = "宸ユ椂瀹氶")
+ @Excel(name = "宸ユ椂瀹氶")
private BigDecimal workHours;
/**
* 宸ュ簭
*/
@ApiModelProperty(value = "宸ュ簭")
+ @Excel(name = "宸ュ簭")
private String process;
/**
* 鎺掍骇鏃ユ湡
*/
@ApiModelProperty(value = "鎺掍骇鏃ユ湡")
+ @Excel(name = "鐢熶骇鏃ユ湡")
private String schedulingDate;
@ApiModelProperty(value = "寮�濮嬫椂闂�")
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
index c729ea9..dae49a7 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -34,7 +34,7 @@
private Long productModelId;
/**
- * 宸ヨ壓璺嚎id
+ * 妯$増鐨勫伐鑹鸿矾绾縤d
*/
@ApiModelProperty(value = "宸ヨ壓璺嚎id")
private Long routeId;
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
index 2b7a20d..2064e04 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductionProductMain.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
@@ -16,6 +17,7 @@
private Long id;
@ApiModelProperty(value = "鎶ュ伐鍗曞彿")
+ @Excel(name = "鎶ュ伐鍗曞彿")
private String productNo;
@ApiModelProperty(value = "鎶ュ伐浜哄憳id")
@@ -37,6 +39,7 @@
@TableField(fill = FieldFill.INSERT)
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "鍒涘缓鏃堕棿")
private LocalDateTime createTime;
@ApiModelProperty(value = "鏇存柊鏃堕棿")
diff --git a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
index bd26b0b..6b408cf 100644
--- a/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
+++ b/src/main/java/com/ruoyi/production/service/ProcessRouteService.java
@@ -7,9 +7,13 @@
import com.ruoyi.production.pojo.ProcessRoute;
import io.swagger.models.auth.In;
+import java.util.List;
+
public interface ProcessRouteService extends IService<ProcessRoute> {
IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto);
Integer saveProcessRoute(ProcessRoute processRoute);
+
+ int batchDelete(List<Long> ids);
}
diff --git a/src/main/java/com/ruoyi/production/service/ProductProcessService.java b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
index a5ab6c3..8b61bdd 100644
--- a/src/main/java/com/ruoyi/production/service/ProductProcessService.java
+++ b/src/main/java/com/ruoyi/production/service/ProductProcessService.java
@@ -23,4 +23,6 @@
AjaxResult add(ProductProcessDto productProcessDto);
AjaxResult importData(MultipartFile file);
+
+ String batchDelete(List<Integer> ids);
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
index a5427d2..b3beded 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProcessRouteServiceImpl.java
@@ -1,11 +1,18 @@
package com.ruoyi.production.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
+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.production.dto.ProcessRouteDto;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
import com.ruoyi.production.mapper.ProcessRouteMapper;
+import com.ruoyi.production.mapper.ProductOrderMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteMapper;
import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.production.pojo.ProcessRouteItem;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.pojo.ProductProcessRoute;
import com.ruoyi.production.service.ProcessRouteService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -15,6 +22,8 @@
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
+import java.util.List;
@Service
@AllArgsConstructor
@@ -23,6 +32,12 @@
@Autowired
private ProcessRouteMapper processRouteMapper;
+
+ @Autowired
+ private ProcessRouteItemMapper processRouteItemMapper;
+
+ @Autowired
+ private ProductOrderMapper productOrderMapper;
@Override
public IPage<ProcessRouteDto> pageProcessRouteDto(Page<ProcessRouteDto> page, ProcessRouteDto processRouteDto) {
@@ -40,4 +55,16 @@
processRoute.setProcessRouteCode(newProductCode);
return processRouteMapper.updateById(processRoute);
}
+
+ @Override
+ public int batchDelete(List<Long> ids) {
+ //鍏堝垽鏂槸鍚﹀凡缁忓紩鐢ㄤ簡
+ List<ProductOrder> productOrders = productOrderMapper.selectList(Wrappers.<ProductOrder>lambdaQuery().in(ProductOrder::getRouteId, ids));
+ if (productOrders.size()>0){
+ throw new RuntimeException("璇ュ伐鑹鸿矾绾跨敓浜у凡寮曠敤锛屼笉鑳藉垹闄�");
+ }
+ //鍒犻櫎宸ヨ壓璺嚎璇︽儏
+ processRouteItemMapper.delete(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getRouteId, ids));
+ return processRouteMapper.deleteBatchIds(ids);
+ }
}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
index 6a8cf73..1f6dd1b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessServiceImpl.java
@@ -2,14 +2,19 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+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.basic.pojo.Customer;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.production.dto.ProductProcessDto;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
import com.ruoyi.production.mapper.ProductProcessMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
+import com.ruoyi.production.pojo.ProcessRouteItem;
import com.ruoyi.production.pojo.ProductProcess;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
import com.ruoyi.production.service.ProductProcessService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +28,10 @@
public class ProductProcessServiceImpl extends ServiceImpl<ProductProcessMapper, ProductProcess> implements ProductProcessService {
@Autowired
private ProductProcessMapper productProcessMapper;
+ @Autowired
+ private ProcessRouteItemMapper processRouteItemMapper;
+ @Autowired
+ private ProductProcessRouteItemMapper productProcessRouteItemMapper;
@Override
public IPage<ProductProcessDto> listPage(Page page, ProductProcessDto productProcessDto) {
@@ -34,7 +43,7 @@
ProductProcess productProcess = new ProductProcess();
BeanUtils.copyProperties(productProcessDto,productProcess);
boolean save = productProcessMapper.insert(productProcess) > 0;
- if (save && ObjectUtils.isNotNull(productProcessDto.getNo())) {
+ if (save && ObjectUtils.isNull(productProcessDto.getNo())) {
// 鏍规嵁id鐢熸垚no瀛楁锛欸X + 8浣嶆暟瀛楋紙涓嶈冻8浣嶅墠闈㈣ˉ0锛�
String no = "GX" + String.format("%08d", productProcess.getId());
productProcess.setNo(no);
@@ -60,4 +69,16 @@
return AjaxResult.error("瀵煎叆澶辫触");
}
}
+
+ @Override
+ public String batchDelete(List<Integer> ids) {
+ //鏌ヨ鏄惁鐢熶骇涓凡缁忓紩鐢ㄤ簡杩欎簺宸ュ簭
+ List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(Wrappers.<ProcessRouteItem>lambdaQuery().in(ProcessRouteItem::getProcessId, ids));
+ List<ProductProcessRouteItem> productProcessRouteItems = productProcessRouteItemMapper.selectList(Wrappers.<ProductProcessRouteItem>lambdaQuery().in(ProductProcessRouteItem::getProcessId, ids));
+ if (!CollectionUtils.isEmpty(processRouteItems) || !CollectionUtils.isEmpty(productProcessRouteItems)){
+ throw new RuntimeException("璇ュ伐搴忓凡缁忚浣跨敤锛屾棤娉曞垹闄�");
+ }
+ productProcessMapper.deleteBatchIds(ids);
+ return null;
+ }
}
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 9beb28d..67d8bba 100644
--- a/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductionProductMainServiceImpl.java
@@ -157,10 +157,10 @@
Product product = productMapper.selectById(productModel1.getProductId());
BigDecimal stockQuantity = stockUtils.getStockQuantity(productModel1.getId()).get("stockQuantity");
if (!(stockQuantity.compareTo(BigDecimal.ZERO) > 0)) {
- throw new RuntimeException(product.getProductName() + "搴撳瓨涓�0");
+ throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹负0");
}
if (stockQuantity.compareTo(productStructureDto.getUnitQuantity().multiply(dto.getQuantity())) < 0) {
- throw new RuntimeException(product.getProductName() + "搴撳瓨涓嶈冻");
+ throw new RuntimeException(product.getProductName()+"浜у搧鐨�"+productModel1.getModel() + "鐨勮鏍煎簱瀛樹笉瓒�");
}
ProductionProductInput productionProductInput = new ProductionProductInput();
productionProductInput.setProductModelId(productStructureDto.getProductModelId());
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 d4ad7e0..e805784 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -5,12 +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.utils.StringUtils;
import com.ruoyi.production.mapper.*;
import com.ruoyi.production.pojo.*;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
+import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.mapper.InvoiceRegistrationProductMapper;
@@ -45,6 +48,7 @@
public class SalesLedgerProductServiceImpl extends ServiceImpl<SalesLedgerProductMapper, SalesLedgerProduct> implements ISalesLedgerProductService {
private SalesLedgerProductMapper salesLedgerProductMapper;
+ private SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
private SalesLedgerMapper salesLedgerMapper;
@@ -62,6 +66,10 @@
private ProductProcessRouteMapper productProcessRouteMapper;
private ProductWorkOrderMapper productWorkOrderMapper;
+ private ProductionProductMainMapper productionProductMainMapper;
+ private ProductionProductOutputMapper productionProductOutputMapper;
+ private ProductionProductInputMapper productionProductInputMapper;
+ private QualityInspectMapper qualityInspectMapper;
@Override
public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
@@ -205,76 +213,18 @@
Long salesLedgerId = salesLedgerProduct.getSalesLedgerId();
if (salesLedgerProduct.getId() == null) {
result = salesLedgerProductMapper.insert(salesLedgerProduct);
- ProductOrder productOrder = new ProductOrder();
- productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
- productOrder.setProductModelId(salesLedgerProduct.getId());
- productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId()));
- productOrder.setQuantity(salesLedgerProduct.getQuantity());//闇�姹傛暟閲�
- productOrder.setCompleteQuantity(BigDecimal.ZERO);//瀹屾垚鏁伴噺
- productOrderMapper.insert(productOrder);
-
- ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()));
- if (processRoute != null) {
- //鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎涓昏〃
- ProductProcessRoute productProcessRoute = new ProductProcessRoute();
- productProcessRoute.setProductModelId(processRoute.getProductModelId());
- productProcessRoute.setProcessRouteCode(processRoute.getProcessRouteCode());
- productProcessRoute.setProductOrderId(productOrder.getId());
- productProcessRoute.setBomId(processRoute.getBomId());
- productProcessRouteMapper.insert(productProcessRoute);
- //鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎瀛愯〃
- List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
- // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
- String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
- for (ProcessRouteItem processRouteItem : processRouteItems) {
- ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
- productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId());
- productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
- productProcessRouteItem.setProductOrderId(productOrder.getId());
- productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
- int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
- if (insert > 0) {
- // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
- QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
- queryWrapper.likeRight("work_order_no", datePrefix)
- .orderByDesc("work_order_no")
- .last("LIMIT 1");
-
- ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
-
- int sequenceNumber = 1; // 榛樿搴忓彿
- if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
- String lastNo = lastWorkOrder.getWorkOrderNo().toString();
- if (lastNo.startsWith(datePrefix)) {
- String seqStr = lastNo.substring(datePrefix.length());
- try {
- sequenceNumber = Integer.parseInt(seqStr) + 1;
- } catch (NumberFormatException e) {
- sequenceNumber = 1;
- }
- }
- }
- // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
- String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
- ProductWorkOrder productWorkOrder = new ProductWorkOrder();
- productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
- productWorkOrder.setProductOrderId(productOrder.getId());
- productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
- productWorkOrder.setWorkOrderNo(workOrderNoStr);
- productWorkOrder.setStatus(1);
-
- productWorkOrderMapper.insert(productWorkOrder);
- }
-
- }
- productOrder.setRouteId(processRoute.getId());
- productOrderMapper.updateById(productOrder);
- }
-
-
+ addProductionData(salesLedgerProduct);
} else {
+ //鏌ヨ鍘熸湰鐨勪骇鍝佸瀷鍙穒d
salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
result = salesLedgerProductMapper.updateById(salesLedgerProduct);
+ /*鍒犻櫎瀵瑰簲鐨勭敓浜ф暟鎹苟閲嶆柊鏂板*/
+ deleteProductionData(Arrays.asList(salesLedgerProduct.getId()));
+ // 鍒犻櫎鐢熶骇鏍哥畻鏁版嵁
+ LambdaQueryWrapper<SalesLedgerProductionAccounting> reportWrapper = new LambdaQueryWrapper<>();
+ reportWrapper.in(SalesLedgerProductionAccounting::getSalesLedgerId, salesLedgerId);
+ salesLedgerProductionAccountingMapper.delete(reportWrapper);
+ addProductionData(salesLedgerProduct);
}
// 濡傛灉鎻掑叆鎴栨洿鏂版垚鍔燂紝骞朵笖鏈� salesLedgerId锛屾墠缁х画鏇存柊涓昏〃閲戦
@@ -307,6 +257,164 @@
return result;
}
+ /**
+ * 鏂板鐢熶骇鏁版嵁
+ */
+ public void addProductionData(SalesLedgerProduct salesLedgerProduct) {
+ ProductOrder productOrder = new ProductOrder();
+ productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
+ productOrder.setProductModelId(salesLedgerProduct.getId());
+ productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId()));
+ productOrder.setQuantity(salesLedgerProduct.getQuantity());//闇�姹傛暟閲�
+ productOrder.setCompleteQuantity(BigDecimal.ZERO);//瀹屾垚鏁伴噺
+ productOrderMapper.insert(productOrder);
+
+ List<ProcessRoute> processRoutes = processRouteMapper.selectList(new QueryWrapper<ProcessRoute>().lambda()
+ .eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId())
+ .orderByDesc(ProcessRoute::getCreateTime));
+ if (processRoutes.size()>0){
+ ProcessRoute processRoute = processRoutes.get(0);
+ //鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎涓昏〃
+ ProductProcessRoute productProcessRoute = new ProductProcessRoute();
+ productProcessRoute.setProductModelId(processRoute.getProductModelId());
+ productProcessRoute.setProcessRouteCode(processRoute.getProcessRouteCode());
+ productProcessRoute.setProductOrderId(productOrder.getId());
+ productProcessRoute.setBomId(processRoute.getBomId());
+ productProcessRouteMapper.insert(productProcessRoute);
+ //鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎瀛愯〃
+ List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
+ // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
+ String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
+ for (ProcessRouteItem processRouteItem : processRouteItems) {
+ ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
+ productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId());
+ productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
+ productProcessRouteItem.setProductOrderId(productOrder.getId());
+ productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
+ int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
+ if (insert > 0) {
+ // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
+ QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
+ queryWrapper.likeRight("work_order_no", datePrefix)
+ .orderByDesc("work_order_no")
+ .last("LIMIT 1");
+
+ ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
+
+ int sequenceNumber = 1; // 榛樿搴忓彿
+ if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
+ String lastNo = lastWorkOrder.getWorkOrderNo().toString();
+ if (lastNo.startsWith(datePrefix)) {
+ String seqStr = lastNo.substring(datePrefix.length());
+ try {
+ sequenceNumber = Integer.parseInt(seqStr) + 1;
+ } catch (NumberFormatException e) {
+ sequenceNumber = 1;
+ }
+ }
+ }
+ // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
+ String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
+ ProductWorkOrder productWorkOrder = new ProductWorkOrder();
+ productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
+ productWorkOrder.setProductOrderId(productOrder.getId());
+ productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
+ productWorkOrder.setWorkOrderNo(workOrderNoStr);
+ productWorkOrder.setStatus(1);
+
+ productWorkOrderMapper.insert(productWorkOrder);
+ }
+
+ }
+ productOrder.setRouteId(processRoute.getId());
+ productOrderMapper.updateById(productOrder);
+ }
+ }
+
+ /**
+ * 鍒犻櫎鐢熶骇鏁版嵁
+ */
+ public void deleteProductionData(List<Long> productIds) {
+ //鎵归噺鏌ヨproductOrder
+ List<ProductOrder> productOrders = productOrderMapper.selectList(
+ new LambdaQueryWrapper<ProductOrder>()
+ .in(ProductOrder::getProductModelId, productIds)
+ );
+ if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
+ List<Long> orderIds = productOrders.stream()
+ .map(ProductOrder::getId)
+ .collect(Collectors.toList());
+
+ // 鎵归噺鏌ヨprocessRouteItems
+ List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList(
+ new LambdaQueryWrapper<ProductProcessRouteItem>()
+ .in(ProductProcessRouteItem::getProductOrderId, orderIds)
+ );
+
+ 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)
+ );
+ qualityInspects.forEach(qualityInspect -> {
+ //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
+ if (qualityInspect.getInspectState() == 1) {
+ throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
+ }
+ });
+ qualityInspectMapper.deleteByProductMainIds(productMainIds);
+ }
+
+ // 鍒犻櫎鐢熶骇涓昏〃鏁版嵁
+ productionProductMainMapper.deleteByWorkOrderIds(workOrderIds);
+
+ // 鍒犻櫎宸ュ崟鏁版嵁
+ productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
+ .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds));
+ }
+ }
+ // 鎵归噺鍒犻櫎processRouteItem
+ productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>()
+ .in(ProductProcessRouteItem::getProductOrderId, orderIds));
+
+ // 鎵归噺鍒犻櫎productProcessRoute
+ productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>()
+ .in(ProductProcessRoute::getProductOrderId, orderIds));
+
+ // 鎵归噺鍒犻櫎productOrder
+ productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
+ .in(ProductOrder::getProductModelId, productIds));
+ }
+ }
+
@Override
public IPage<SalesLedgerProductDto> listPage(Page page, SalesLedgerProductDto salesLedgerProduct) {
IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPage(page, salesLedgerProduct);
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 dfa2118..43d90f8 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -32,6 +32,7 @@
import com.ruoyi.sales.dto.SalesLedgerDto;
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.*;
+import com.ruoyi.sales.service.ISalesLedgerProductService;
import com.ruoyi.sales.service.ISalesLedgerService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -77,6 +78,7 @@
private final CustomerMapper customerMapper;
private final SalesLedgerProductMapper salesLedgerProductMapper;
+ private final SalesLedgerProductServiceImpl salesLedgerProductServiceImpl;
private final CommonFileMapper commonFileMapper;
@@ -90,7 +92,7 @@
private final SalesLedgerWorkMapper salesLedgerWorkMapper;
- private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
+ private final SalesLedgerProductionAccountingMapper salesLedgerProductionAccountingMapper;
private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
@@ -217,8 +219,8 @@
// 鏌ヨ鍘熷鏁版嵁
LambdaQueryWrapper<SalesLedger> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.select(SalesLedger::getCustomerId,
- SalesLedger::getCustomerName,
- SalesLedger::getContractAmount)
+ SalesLedger::getCustomerName,
+ SalesLedger::getContractAmount)
.orderByDesc(SalesLedger::getContractAmount);
List<SalesLedger> records = salesLedgerMapper.selectList(queryWrapper);
@@ -226,7 +228,7 @@
Map<Long, GroupedCustomer> groupedMap = new LinkedHashMap<>(); // 浣跨敤LinkedHashMap淇濇寔鎺掑簭
for (SalesLedger record : records) {
groupedMap.computeIfAbsent(record.getCustomerId(),
- k -> new GroupedCustomer(record.getCustomerId(), record.getCustomerName()))
+ k -> new GroupedCustomer(record.getCustomerId(), record.getCustomerName()))
.addAmount(record.getContractAmount());
}
@@ -393,86 +395,8 @@
List<Long> productIds = products.stream()
.map(SalesLedgerProduct::getId)
.collect(Collectors.toList());
-
- //鎵归噺鏌ヨproductOrder
- List<ProductOrder> productOrders = productOrderMapper.selectList(
- new LambdaQueryWrapper<ProductOrder>()
- .in(ProductOrder::getProductModelId, productIds)
- );
-
- if (!org.springframework.util.CollectionUtils.isEmpty(productOrders)) {
- List<Long> orderIds = productOrders.stream()
- .map(ProductOrder::getId)
- .collect(Collectors.toList());
-
- // 鎵归噺鏌ヨprocessRouteItems
- List<ProductProcessRouteItem> allRouteItems = productProcessRouteItemMapper.selectList(
- new LambdaQueryWrapper<ProductProcessRouteItem>()
- .in(ProductProcessRouteItem::getProductOrderId, orderIds)
- );
-
- if (!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 (!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 (!CollectionUtils.isEmpty(productMainIds)) {
- productionProductOutputMapper.deleteByProductMainIds(productMainIds);
- productionProductInputMapper.deleteByProductMainIds(productMainIds);
- List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(
- new LambdaQueryWrapper<QualityInspect>()
- .in(QualityInspect::getProductMainId, productMainIds)
- );
- qualityInspects.forEach(qualityInspect -> {
- //inspectState=1 宸叉彁浜� 涓嶈兘鍒犻櫎
- if(qualityInspect.getInspectState() == 1){
- throw new RuntimeException("宸叉彁浜ょ殑妫�楠屽崟涓嶈兘鍒犻櫎");
- }
- });
- qualityInspectMapper.deleteByProductMainIds(productMainIds);
- }
-
- // 鍒犻櫎鐢熶骇涓昏〃鏁版嵁
- productionProductMainMapper.deleteByWorkOrderIds(workOrderIds);
-
- // 鍒犻櫎宸ュ崟鏁版嵁
- productWorkOrderMapper.delete(new LambdaQueryWrapper<ProductWorkOrder>()
- .in(ProductWorkOrder::getProductProcessRouteItemId, routeItemIds));
- }
- }
- // 鎵归噺鍒犻櫎processRouteItem
- productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>()
- .in(ProductProcessRouteItem::getProductOrderId, orderIds));
-
- // 鎵归噺鍒犻櫎productProcessRoute
- productProcessRouteMapper.delete(new LambdaQueryWrapper<ProductProcessRoute>()
- .in(ProductProcessRoute::getProductOrderId, orderIds));
-
- // 鎵归噺鍒犻櫎productOrder
- productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>()
- .in(ProductOrder::getProductModelId, productIds));
- }
+ //鍒犻櫎鐢熶骇鏁版嵁
+ salesLedgerProductServiceImpl.deleteProductionData(productIds);
// 鎵归噺鍒犻櫎浜у搧瀛愯〃
if (!productIds.isEmpty()) {
@@ -483,11 +407,11 @@
wrapper.in(InvoiceRegistrationProduct::getSalesLedgerId, idList);
List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(wrapper);
List<Integer> invoiceLedgerIds = new ArrayList<>();
- if(CollectionUtils.isNotEmpty(invoiceRegistrationProducts)){
+ if (CollectionUtils.isNotEmpty(invoiceRegistrationProducts)) {
LambdaQueryWrapper<InvoiceLedger> wrapperOne = new LambdaQueryWrapper<>();
wrapperOne.in(InvoiceLedger::getInvoiceRegistrationProductId, invoiceRegistrationProducts.stream().map(InvoiceRegistrationProduct::getId).collect(Collectors.toList()));
List<InvoiceLedger> invoiceLedgers = invoiceLedgerMapper.selectList(wrapperOne);
- if(CollectionUtils.isNotEmpty(invoiceLedgers)){
+ if (CollectionUtils.isNotEmpty(invoiceLedgers)) {
invoiceLedgerIds = invoiceLedgers.stream().map(InvoiceLedger::getId).collect(Collectors.toList());
}
invoiceLedgerMapper.delete(wrapperOne);
@@ -497,7 +421,7 @@
wrapperTwo.in(InvoiceRegistration::getSalesLedgerId, idList);
invoiceRegistrationMapper.delete(wrapperTwo);
- if(CollectionUtils.isNotEmpty(invoiceLedgerIds)){
+ if (CollectionUtils.isNotEmpty(invoiceLedgerIds)) {
LambdaQueryWrapper<ReceiptPayment> wrapperTree = new LambdaQueryWrapper<>();
wrapperTree.in(ReceiptPayment::getInvoiceLedgerId, invoiceLedgerIds);
receiptPaymentMapper.delete(wrapperTree);
@@ -512,7 +436,7 @@
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);
@@ -668,79 +592,8 @@
salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice());
salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice());
salesLedgerProductMapper.insert(salesLedgerProduct);
-
- ProductOrder productOrder = new ProductOrder();
- productOrder.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId());
- productOrder.setProductModelId(salesLedgerProduct.getId());
- productOrder.setNpsNo("SC" + String.format("%08d", salesLedgerProduct.getId()));
- productOrder.setQuantity(salesLedgerProduct.getQuantity());//闇�姹傛暟閲�
- productOrder.setCompleteQuantity(BigDecimal.ZERO);//瀹屾垚鏁伴噺
- productOrderMapper.insert(productOrder);
-
- ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()));
- if (processRoute != null) {
- List<ProductStructureDto> productStructureDtos = productStructureMapper.listBybomId(processRoute.getBomId());
- //鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎涓昏〃
- ProductProcessRoute productProcessRoute = new ProductProcessRoute();
- productProcessRoute.setProductModelId(processRoute.getProductModelId());
- productProcessRoute.setProcessRouteCode(processRoute.getProcessRouteCode());
- productProcessRoute.setProductOrderId(productOrder.getId());
- productProcessRoute.setBomId(processRoute.getBomId());
- productProcessRouteMapper.insert(productProcessRoute);
- //鏂板鐢熶骇璁㈠崟宸ヨ壓璺嚎瀛愯〃
- List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
- // 鐢熸垚褰撳墠鏃ユ湡鐨勫墠缂�锛氬勾鏈堟棩
- String datePrefix = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
- for (ProcessRouteItem processRouteItem : processRouteItems) {
- ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
- productProcessRouteItem.setProductModelId(processRouteItem.getProductModelId());
- productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
- productProcessRouteItem.setProductOrderId(productOrder.getId());
- productProcessRouteItem.setProductRouteId(productProcessRoute.getId());
- productProcessRouteItem.setDragSort(processRouteItem.getDragSort());
- int insert = productProcessRouteItemMapper.insert(productProcessRouteItem);
- if (insert > 0) {
- // 鏌ヨ浠婃棩宸插瓨鍦ㄧ殑鏈�澶у伐鍗曞彿
- QueryWrapper<ProductWorkOrder> queryWrapper = new QueryWrapper<>();
- queryWrapper.likeRight("work_order_no", datePrefix)
- .orderByDesc("work_order_no")
- .last("LIMIT 1");
-
- ProductWorkOrder lastWorkOrder = productWorkOrderMapper.selectOne(queryWrapper);
-
- int sequenceNumber = 1; // 榛樿搴忓彿
- if (lastWorkOrder != null && lastWorkOrder.getWorkOrderNo() != null) {
- String lastNo = lastWorkOrder.getWorkOrderNo().toString();
- if (lastNo.startsWith(datePrefix)) {
- String seqStr = lastNo.substring(datePrefix.length());
- try {
- sequenceNumber = Integer.parseInt(seqStr) + 1;
- } catch (NumberFormatException e) {
- sequenceNumber = 1;
- }
- }
- }
- // 鐢熸垚瀹屾暣鐨勫伐鍗曞彿
- String workOrderNoStr = String.format("%s%03d", datePrefix, sequenceNumber);
- ProductWorkOrder productWorkOrder = new ProductWorkOrder();
- productStructureDtos.stream().forEach(productStructureDto -> {
- if (productStructureDto.getProductModelId().equals(productProcessRouteItem.getProductModelId())){
- productWorkOrder.setPlanQuantity(productWorkOrder.getPlanQuantity());
- }
- });
- if (Objects.equals(productProcessRouteItem.getProductModelId(), salesLedgerProduct.getProductModelId())) {
- productWorkOrder.setPlanQuantity(salesLedgerProduct.getQuantity());
- }
- productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId());
- productWorkOrder.setProductOrderId(productOrder.getId());
- productWorkOrder.setWorkOrderNo(workOrderNoStr);
- productWorkOrder.setStatus(1);
- productWorkOrderMapper.insert(productWorkOrder);
- }
- }
- productOrder.setRouteId(processRoute.getId());
- productOrderMapper.updateById(productOrder);
- }
+ // 娣诲姞鐢熶骇鏁版嵁
+ salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct);
}
}
}
--
Gitblit v1.9.3