From 65d2410369591a9128acd4832b362e673772f409 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期一, 10 十一月 2025 15:17:31 +0800
Subject: [PATCH] yys 优化仓储物流整体逻辑
---
src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java | 1
src/main/resources/mapper/production/SalesLedgerWorkMapper.xml | 1
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java | 16 +
src/main/resources/application-native.yml | 219 ++++++++++++++++++
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java | 4
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java | 132 +++++++++++
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java | 4
src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java | 6
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java | 47 +++
src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java | 89 +++++++
src/main/java/com/ruoyi/production/pojo/SalesLedgerWork.java | 5
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java | 12 +
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java | 4
src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java | 7
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml | 102 +++++++
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java | 17 +
src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java | 11
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java | 2
src/main/resources/application.yml | 2
19 files changed, 664 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
index 1f73ebe..8ab1c1a 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordController.java
@@ -7,6 +7,7 @@
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.procurementrecord.dto.*;
+import com.ruoyi.procurementrecord.pojo.CustomStorage;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -33,7 +34,7 @@
@GetMapping("/productlist")
@Log(title = "閲囪喘鍏ュ簱-鍏ュ簱绠$悊-鏂板鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
public AjaxResult list(ProcurementDto procurementDto) {
- List<ProcurementDto> result =procurementRecordService.listProcurementBySalesLedgerId(procurementDto);
+ List<ProcurementDto> result = procurementRecordService.listProcurementBySalesLedgerId(procurementDto);
return AjaxResult.success(result);
}
@@ -44,6 +45,13 @@
procurementDto.setType(1);
procurementDto.setTypeName("閲囪喘鍏ュ簱");
return AjaxResult.success(procurementRecordService.add(procurementDto));
+ }
+
+ @PostMapping("/addCustom")
+ @Log(title = "鑷畾涔夊叆搴�-鍏ュ簱绠$悊-鏂板鍏ュ簱", businessType = BusinessType.INSERT)
+ @Transactional
+ public AjaxResult addCustom(@RequestBody List<CustomStorage> customStorage) {
+ return procurementRecordService.addCustom(customStorage);
}
@PostMapping("/update")
@@ -71,16 +79,47 @@
@Log(title = "閲囪喘鍏ュ簱-鍏ュ簱绠$悊-鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
@ApiOperation(value = "鍏ュ簱鏌ヨ")
public AjaxResult listPage(Page page, ProcurementPageDto procurementDto) {
- IPage<ProcurementPageDto> result =procurementRecordService.listPage(page, procurementDto);
+ IPage<ProcurementPageDto> result = procurementRecordService.listPage(page, procurementDto);
+ return AjaxResult.success(result);
+ }
+
+ @GetMapping("/listPageByProduction")
+ @Log(title = "鐢熶骇鍏ュ簱-鍏ュ簱绠$悊-鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
+ @ApiOperation(value = "鍏ュ簱鏌ヨ")
+ public AjaxResult listPageByProduction(Page page, ProcurementPageDto procurementDto) {
+ IPage<ProcurementPageDto> result = procurementRecordService.listPageByProduction(page, procurementDto);
+ return AjaxResult.success(result);
+ }
+
+ @GetMapping("/listPageByCustom")
+ @Log(title = "鑷畾涔夊叆搴�-鍏ュ簱绠$悊-鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
+ @ApiOperation(value = "鍏ュ簱鏌ヨ")
+ public AjaxResult listPageByCustom(Page page, CustomStorage customStorage) {
+ IPage<CustomStorage> result = procurementRecordService.listPageByCustom(page, customStorage);
return AjaxResult.success(result);
}
@GetMapping("/listPageCopy")
- @Log(title = "閲囪喘鍏ュ簱-鍏ュ簱绠$悊-鍏ュ簱鏌ヨ", businessType = BusinessType.OTHER)
+ @Log(title = "閲囪喘鍏ュ簱-搴撳瓨绠$悊-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
public AjaxResult listPageCopy(Page page, ProcurementPageDto procurementDto) {
- IPage<ProcurementPageDtoCopy> result =procurementRecordService.listPageCopy(page, procurementDto);
+ IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopy(page, procurementDto);
return AjaxResult.success(result);
}
+
+ @GetMapping("/listPageCopyByProduction")
+ @Log(title = "鐢熶骇鍏ュ簱-搴撳瓨绠$悊-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPageCopyByProduction(Page page, ProcurementPageDto procurementDto) {
+ IPage<ProcurementPageDtoCopy> result = procurementRecordService.listPageCopyByProduction(page, procurementDto);
+ return AjaxResult.success(result);
+ }
+
+ @GetMapping("/listPageCopyByCustom")
+ @Log(title = "鑷畾涔夊叆搴�-搴撳瓨绠$悊-鍒嗛〉鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPageCopyByCustom(Page page, CustomStorage customStorage) {
+ IPage<CustomStorage> result = procurementRecordService.listPageCopyByCustom(page, customStorage);
+ return AjaxResult.success(result);
+ }
+
@GetMapping("/getReportList")
@Log(title = "搴撳瓨鎶ヨ〃鏌ヨ", businessType = BusinessType.OTHER)
public AjaxResult getReportList(Page page, ProcurementPageDto procurementDto) {
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
index 9e7c186..d3f35a1 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementAddDto.java
@@ -16,7 +16,7 @@
private String nickName;
/**
- * 鍏ュ簱绫诲瀷 1-閲囪喘 2-鐢熶骇
+ * 鍏ュ簱绫诲瀷 1-閲囪喘 2-鐢熶骇 3-鑷畾涔�
*/
private Integer type;
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
index c977127..8e253da 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDto.java
@@ -33,10 +33,25 @@
private String inboundBatches;
/**
- * 鍚堝悓鍙�
+ * 閲囪喘鍚堝悓鍙�
*/
private String purchaseContractNumber;
+ /**
+ * 閿�鍞悎鍚屽彿
+ */
+ private String salesContractNo;
+
+ /**
+ * 瀹㈡埛鍚堝悓鍙�
+ */
+ private String customerContractNo;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ private String customerName;
+
private String salesLedgerProductId;
/**
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
index 9592ad1..ce41cd3 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementPageDtoCopy.java
@@ -32,6 +32,22 @@
*/
private String purchaseContractNumber;
+
+ /**
+ * 閿�鍞悎鍚屽彿
+ */
+ private String salesContractNo;
+
+ /**
+ * 瀹㈡埛鍚堝悓鍙�
+ */
+ private String customerContractNo;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ private String customerName;
+
private String salesLedgerProductId;
/**
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java
new file mode 100644
index 0000000..06469b6
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/CustomStorageMapper.java
@@ -0,0 +1,11 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.procurementrecord.pojo.CustomStorage;
+
+/**
+ * @author :yys
+ * @date : 2025/11/10 13:11
+ */
+public interface CustomStorageMapper extends BaseMapper<CustomStorage> {
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
index 1336f39..bd0f2a2 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordMapper.java
@@ -31,4 +31,8 @@
List<ProcurementPageDtoCopy> listCopy();
List<ProcurementPageDto> list();
+
+ IPage<ProcurementPageDto> listPageByProduction(Page page, @Param("req") ProcurementPageDto procurementDto);
+
+ IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, @Param("req") ProcurementPageDto procurementDto);
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java b/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
new file mode 100644
index 0000000..0594a58
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/CustomStorage.java
@@ -0,0 +1,89 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * @author :yys
+ * @date : 2025/11/10 11:51
+ */
+@TableName("custom_storage")
+@Data
+public class CustomStorage {
+
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+ // 鍏ュ簱鏃堕棿
+ @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ private Date inboundDate;
+ // 鐗╁搧绫诲瀷
+ private String itemType;
+ // 鍏ュ簱鎵规
+ private String inboundBatches;
+ // 鍏ュ簱鏁伴噺
+ private BigDecimal inboundNum;
+ // 渚涘簲鍟嗗悕绉�
+ private String supplierName;
+ // 浜у搧澶х被
+ private String productCategory;
+ // 瑙勬牸鍨嬪彿
+ private String specificationModel;
+ // 鍗曚綅
+ private String unit;
+ // 鍚◣鍗曚环
+ private BigDecimal taxInclusiveUnitPrice;
+ // 鍚◣鎬讳环
+ private BigDecimal taxInclusiveTotalPrice;
+ // 绋庣巼(%)
+ private BigDecimal taxRate;
+ // 涓嶅惈绋庢�讳环
+ private BigDecimal taxExclusiveTotalPrice;
+ /**
+ * 鍑哄嚭搴撶敤鎴�
+ */
+ private String createBy;
+ /**
+ * 鍏ュ簱鐢ㄦ埛id
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long createUser;
+
+ /**
+ * 鍏ュ簱鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ /**
+ * 淇敼鑰�
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Long updateUser;
+
+ /**
+ * 淇敼鏃堕棿
+ */
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+
+ /**
+ * 绉熸埛ID
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
index b09b0f3..45de179 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
@@ -54,21 +54,25 @@
/**
* 鍏ュ簱鐢ㄦ埛id
*/
+ @TableField(fill = FieldFill.INSERT)
private Long createUser;
/**
* 鍏ュ簱鏃堕棿
*/
+ @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 淇敼鑰�
*/
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;
/**
* 淇敼鏃堕棿
*/
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/**
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
index 91df389..a749788 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordStorage.java
@@ -59,21 +59,25 @@
/**
* 鍏ュ簱鐢ㄦ埛id
*/
+ @TableField(fill = FieldFill.INSERT)
private Long createUser;
/**
* 鍏ュ簱鏃堕棿
*/
+ @TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/**
* 淇敼鑰�
*/
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private Long updateUser;
/**
* 淇敼鏃堕棿
*/
+ @TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
/**
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
index 79603ae..feabbf3 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordService.java
@@ -3,7 +3,9 @@
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.framework.web.domain.AjaxResult;
import com.ruoyi.procurementrecord.dto.*;
+import com.ruoyi.procurementrecord.pojo.CustomStorage;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import javax.servlet.http.HttpServletResponse;
@@ -34,4 +36,14 @@
void exportCopy(HttpServletResponse response);
Map<String, Object> getReportList(Page page, ProcurementPageDto procurementDto);
+
+ IPage<ProcurementPageDto> listPageByProduction(Page page, ProcurementPageDto procurementDto);
+
+ AjaxResult addCustom(List<CustomStorage> customStorage);
+
+ IPage<CustomStorage> listPageByCustom(Page page, CustomStorage customStorage);
+
+ IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, ProcurementPageDto procurementDto);
+
+ IPage<CustomStorage> listPageCopyByCustom(Page page, CustomStorage customStorage);
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index 3c1a4a8..3d03087 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -7,9 +7,12 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.security.LoginUser;
+import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.procurementrecord.dto.*;
+import com.ruoyi.procurementrecord.mapper.CustomStorageMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordMapper;
import com.ruoyi.procurementrecord.mapper.ProcurementRecordOutMapper;
+import com.ruoyi.procurementrecord.pojo.CustomStorage;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordStorage;
import com.ruoyi.procurementrecord.pojo.ProcurementRecordOut;
import com.ruoyi.procurementrecord.service.ProcurementRecordService;
@@ -21,6 +24,7 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
@@ -336,6 +340,134 @@
}
@Override
+ public IPage<ProcurementPageDto> listPageByProduction(Page page, ProcurementPageDto procurementDto) {
+ IPage<ProcurementPageDto> procurementPageDtoIPage = procurementRecordMapper.listPageByProduction(page, procurementDto);
+ List<ProcurementPageDto> procurementPageDtos = procurementPageDtoIPage.getRecords();
+ // 璁$畻寰呭叆搴撴暟閲�
+ // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+ List<Integer> collect = procurementPageDtos.stream().map(ProcurementPageDto::getId).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty( collect)){
+ return procurementPageDtoIPage;
+ }
+ LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+ List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
+ if(CollectionUtils.isEmpty( procurementRecords)){
+ return procurementPageDtoIPage;
+ }
+ for (ProcurementPageDto dto : procurementPageDtos) {
+ // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍
+ List<ProcurementRecordOut> collect1 = procurementRecords.stream()
+ .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()))
+ .collect(Collectors.toList());
+
+ // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
+ if(CollectionUtils.isEmpty(collect1)){
+ dto.setInboundNum0(dto.getInboundNum());
+ continue;
+ }
+
+ // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲�
+ BigDecimal totalInboundNum = collect1.stream()
+ .map(ProcurementRecordOut::getInboundNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+
+ // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
+ dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
+ }
+ return procurementPageDtoIPage;
+ }
+
+ private final CustomStorageMapper customStorageMapper;
+
+ @Override
+ public AjaxResult addCustom(List<CustomStorage> customStorage) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ if(CollectionUtils.isEmpty(customStorage)){
+ return AjaxResult.error("鏁版嵁涓嶈兘涓虹┖");
+ }
+ customStorage.forEach(item -> {
+ // 鏌ヨ閲囪喘鍏ュ簱鏁伴噺
+ Long aLong = customStorageMapper.selectCount(null);
+ item.setInboundBatches(aLong.equals(0L) ? "绗�1鎵规(鑷畾涔夊叆搴�)" : "绗�"+ (aLong + 1) + "鎵规(鑷畾涔夊叆搴�)" );
+ item.setCreateBy(loginUser.getNickName());
+ customStorageMapper.insert(item);
+ });
+ return AjaxResult.success("鑷畾涔夊叆搴撴垚鍔�");
+ }
+
+ @Override
+ public IPage<CustomStorage> listPageByCustom(Page page, CustomStorage customStorage) {
+ LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ if(customStorage != null){
+ if(!StringUtils.isEmpty(customStorage.getSupplierName())){
+ customStorageLambdaQueryWrapper.like(CustomStorage::getSupplierName, customStorage.getSupplierName());
+ }
+ // 绛涢�夊叆搴撴椂闂�
+ if(customStorage.getInboundDate() != null){
+ customStorageLambdaQueryWrapper.eq(CustomStorage::getInboundDate, customStorage.getInboundDate());
+ }
+ }
+ return customStorageMapper.selectPage(page, customStorageLambdaQueryWrapper);
+ }
+
+ @Override
+ public IPage<ProcurementPageDtoCopy> listPageCopyByProduction(Page page, ProcurementPageDto procurementDto) {
+ IPage<ProcurementPageDtoCopy> procurementPageDtoCopyIPage = procurementRecordMapper.listPageCopyByProduction(page, procurementDto);
+ List<ProcurementPageDtoCopy> procurementPageDtoCopyList = procurementPageDtoCopyIPage.getRecords();
+ // 璁$畻寰呭叆搴撴暟閲�
+ // 鏌ヨ閲囪喘璁板綍宸插叆搴撴暟閲�
+ List<Integer> collect = procurementPageDtoCopyList.stream().map(ProcurementPageDtoCopy::getId).collect(Collectors.toList());
+ if(CollectionUtils.isEmpty( collect)){
+ return procurementPageDtoCopyIPage;
+ }
+ LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
+ List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
+ if(CollectionUtils.isEmpty( procurementRecords)){
+ return procurementPageDtoCopyIPage;
+ }
+ for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) {
+ // 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍
+ List<ProcurementRecordOut> collect1 = procurementRecords.stream()
+ .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()))
+ .collect(Collectors.toList());
+
+ // 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
+ if(CollectionUtils.isEmpty(collect1)){
+ dto.setInboundNum0(dto.getInboundNum());
+ continue;
+ }
+
+ // 璁$畻宸插嚭搴撴暟閲忔�诲拰锛屽苟璁剧疆寰呭嚭搴撴暟閲�
+ BigDecimal totalInboundNum = collect1.stream()
+ .map(ProcurementRecordOut::getInboundNum)
+ .reduce(BigDecimal.ZERO, BigDecimal::add);
+ // 鍑哄簱鏁伴噺 = 鎬绘暟閲� - 寰呭嚭搴撴暟閲�
+ dto.setTotalInboundNum(totalInboundNum);
+ // 寰呭嚭搴撴暟閲� = 鎬绘暟閲� - 宸插嚭搴撴暟閲�
+ dto.setInboundNum0(dto.getInboundNum().subtract(totalInboundNum));
+ }
+ return procurementPageDtoCopyIPage;
+ }
+
+ @Override
+ public IPage<CustomStorage> listPageCopyByCustom(Page page, CustomStorage customStorage) {
+ LambdaQueryWrapper<CustomStorage> customStorageLambdaQueryWrapper = new LambdaQueryWrapper<>();
+ customStorageLambdaQueryWrapper.groupBy(CustomStorage::getSupplierName, CustomStorage::getProductCategory, CustomStorage::getSpecificationModel);
+ if(customStorage != null){
+ if(!StringUtils.isEmpty(customStorage.getSupplierName())){
+ customStorageLambdaQueryWrapper.like(CustomStorage::getSupplierName, customStorage.getSupplierName());
+ }
+ // 绛涢�夊叆搴撴椂闂�
+ if(customStorage.getInboundDate() != null){
+ customStorageLambdaQueryWrapper.eq(CustomStorage::getInboundDate, customStorage.getInboundDate());
+ }
+ }
+ return customStorageMapper.selectPage(page, customStorageLambdaQueryWrapper);
+ }
+
+ @Override
public int add(ProcurementAddDto procurementDto) {
LoginUser loginUser = SecurityUtils.getLoginUser();
// 鎵归噺鏂板
diff --git a/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java b/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java
index da2ed71..8df5d32 100644
--- a/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java
+++ b/src/main/java/com/ruoyi/production/dto/ProcessSchedulingDto.java
@@ -66,5 +66,11 @@
@ApiModelProperty(value = "鍙e懗鍒嗙被")
private String type;
+ /**
+ * 棰嗙敤
+ */
+ @ApiModelProperty(value = "棰嗙敤")
+ private String receive;
+
}
diff --git a/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java b/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
index a32bd62..0b3af3c 100644
--- a/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
+++ b/src/main/java/com/ruoyi/production/dto/SalesLedgerWorkDto.java
@@ -107,5 +107,12 @@
@Excel(name = "鍙e懗鍒嗙被")
private String type;
+ /**
+ * 棰嗙敤
+ */
+ @ApiModelProperty(value = "棰嗙敤")
+ @Excel(name = "棰嗙敤")
+ private String receive;
+
}
diff --git a/src/main/java/com/ruoyi/production/pojo/SalesLedgerWork.java b/src/main/java/com/ruoyi/production/pojo/SalesLedgerWork.java
index f6c2a38..50e9ca9 100644
--- a/src/main/java/com/ruoyi/production/pojo/SalesLedgerWork.java
+++ b/src/main/java/com/ruoyi/production/pojo/SalesLedgerWork.java
@@ -93,6 +93,11 @@
private String type;
/**
+ * 棰嗙敤
+ */
+ private String receive;
+
+ /**
* 鍒涘缓鑰�
*/
@TableField(fill = FieldFill.INSERT)
diff --git a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
index 995629d..0be634b 100644
--- a/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
+++ b/src/main/java/com/ruoyi/production/service/impl/SalesLedgerSchedulingServiceImpl.java
@@ -171,6 +171,7 @@
.remark(processSchedulingDto.getRemark())
.type(processSchedulingDto.getType())
.loss(processSchedulingDto.getLoss())
+ .receive(processSchedulingDto.getReceive())
.salesLedgerProductId(salesLedgerScheduling.getSalesLedgerProductId())
.schedulingUserId(salesLedgerScheduling.getSchedulingUserId())
.schedulingUserName(sysUser.getNickName())
diff --git a/src/main/resources/application-native.yml b/src/main/resources/application-native.yml
new file mode 100644
index 0000000..e793077
--- /dev/null
+++ b/src/main/resources/application-native.yml
@@ -0,0 +1,219 @@
+# 椤圭洰鐩稿叧閰嶇疆
+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
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 8080
+ 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: demo-product
+# 鐢ㄦ埛閰嶇疆
+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://localhost:3306/product-inventory-management?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: 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: 192.168.1.185
+ # 绔彛锛岄粯璁や负6379
+ port: 6379
+ # 鏁版嵁搴撶储寮�
+ database: 0
+ # 瀵嗙爜
+# password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+
+# 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/application.yml b/src/main/resources/application.yml
index 6a88940..8b9d23f 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,4 +1,4 @@
# Spring閰嶇疆
spring:
profiles:
- active: hckx
+ active: native
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index 58fbaa2..3f059e7 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -50,15 +50,12 @@
t1.create_by,
t2.warn_num
from procurement_record_storage t1
- left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+ left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 2
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
<where>
- 1 = 1
+ t1.type = 1
<if test="req.supplierName != null and req.supplierName != ''">
and t3.supplier_name like concat('%',#{req.supplierName},'%')
- </if>
- <if test="req.type != null and req.type != ''">
- and t1.type = #{req.type}
</if>
<if test="req.timeStr != null and req.timeStr != ''">
and t1.create_time like concat('%',#{req.timeStr},'%')
@@ -112,15 +109,12 @@
t1.create_by,
t2.warn_num
from procurement_record_storage t1
- left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
+ left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 2
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
<where>
- 1 = 1
+ t1.type = 1
<if test="req.supplierName != null and req.supplierName != ''">
and t3.supplier_name like concat('%',#{req.supplierName},'%')
- </if>
- <if test="req.type != null and req.type != ''">
- and t1.type = #{req.type}
</if>
<if test="req.timeStr != null and req.timeStr != ''">
and t1.create_time like concat('%',#{req.timeStr},'%')
@@ -169,4 +163,92 @@
left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
</select>
+ <select id="listPageByProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDto">
+ select
+ t3.customer_contract_no,
+ t3.sales_contract_no,
+ t3.customer_name,
+ t2.product_category,
+ t1.id,
+ t1.sales_ledger_product_id,
+ t1.create_user,
+ t2.specification_model,
+ t2.unit,
+ t2.tax_rate,
+ t2.tax_inclusive_unit_price,
+ (t1.inbound_num * t2.tax_inclusive_unit_price) as taxInclusiveTotalPrice,
+ (t1.inbound_num * t2.tax_inclusive_unit_price - t1.inbound_num * t2.tax_inclusive_unit_price * t2.tax_rate / 100) as taxExclusiveTotalPrice,
+ t1.inbound_batches,
+ t1.inbound_num,
+ t1.inbound_num as inboundNum0,
+ t1.create_time,
+ t1.update_time,
+ t1.create_by,
+ t2.warn_num
+ from procurement_record_storage t1
+ left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1
+ left join sales_ledger t3 on t3.id = t2.sales_ledger_id
+ <where>
+ t1.type = 2
+ <if test="req.customerName != null and req.customerName != ''">
+ and t3.customer_name like concat('%',#{req.customerName},'%')
+ </if>
+ <if test="req.timeStr != null and req.timeStr != ''">
+ and t1.create_time like concat('%',#{req.timeStr},'%')
+ </if>
+ </where>
+ </select>
+ <select id="listPageCopyByProduction" resultType="com.ruoyi.procurementrecord.dto.ProcurementPageDtoCopy">
+ select
+ t3.customer_contract_no,
+ t3.sales_contract_no,
+ t3.customer_name,
+ t2.product_category,
+ t1.id,
+ t1.sales_ledger_product_id,
+ t1.create_user,
+ t2.specification_model,
+ t2.unit,
+ t2.min_stock,
+ t2.tax_rate,
+ t2.tax_inclusive_unit_price,
+ t2.tax_inclusive_total_price,
+ t2.tax_exclusive_total_price,
+ t1.inbound_batches,
+ sum(t1.inbound_num) as inboundNum,
+ sum(t1.inbound_num) as inboundNum0,
+ t1.inbound_num as totalInboundNum,
+ t1.create_time,
+ t1.update_time,
+ t1.create_by,
+ t2.warn_num
+ from procurement_record_storage t1
+ left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 1
+ left join sales_ledger t3 on t3.id = t2.sales_ledger_id
+ <where>
+ t1.type = 2
+ <if test="req.customerName != null and req.customerName != ''">
+ and t3.customer_name like concat('%',#{req.customerName},'%')
+ </if>
+ <if test="req.timeStr != null and req.timeStr != ''">
+ and t1.create_time like concat('%',#{req.timeStr},'%')
+ </if>
+ <if test="req.reportDate != null">
+ and t1.create_time >= #{req.reportDate} and t1.create_time < DATE_ADD(#{req.reportDate}, INTERVAL 1 DAY)
+ </if>
+ <if test="req.startMonth != null">
+ and t1.create_time >= #{req.startMonth}
+ </if>
+ <if test="req.endMonth != null">
+ and t1.create_time <= #{req.endMonth}
+ </if>
+ <if test="req.startDate != null">
+ and t1.create_time >= #{req.startDate}
+ </if>
+ <if test="req.endDate != null">
+ and t1.create_time <= #{req.endDate}
+ </if>
+ </where>
+ group by t3.customer_name,t2.product_category,t2.specification_model
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml b/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml
index 87ede93..3201d62 100644
--- a/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml
+++ b/src/main/resources/mapper/production/SalesLedgerWorkMapper.xml
@@ -16,6 +16,7 @@
t4.loss,
t4.type,
t4.remark,
+ t4.receive,
T1.sales_contract_no,
T1.customer_contract_no,
T1.project_name,
--
Gitblit v1.9.3