From 470f7f89a562fc9be86d656cb05b6b3421917062 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期日, 04 一月 2026 13:16:23 +0800
Subject: [PATCH] feat(production): 添加生产订单和工艺路线相关功能。添加工序的工资定额字段
---
src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java | 22 ++
src/main/java/com/ruoyi/production/dto/ProductOrderDto.java | 27 ++
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 79 ++++++-
src/main/java/com/ruoyi/production/service/ProductOrderService.java | 13 +
src/main/java/com/ruoyi/quality/pojo/QualityInspect.java | 2
src/main/java/com/ruoyi/production/pojo/ProductOrder.java | 61 ++++++
src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java | 23 ++
doc/create_table_process_route_item.sql | 60 +++++
src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java | 27 ++
src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java | 34 +++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 51 ++++
src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java | 15 +
src/main/java/com/ruoyi/production/mapper/ProductProcessRouteItemMapper.java | 14 +
src/main/resources/mapper/production/ProductOrderMapper.xml | 45 ++++
src/main/java/com/ruoyi/production/controller/ProductOrderController.java | 30 +++
src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml | 27 ++
src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java | 35 +++
src/main/java/com/ruoyi/production/service/ProductProcessRouteItemService.java | 11 +
src/main/java/com/ruoyi/production/pojo/ProductProcess.java | 6
19 files changed, 555 insertions(+), 27 deletions(-)
diff --git a/doc/create_table_process_route_item.sql b/doc/create_table_process_route_item.sql
index baab7d9..ea0a8a7 100644
--- a/doc/create_table_process_route_item.sql
+++ b/doc/create_table_process_route_item.sql
@@ -2,11 +2,57 @@
drop table if exists process_route_item;
create table process_route_item
(
- id bigint auto_increment primary key,
- route_id bigint not null default 0 comment '宸ヨ壓璺嚎id',
- product_model_id bigint not null default 0 comment '浜у搧id',
- process_id bigint not null default 0 comment '宸ュ簭id',
- tenant_id bigint not null comment '绉熸埛id',
- create_time datetime null comment '褰曞叆鏃堕棿',
- update_time datetime null comment '鏇存柊鏃堕棿'
+ id bigint auto_increment primary key,
+ route_id bigint not null default 0 comment '宸ヨ壓璺嚎id',
+ product_model_id bigint not null default 0 comment '浜у搧id',
+ process_id bigint not null default 0 comment '宸ュ簭id',
+ tenant_id bigint not null comment '绉熸埛id',
+ create_time datetime null comment '褰曞叆鏃堕棿',
+ update_time datetime null comment '鏇存柊鏃堕棿'
);
+
+# 鐢熶骇宸ヨ壓璺嚎椤圭洰
+drop table if exists product_process_route_item;
+create table product_process_route_item
+(
+ id bigint auto_increment primary key,
+ route_id bigint not null default 0 comment '宸ヨ壓璺嚎id',
+ product_model_id bigint not null default 0 comment '閿�鍞彴璐︿骇鍝乮d',
+ process_id bigint not null default 0 comment '宸ュ簭id',
+ tenant_id bigint not null comment '绉熸埛id',
+ create_time datetime null comment '褰曞叆鏃堕棿',
+ update_time datetime null comment '鏇存柊鏃堕棿'
+);
+
+# 鐢熶骇璁㈠崟
+drop table if exists product_order;
+create table product_order
+(
+ id bigint auto_increment primary key,
+ sales_ledger_id bigint not null default 0 comment '閿�鍞彴璐d',
+ product_model_id bigint not null default 0 comment '閿�鍞彴璐︿骇鍝乮d',
+ route_id bigint not null default 0 comment '宸ヨ壓璺嚎id',
+ nps_no varchar(255) not null default '' comment '鐢熶骇璁㈠崟鍙�',
+ status int not null default 0 comment '鐘舵�� 0 寰呯‘璁� 1 宸茬‘璁�',
+ tenant_id bigint not null comment '绉熸埛id',
+ create_time datetime null comment '褰曞叆鏃堕棿',
+ update_time datetime null comment '鏇存柊鏃堕棿'
+);
+alter table quality_inspect
+ add purchase_ledger_id int null comment '閲囪喘璁㈠崟id';
+
+# 鐢熶骇宸ュ崟
+drop table if exists product_work_order;
+create table product_work_order
+(
+ id bigint auto_increment primary key,
+ product_process_route_item_id bigint not null default 0 comment '宸ヨ壓璺嚎椤圭洰id',
+ create_time datetime null comment '褰曞叆鏃堕棿',
+ update_time datetime null comment '鏇存柊鏃堕棿',
+ work_order_no varchar(255) not null default '' comment '宸ュ崟缂栧彿',
+ status int not null default 0 comment '鐘舵�� 1 寰呯‘璁� 2 寰呯敓浜� 3鐢熶骇涓� 4宸茬敓浜� ',
+ tenant_id bigint not null comment '绉熸埛id'
+);
+
+alter table product_process
+ add salary_quota numeric(16,3) null comment '宸ヨ祫瀹氶';
\ No newline at end of file
diff --git a/src/main/java/com/ruoyi/production/controller/ProductOrderController.java b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
new file mode 100644
index 0000000..15a7ca6
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductOrderController.java
@@ -0,0 +1,30 @@
+package com.ruoyi.production.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.production.dto.ProductOrderDto;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.service.ProductOrderService;
+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.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RequestMapping("productOrder")
+@RestController
+public class ProductOrderController {
+
+ @Autowired
+ private ProductOrderService productOrderService;
+
+
+ @ApiOperation("鍒嗛〉鏌ヨ")
+ @GetMapping("page")
+ public R page(ProductOrderDto productOrder, Page page) {
+ return R.ok(productOrderService.pageProductOrder(page, productOrder));
+ }
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
new file mode 100644
index 0000000..66ace47
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/controller/ProductProcessRouteItemController.java
@@ -0,0 +1,34 @@
+package com.ruoyi.production.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.ruoyi.framework.web.domain.R;
+import com.ruoyi.production.dto.ProcessRouteItemDto;
+import com.ruoyi.production.dto.ProductProcessRouteItemDto;
+import com.ruoyi.production.pojo.ProcessRouteItem;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+import com.ruoyi.production.service.ProductProcessRouteItemService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+@RequestMapping("productProcessRoute")
+@RestController
+@Api(tags = "鐢熶骇宸ヨ壓璺嚎")
+public class ProductProcessRouteItemController {
+ @Autowired
+ private ProductProcessRouteItemService productProcessRouteItemService;
+
+ @GetMapping("list")
+ @ApiOperation("鏍规嵁Id鏌ヨ宸ヨ壓椤圭洰")
+ public R list(Long orderId) {
+ return R.ok(productProcessRouteItemService.listItem(orderId));
+ }
+
+ @PostMapping ()
+ @ApiOperation("鏂板淇敼")
+ public R addOrUpdate(@RequestBody ProductProcessRouteItemDto processRouteItemDto) {
+ productProcessRouteItemService.remove(new QueryWrapper<ProductProcessRouteItem>().lambda().eq(ProductProcessRouteItem::getRouteId, processRouteItemDto.getRouteId()));
+ return R.ok(productProcessRouteItemService.saveBatch(processRouteItemDto.getProcessRouteItem()));
+ }
+}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
new file mode 100644
index 0000000..16ea17b
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductOrderDto.java
@@ -0,0 +1,27 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.production.pojo.ProductOrder;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class ProductOrderDto extends ProductOrder {
+
+ @ApiModelProperty(value = "閿�鍞悎鍚屽彿")
+ private String salesContractNo;
+
+ @ApiModelProperty(value = "椤圭洰鍚�")
+ private String projectName;
+
+ @ApiModelProperty(value = "瀹㈡埛鍚�")
+ private String customerName;
+
+ @ApiModelProperty(value = "浜у搧鍚嶇О")
+ private String productCategory;
+
+ @ApiModelProperty(value = "瑙勬牸")
+ private String specificationModel;
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java b/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
new file mode 100644
index 0000000..e302728
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/dto/ProductProcessRouteItemDto.java
@@ -0,0 +1,27 @@
+package com.ruoyi.production.dto;
+
+import com.ruoyi.production.pojo.ProcessRouteItem;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ProductProcessRouteItemDto extends ProductProcessRouteItem {
+
+ @ApiModelProperty(value = "宸ュ簭鍚嶇О")
+ private String processName;
+
+ @ApiModelProperty(value = "浜у搧鍚嶇О")
+ private String productCategory;
+
+ @ApiModelProperty(value = "鍗曚綅")
+ private String unit;
+
+ private Long productId;
+
+
+ private List<ProductProcessRouteItem> processRouteItem;
+ private String specificationModel;
+}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
new file mode 100644
index 0000000..c4e4ad5
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/mapper/ProductOrderMapper.java
@@ -0,0 +1,15 @@
+package com.ruoyi.production.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.production.dto.ProductOrderDto;
+import com.ruoyi.production.pojo.ProductOrder;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProductOrderMapper extends BaseMapper<ProductOrder> {
+
+ IPage<ProductOrderDto> pageProductOrder(Page page, @Param("c") ProductOrderDto productOrder);
+}
diff --git a/src/main/java/com/ruoyi/production/mapper/ProductProcessRouteItemMapper.java b/src/main/java/com/ruoyi/production/mapper/ProductProcessRouteItemMapper.java
new file mode 100644
index 0000000..48b38ec
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/mapper/ProductProcessRouteItemMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.production.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.production.dto.ProductProcessRouteItemDto;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface ProductProcessRouteItemMapper extends BaseMapper<ProductProcessRouteItem> {
+ List<ProductProcessRouteItemDto> listItem(@Param("orderId") Long orderId);
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductOrder.java b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
new file mode 100644
index 0000000..d47062f
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/pojo/ProductOrder.java
@@ -0,0 +1,61 @@
+package com.ruoyi.production.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+@TableName("product_order")
+public class ProductOrder implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 閿�鍞彴璐d
+ */
+ @ApiModelProperty(value = "閿�鍞彴璐d")
+ private Long salesLedgerId;
+
+ /**
+ * 閿�鍞彴璐︿骇鍝乮d
+ */
+ @ApiModelProperty(value = "閿�鍞彴璐︿骇鍝乮d")
+ private Long productModelId;
+
+ /**
+ * 宸ヨ壓璺嚎id
+ */
+ @ApiModelProperty(value = "宸ヨ壓璺嚎id")
+ private Long routeId;
+
+ /**
+ * 鐢熶骇璁㈠崟鍙�
+ */
+ @ApiModelProperty(value = "鐢熶骇璁㈠崟鍙�")
+ private String npsNo;
+
+ /**
+ * 绉熸埛id
+ */
+ @ApiModelProperty(value = "绉熸埛id")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ //鍒涘缓鏃堕棿
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ //淇敼鏃堕棿
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.UPDATE)
+ private LocalDateTime updateTime;
+
+}
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductProcess.java b/src/main/java/com/ruoyi/production/pojo/ProductProcess.java
index 31ff3e7..01ed986 100644
--- a/src/main/java/com/ruoyi/production/pojo/ProductProcess.java
+++ b/src/main/java/com/ruoyi/production/pojo/ProductProcess.java
@@ -30,6 +30,12 @@
*/
private String remark;
+
+ /**
+ * 宸ヨ祫瀹氶
+ */
+ private BigDecimal salaryQuota;
+
/**
* 鍒涘缓鏃堕棿
*/
diff --git a/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java b/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
new file mode 100644
index 0000000..af13c69
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/pojo/ProductProcessRouteItem.java
@@ -0,0 +1,35 @@
+package com.ruoyi.production.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+@TableName("product_process_route_item")
+public class ProductProcessRouteItem {
+
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty(value = "宸ヨ壓璺嚎id")
+ private Long routeId;
+
+ @ApiModelProperty(value = "宸ュ簭id")
+ private Long processId;
+
+ @ApiModelProperty(value ="浜у搧id")
+ private Long productModelId;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+ @TableField(fill = FieldFill.INSERT)
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ private LocalDateTime createTime;
+ @ApiModelProperty(value = "鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.UPDATE)
+ private LocalDateTime updateTime;
+
+}
diff --git a/src/main/java/com/ruoyi/production/service/ProductOrderService.java b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
new file mode 100644
index 0000000..325ec47
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/ProductOrderService.java
@@ -0,0 +1,13 @@
+package com.ruoyi.production.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.production.dto.ProductOrderDto;
+import com.ruoyi.production.pojo.ProductOrder;
+
+
+public interface ProductOrderService extends IService<ProductOrder> {
+
+ IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder);
+}
diff --git a/src/main/java/com/ruoyi/production/service/ProductProcessRouteItemService.java b/src/main/java/com/ruoyi/production/service/ProductProcessRouteItemService.java
new file mode 100644
index 0000000..f527657
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/ProductProcessRouteItemService.java
@@ -0,0 +1,11 @@
+package com.ruoyi.production.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.production.dto.ProductProcessRouteItemDto;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+
+import java.util.List;
+
+public interface ProductProcessRouteItemService extends IService<ProductProcessRouteItem> {
+ List<ProductProcessRouteItemDto> listItem(Long orderId);
+}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
new file mode 100644
index 0000000..26ec8fa
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductOrderServiceImpl.java
@@ -0,0 +1,22 @@
+package com.ruoyi.production.service.impl;
+
+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.production.dto.ProductOrderDto;
+import com.ruoyi.production.mapper.ProductOrderMapper;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.service.ProductOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+@Service
+public class ProductOrderServiceImpl extends ServiceImpl<ProductOrderMapper, ProductOrder> implements ProductOrderService {
+
+ @Autowired
+ private ProductOrderMapper productOrderMapper;
+ @Override
+ public IPage<ProductOrderDto> pageProductOrder(Page page, ProductOrderDto productOrder) {
+ return productOrderMapper.pageProductOrder(page, productOrder);
+ }
+}
diff --git a/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
new file mode 100644
index 0000000..455b6e5
--- /dev/null
+++ b/src/main/java/com/ruoyi/production/service/impl/ProductProcessRouteItemServiceImpl.java
@@ -0,0 +1,23 @@
+package com.ruoyi.production.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.production.dto.ProductProcessRouteItemDto;
+import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
+import com.ruoyi.production.service.ProductProcessRouteItemService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+@Service
+public class ProductProcessRouteItemServiceImpl extends ServiceImpl<ProductProcessRouteItemMapper, ProductProcessRouteItem> implements ProductProcessRouteItemService {
+
+ @Autowired
+ private ProductProcessRouteItemMapper productProcessRouteItemMapper;
+ @Override
+ public List<ProductProcessRouteItemDto> listItem(Long orderId) {
+ return productProcessRouteItemMapper.listItem(orderId);
+ }
+}
diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
index 9f9123f..a20c5bb 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -36,6 +36,12 @@
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.purchase.pojo.TicketRegistration;
import com.ruoyi.purchase.service.IPurchaseLedgerService;
+import com.ruoyi.quality.mapper.QualityInspectMapper;
+import com.ruoyi.quality.mapper.QualityInspectParamMapper;
+import com.ruoyi.quality.mapper.QualityTestStandardMapper;
+import com.ruoyi.quality.pojo.QualityInspect;
+import com.ruoyi.quality.pojo.QualityInspectParam;
+import com.ruoyi.quality.pojo.QualityTestStandard;
import com.ruoyi.sales.mapper.*;
import com.ruoyi.sales.pojo.CommonFile;
import com.ruoyi.sales.pojo.InvoiceRegistrationProduct;
@@ -101,6 +107,9 @@
private final InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
private final StringRedisTemplate redisTemplate;
+ private final QualityInspectMapper qualityInspectMapper;
+ private final QualityTestStandardMapper qualityTestStandardMapper;
+ private final QualityInspectParamMapper qualityInspectParamMapper;
@Value("${file.upload-dir}")
private String uploadDir;
@@ -128,7 +137,7 @@
PurchaseLedger purchaseLedger = new PurchaseLedger();
BeanUtils.copyProperties(purchaseLedgerDto, purchaseLedger);
LoginUser loginUser = SecurityUtils.getLoginUser();
- if(ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) {
+ if (ObjectUtils.isNotEmpty(loginUser) && null != loginUser.getTenantId()) {
purchaseLedger.setTenantId(loginUser.getTenantId());
}
purchaseLedger.setSalesContractNo(ObjectUtils.isNotEmpty(salesLedger) ? salesLedger.getSalesContractNo() : "");
@@ -161,15 +170,15 @@
List<AccountExpense> accountExpenseDBs = accountExpenseService.getByInvoiceNumberList(purchaseLedger.getPurchaseContractNumber());
if (!CollectionUtils.isEmpty(accountExpenseDBs)) {
accountExpenseDBs.forEach(accountExpenseDB -> {
- accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate());
- accountExpenseDB.setExpenseType("0");
- accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName());
- accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount());
- accountExpenseDB.setExpenseDescribed("閲囪喘鍚堝悓锛�" + purchaseLedgerDB.getPurchaseContractNumber());
- accountExpenseDB.setExpenseMethod("0");
- accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber());
- accountExpenseService.updateById(accountExpenseDB);
- });
+ accountExpenseDB.setExpenseDate(purchaseLedgerDB.getEntryDate());
+ accountExpenseDB.setExpenseType("0");
+ accountExpenseDB.setSupplierName(purchaseLedgerDB.getSupplierName());
+ accountExpenseDB.setExpenseMoney(purchaseLedgerDB.getContractAmount());
+ accountExpenseDB.setExpenseDescribed("閲囪喘鍚堝悓锛�" + purchaseLedgerDB.getPurchaseContractNumber());
+ accountExpenseDB.setExpenseMethod("0");
+ accountExpenseDB.setInvoiceNumber(purchaseLedgerDB.getPurchaseContractNumber());
+ accountExpenseService.updateById(accountExpenseDB);
+ });
}
}
@@ -178,6 +187,31 @@
List<SalesLedgerProduct> productList = purchaseLedgerDto.getProductData();
if (productList != null && !productList.isEmpty()) {
handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType());
+ }
+ //鏂板鍘熸潗鏂欐楠�
+ for (SalesLedgerProduct saleProduct : productList) {
+ QualityInspect qualityInspect = new QualityInspect();
+ qualityInspect.setInspectType(0);
+ qualityInspect.setSupplier(purchaseLedger.getSupplierName());
+ qualityInspect.setPurchaseLedgerId(purchaseLedger.getId());
+ qualityInspect.setProductId(saleProduct.getProductId());
+ qualityInspect.setProductName(saleProduct.getProductCategory());
+ qualityInspect.setModel(saleProduct.getSpecificationModel());
+ qualityInspect.setUnit(saleProduct.getUnit());
+ qualityInspect.setQuantity(saleProduct.getQuantity());
+ qualityInspectMapper.insert(qualityInspect);
+ QualityTestStandard qualityTestStandard = new QualityTestStandard();
+ qualityTestStandard.setProductId(saleProduct.getProductId());
+ List<QualityTestStandard> qualityTestStandards = qualityTestStandardMapper.qualityTestStandardList(qualityTestStandard);
+ for (QualityTestStandard qualityTestStandardDB : qualityTestStandards) {
+ QualityInspectParam qualityInspectParam = new QualityInspectParam();
+ qualityInspectParam.setInspectId(qualityInspect.getId());
+ qualityInspectParam.setParameterItem(qualityTestStandardDB.getParameterItem());
+ qualityInspectParam.setUnit(qualityTestStandardDB.getUnit());
+ qualityInspectParam.setStandardValue(qualityTestStandardDB.getStandardValue());
+ qualityInspectParam.setControlValue(qualityTestStandardDB.getControlValue());
+ qualityInspectParamMapper.insert(qualityInspectParam);
+ }
}
// 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰�
@@ -349,7 +383,7 @@
@Override
public int deletePurchaseLedgerByIds(Long[] ids) {
if (ids == null || ids.length == 0) {
- throw new BaseException("璇烽�変腑鑷冲皯涓�鏉℃暟鎹�");
+ throw new BaseException("璇烽�変腑鑷冲皯涓�鏉℃暟鎹�");
}
// 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐彴璐︿骇鍝�
LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
@@ -358,16 +392,29 @@
salesLedgerProductMapper.delete(queryWrapper);
// 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐彴璐︾殑鏉ョエ鐧昏
LambdaQueryWrapper<TicketRegistration> ticketRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>();
- ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getPurchaseLedgerId,ids);
+ ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getPurchaseLedgerId, ids);
ticketRegistrationMapper.delete(ticketRegistrationLambdaQueryWrapper);
// 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐彴璐︾殑鏉ョエ鐧昏璁板綍
LambdaQueryWrapper<ProductRecord> productRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
- productRecordLambdaQueryWrapper.in(ProductRecord::getPurchaseLedgerId,ids);
+ productRecordLambdaQueryWrapper.in(ProductRecord::getPurchaseLedgerId, ids);
productRecordMapper.delete(productRecordLambdaQueryWrapper);
// 鎵归噺鍒犻櫎浠樻鐧昏
LambdaQueryWrapper<PaymentRegistration> paymentRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>();
- paymentRegistrationLambdaQueryWrapper.in(PaymentRegistration::getPurchaseLedgerId,ids);
+ paymentRegistrationLambdaQueryWrapper.in(PaymentRegistration::getPurchaseLedgerId, ids);
paymentRegistrationMapper.delete(paymentRegistrationLambdaQueryWrapper);
+ //鎵归噺鍒犻櫎妫�楠屾爣鍑�
+ LambdaQueryWrapper<QualityInspect> materialInspectLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ materialInspectLambdaQueryWrapper.in(QualityInspect::getPurchaseLedgerId, ids);
+ List<QualityInspect> qualityInspects = qualityInspectMapper.selectList(materialInspectLambdaQueryWrapper);
+ List<Long> inspectIds = qualityInspects.stream()
+ .map(QualityInspect::getId)
+ .collect(Collectors.toList());
+
+ LambdaQueryWrapper<QualityInspectParam> qualityStandardLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ qualityStandardLambdaQueryWrapper.in(QualityInspectParam::getInspectId, inspectIds);
+ qualityInspectParamMapper.delete(qualityStandardLambdaQueryWrapper);
+ //鎵归噺鍒犻櫎鍘熸潗鏂欐楠屾暟鎹�
+ qualityInspectMapper.delete(materialInspectLambdaQueryWrapper);
// 鎵归噺鍒犻櫎閲囪喘鍙拌处
return purchaseLedgerMapper.deleteBatchIds(Arrays.asList(ids));
}
@@ -494,8 +541,8 @@
@Override
public List<InvoiceRegistrationProduct> getProductBySalesNo(Long id) {
List<InvoiceRegistrationProduct> invoiceRegistrationProducts = invoiceRegistrationProductMapper.selectList(new LambdaQueryWrapper<InvoiceRegistrationProduct>()
- .select(InvoiceRegistrationProduct::getId, InvoiceRegistrationProduct::getProductCategory, InvoiceRegistrationProduct::getSpecificationModel,
- InvoiceRegistrationProduct::getUnit, InvoiceRegistrationProduct::getQuantity)
+ .select(InvoiceRegistrationProduct::getId, InvoiceRegistrationProduct::getProductCategory, InvoiceRegistrationProduct::getSpecificationModel,
+ InvoiceRegistrationProduct::getUnit, InvoiceRegistrationProduct::getQuantity)
.eq(InvoiceRegistrationProduct::getSalesLedgerId, id));
if (invoiceRegistrationProducts.isEmpty()) {
return new ArrayList<>();
diff --git a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
index e1b2e6a..6c39977 100644
--- a/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
+++ b/src/main/java/com/ruoyi/quality/pojo/QualityInspect.java
@@ -138,5 +138,7 @@
*/
private Integer inspectState;
+ private Long purchaseLedgerId;
+
}
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 2a288e4..3d51cb0 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -4,6 +4,14 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.production.mapper.ProcessRouteItemMapper;
+import com.ruoyi.production.mapper.ProcessRouteMapper;
+import com.ruoyi.production.mapper.ProductOrderMapper;
+import com.ruoyi.production.mapper.ProductProcessRouteItemMapper;
+import com.ruoyi.production.pojo.ProcessRoute;
+import com.ruoyi.production.pojo.ProcessRouteItem;
+import com.ruoyi.production.pojo.ProductOrder;
+import com.ruoyi.production.pojo.ProductProcessRouteItem;
import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
import com.ruoyi.purchase.pojo.PurchaseLedger;
import com.ruoyi.sales.dto.InvoiceRegistrationProductDto;
@@ -42,8 +50,14 @@
private PurchaseLedgerMapper purchaseLedgerMapper;
+ private ProductOrderMapper productOrderMapper;
+
+ private ProcessRouteItemMapper processRouteItemMapper;
+ private ProductProcessRouteItemMapper productProcessRouteItemMapper;
@Autowired
private InvoiceRegistrationProductMapper invoiceRegistrationProductMapper;
+ @Autowired
+ private ProcessRouteMapper processRouteMapper;
@Override
public SalesLedgerProduct selectSalesLedgerProductById(Long id) {
@@ -56,18 +70,18 @@
queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId())
.eq(SalesLedgerProduct::getType, salesLedgerProduct.getType());
List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(queryWrapper);
- if(!CollectionUtils.isEmpty(salesLedgerProducts)){
+ if (!CollectionUtils.isEmpty(salesLedgerProducts)) {
InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto();
invoiceRegistrationProductDto.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId().intValue());
List<InvoiceRegistrationProductDto> invoiceRegistrationProductDtoList = invoiceRegistrationProductMapper.invoiceRegistrationProductList(invoiceRegistrationProductDto);
// 缁熻寮�绁ㄧ櫥璁颁骇鍝佺殑宸插紑绁ㄦ暟/宸插紑绁ㄩ噾棰�
- if(!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)){
+ if (!CollectionUtils.isEmpty(invoiceRegistrationProductDtoList)) {
for (SalesLedgerProduct ledgerProduct : salesLedgerProducts) {
BigDecimal invoiceNum = BigDecimal.ZERO;
BigDecimal invoiceAmount = BigDecimal.ZERO;
for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) {
- if(ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()){
- invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum());
+ if (ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()) {
+ invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum());
invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount());
}
}
@@ -101,6 +115,14 @@
// 2. 鎵ц鍒犻櫎鎿嶄綔
int result = salesLedgerProductMapper.deleteBatchIds(Arrays.asList(ids));
+ //鍒犻櫎瀵瑰簲鐨勭敓浜ц鍗�
+ for (Long id : ids) {
+ ProductOrder productOrder = productOrderMapper.selectOne(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id));
+ if (productOrder != null) {
+ productProcessRouteItemMapper.delete(new LambdaQueryWrapper<ProductProcessRouteItem>().eq(ProductProcessRouteItem::getRouteId, productOrder.getId()));
+ productOrderMapper.delete(new LambdaQueryWrapper<ProductOrder>().eq(ProductOrder::getProductModelId, id));
+ }
+ }
// 3. 瀵规瘡涓富琛↖D杩涜閲戦鏇存柊
for (Long salesLedgerId : mainIds) {
@@ -130,6 +152,27 @@
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()));
+ productOrderMapper.insert(productOrder);
+
+ ProcessRoute processRoute = processRouteMapper.selectOne(new QueryWrapper<ProcessRoute>().lambda().eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()));
+ if (processRoute != null) {
+ List<ProcessRouteItem> processRouteItems = processRouteItemMapper.selectList(new QueryWrapper<ProcessRouteItem>().lambda().eq(ProcessRouteItem::getRouteId, processRoute.getId()));
+ for (ProcessRouteItem processRouteItem : processRouteItems) {
+ ProductProcessRouteItem productProcessRouteItem = new ProductProcessRouteItem();
+ productProcessRouteItem.setProductModelId(productOrder.getProductModelId());
+ productProcessRouteItem.setProcessId(processRouteItem.getProcessId());
+ productProcessRouteItem.setRouteId(productOrder.getId());
+ productProcessRouteItemMapper.insert(productProcessRouteItem);
+ }
+ productOrder.setRouteId(processRoute.getId());
+ productOrderMapper.updateById(productOrder);
+ }
+
+
} else {
salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity());
result = salesLedgerProductMapper.updateById(salesLedgerProduct);
diff --git a/src/main/resources/mapper/production/ProductOrderMapper.xml b/src/main/resources/mapper/production/ProductOrderMapper.xml
new file mode 100644
index 0000000..7f84013
--- /dev/null
+++ b/src/main/resources/mapper/production/ProductOrderMapper.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.production.mapper.ProductOrderMapper">
+
+
+ <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductOrder">
+ <id property="id" column="id"/>
+ <result property="productModelId" column="product_model_id"/>
+ <result property="tenantId" column="tenant_id"/>
+ <result property="salesLedgerId" column="sales_ledger_id"/>
+ <result property="routeId" column="route_id"/>
+ <result property="npsNo" column="nps_no"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <select id="pageProductOrder" resultType="com.ruoyi.production.dto.ProductOrderDto">
+ select po.*,sl.sales_contract_no,sl.project_name,sl.customer_name,slp.product_category,slp.specification_model
+ from product_order po
+ left join sales_ledger sl on po.sales_ledger_id = sl.id
+ left join sales_ledger_product slp on po.product_model_id = slp.id
+ left join process_route pr on po.route_id = pr.id
+ <where>
+ <if test="c.npsNo != null and c.npsNo != ''">
+ and po.nps_no = #{c.npsNo}
+ </if>
+ <if test="c.salesContractNo != null and c.salesContractNo != ''">
+ and sl.sales_contract_no = #{c.salesContractNo}
+ </if>
+ <if test="c.projectName != null and c.projectName != ''">
+ and sl.project_name = #{c.projectName}
+ </if>
+ <if test="c.customerName != null and c.customerName != ''">
+ and sl.customer_name = #{c.customerName}
+ </if>
+ <if test="c.productCategory != null and c.productCategory != ''">
+ and slp.product_category = #{c.productCategory}
+ </if>
+ <if test="c.specificationModel != null and c.specificationModel != ''">
+ and slp.specification_model = #{c.specificationModel}
+ </if>
+ </where>
+ </select>
+
+
+</mapper>
diff --git a/src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml b/src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml
new file mode 100644
index 0000000..b552627
--- /dev/null
+++ b/src/main/resources/mapper/production/ProductProcessRouteItemMapper.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.production.mapper.ProductProcessRouteItemMapper">
+
+
+ <resultMap id="basicMap" type="com.ruoyi.production.pojo.ProductProcessRouteItem">
+ <id property="id" column="id"/>
+ <result property="productModelId" column="product_model_id"/>
+ <result property="tenantId" column="tenant_id"/>
+ <result property="createTime" column="create_time"/>
+ <result property="updateTime" column="update_time"/>
+ </resultMap>
+ <select id="listItem" resultType="com.ruoyi.production.dto.ProductProcessRouteItemDto">
+ select ppri.*,
+ pp.name as process_name,
+ slp.specification_model,
+ slp.unit,
+ slp.product_category
+ from product_process_route_item ppri
+ left join sales_ledger_product slp on ppri.product_model_id = slp.id
+ left join product_process pp on pp.id = ppri.process_id
+ where ppri.route_id = #{orderId}
+ order by ppri.id
+ </select>
+
+
+</mapper>
--
Gitblit v1.9.3