From 0d85ccadf29a78342cd268416ce951ea6a78defe Mon Sep 17 00:00:00 2001
From: sgj <1442489573@qq.com>
Date: 星期四, 25 十二月 2025 17:06:42 +0800
Subject: [PATCH] 库存报表列宽调整,映射调整,查询调整,导出实现
---
fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SuperInventoryReportService.java | 60 ++++++++++++++-----
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportOutDetailPR.java | 7 +-
fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportInDetailPR.java | 7 +-
fzzy-igdss-view/src/main/java/com/fzzy/igds/export/ReportController.java | 50 ++++++++++++++++
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportData.java | 20 ++++++
fzzy-igdss-view/src/main/java/com/fzzy/igds/SuperInventoryReport.view.xml | 31 ++++++++--
fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportParam.java | 2
7 files changed, 144 insertions(+), 33 deletions(-)
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportData.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportData.java
index 66abbd6..b0fb321 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportData.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportData.java
@@ -1,15 +1,15 @@
package com.fzzy.igds.data;
+import com.ruoyi.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
/**
- *鐩戠搴撳瓨鎶ヨ〃鏁版嵁
+ * 鐩戠搴撳瓨鎶ヨ〃鏁版嵁
*
* @author sgj
* @date 2025/12/19
-
*/
@Data
public class SuperInventoryReportData implements Serializable {
@@ -19,6 +19,9 @@
/**
* 鏀跺偍鍏徃
*/
+ private String customerId;
+
+ @Excel(name = "鏀跺偍鍏徃", sort = 1)
private String customerName;
/**
@@ -26,45 +29,58 @@
*/
private String deptId;
+ @Excel(name = "鎵�灞炲簱鍖�", sort = 2)
+ private String deptName;
+
/**
* 鎵�灞炰粨搴�
*/
private String depotId;
+ @Excel(name = "鎵�灞炰粨搴�", sort = 3)
+ private String depotName;
+
/**
* 鏈熷垵鏁伴噺(鍗曚綅KG)
*/
+ @Excel(name = "鏈熷垵鏁伴噺(鍗曚綅KG)", sort = 4)
private Double initialWeight = 0.0;
/**
* 鍏ュ簱鏁伴噺(鍗曚綅KG)
*/
+ @Excel(name = "鍏ュ簱鏁伴噺(鍗曚綅KG)", sort = 5)
private Double recordInWeight = 0.0;
/**
* 鍊掑叆鏁伴噺(鍗曚綅KG)
*/
+ @Excel(name = "鍊掑叆鏁伴噺(鍗曚綅KG)", sort = 6)
private Double changeInWeight = 0.0;
/**
* 鍑哄簱鏁伴噺(鍗曚綅KG)
*/
+ @Excel(name = "鍑哄簱鏁伴噺(鍗曚綅KG)", sort = 7)
private Double recordOutWeight = 0.0;
/**
* 鍊掑嚭鏁伴噺(鍗曚綅KG)
*/
+ @Excel(name = "鍊掑嚭鏁伴噺(鍗曚綅KG)", sort = 8)
private Double changeOutWeight = 0.0;
/**
* 鎹熻�楁暟閲�(鍗曚綅KG)
*/
+ @Excel(name = "鎹熻�楁暟閲�(鍗曚綅KG)", sort = 9)
private Double lossWeight = 0.0;
/**
* 鏈熸湯鏁伴噺(鍗曚綅KG)
*/
+ @Excel(name = "鏈熸湯鏁伴噺(鍗曚綅KG)", sort = 10)
private Double finalWeight = 0.0;
}
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportParam.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportParam.java
index 956843a..c5d9ada 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportParam.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/data/SuperInventoryReportParam.java
@@ -14,7 +14,7 @@
public class SuperInventoryReportParam extends IgdsBaseParam {
// 鏀跺偍鍏徃
- private String customerName;
+ private String customerId;
private String title;
diff --git a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SuperInventoryReportService.java b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SuperInventoryReportService.java
index be3b45f..e25501c 100644
--- a/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SuperInventoryReportService.java
+++ b/fzzy-igdss-core/src/main/java/com/fzzy/igds/service/SuperInventoryReportService.java
@@ -45,10 +45,9 @@
/**
* 鏌ヨ鎶ヨ〃鏁版嵁
*
+ * @param param
* @author sgj
* @date 2025/12/19
- * @param param
-
*/
public List<SuperInventoryReportData> listSuperInventoryReportData(SuperInventoryReportParam param) {
//1.鑾峰彇鏌ヨ寰楄捣姝㈡椂闂达紝濡傛灉娌℃湁鍒欙紝榛樿鎴鏃堕棿涓哄綋澶╋紝璧峰鏃堕棿涓�30澶╁墠
@@ -66,12 +65,26 @@
//榛樿搴撳尯缂栫爜
String deptId = ContextUtil.subDeptId(null);
param.setCompanyId(companyId);
+
+ //region 鏌ヨ鏉′欢鏀跺偍鍏徃鍜屾墍灞炲簱鍖哄鐞�
+ if (StringUtils.isNotEmpty(param.getDeptId()) && StringUtils.isNotEmpty(param.getCustomerId())) {
+ String substring = param.getDeptId().substring(0, (param.getDeptId().length() - 3));
+ if (!substring.equals(param.getCustomerId())) {
+ return new ArrayList<SuperInventoryReportData>();
+ }
+ }
if (StringUtils.isEmpty(param.getDeptId())) {
+ param.setDeptId(param.getCustomerId());
+ }
+ //鏀跺偍鍏徃锛屾墍灞炲簱鍖烘煡璇㈠潎涓虹┖锛屽垯鏌ヨ榛樿搴撳尯
+ if (StringUtils.isEmpty(param.getCustomerId()) && StringUtils.isEmpty(param.getDeptId())) {
param.setDeptId(deptId);
}
+ //endregion
//region 鍒濆鍖栭渶瑕佽寖鍥寸殑鏁版嵁
- Map<String, SuperInventoryReportData> resultMap = new HashMap<>();
+ Map<String, SuperInventoryReportData> columsMap = new HashMap<>();
+
//鏌ヨ褰撳墠鐢ㄦ埛涓嬪睘鐨勬墍鏈夊簱鍖�
List<Dept> deptList = coreDeptService.getDeptData();
if (null == deptList || deptList.isEmpty()) {
@@ -79,10 +92,12 @@
}
//棰勫姞杞芥墍鏈夐儴闂ㄤ笅鐨勪粨搴撲俊鎭紝鍑忓皯閲嶅鏌ヨ
+ Map<String, Dept> deptCache = new HashMap<>();
Map<String, List<Depot>> deptDepotsMap = new HashMap<>();
Map<String, Company> companyCache = new HashMap<>();
for (Dept dept : deptList) {
+ deptCache.put(dept.getId(), dept);
//鑾峰彇搴撳尯涓嬫墍鏈変粨搴�
List<Depot> depotList = depotService.getData(companyId, dept.getId(), true);
if (null == depotList || depotList.isEmpty()) {
@@ -99,27 +114,30 @@
}
}
- //鏋勫缓缁撴灉鏁版嵁
+ //鏋勫缓缁撴灉鏁版嵁鏄犲皠map
for (Map.Entry<String, List<Depot>> entry : deptDepotsMap.entrySet()) {
String deptIdKey = entry.getKey();
Company company = companyCache.get(deptIdKey.substring(0, deptIdKey.length() - 3));
-
+ Dept dept = deptCache.get(deptIdKey);
for (Depot depot : entry.getValue()) {
//搴撳尯缂栫爜+浠撳簱缂栫爜缁勬垚鍞竴閿�
String key = deptIdKey + "_" + depot.getId();
SuperInventoryReportData data = new SuperInventoryReportData();
-
- data.setCustomerName(Optional.ofNullable(company)
+ data.setCustomerId(Optional.ofNullable(company)
.map(Company::getId)
.orElse("-"));
+ data.setCustomerName(Optional.ofNullable(company)
+ .map(Company::getDwmc)
+ .orElse("-"));
data.setDeptId(deptIdKey);
+ data.setDeptName(dept.getKqmc());
data.setDepotId(depot.getId());
- resultMap.put(key, data);
+ data.setDepotName(depot.getName());
+ columsMap.put(key, data);
}
}
//endregion
-
- if (resultMap.isEmpty()) {
+ if (columsMap.isEmpty()) {
return new ArrayList<>();
}
@@ -137,10 +155,11 @@
.collect(Collectors.groupingBy(record -> record.getDeptId() + "_" + record.getDepotId()));
//4. 鏍规嵁搴撳尯銆佷粨搴撲负鍞竴閿紝缁勮鎶ヨ〃鏁版嵁
+ List<SuperInventoryReportData> result = new ArrayList<>();
Date todayZero = DateUtil.getCurZero(new Date());
boolean isEndDateBeforeToday = param.getEnd().before(todayZero);
- for (SuperInventoryReportData data : resultMap.values()) {
+ for (SuperInventoryReportData data : columsMap.values()) {
String dataKey = data.getDeptId() + "_" + data.getDepotId();
//鑾峰彇搴撳瓨鏁版嵁
@@ -227,9 +246,10 @@
data.setChangeOutWeight(sumStockChangeOut);
data.setLossWeight(sumLossOver);
data.setFinalWeight(finalWeight);
+ result.add(data);
}
- return new ArrayList<>(resultMap.values());
+ return result;
}
/**
@@ -238,7 +258,9 @@
private List<DepotStore> queryDepotStores(SuperInventoryReportParam param) {
QueryWrapper<DepotStore> depotStoreQueryWrapper = new QueryWrapper<>();
depotStoreQueryWrapper.eq("company_id", param.getCompanyId());
- depotStoreQueryWrapper.eq("dept_id", param.getDeptId());
+ if (StringUtils.isNotBlank(param.getDeptId())) {
+ depotStoreQueryWrapper.likeRight("dept_id", param.getDeptId());
+ }
depotStoreQueryWrapper.between("create_time", param.getStart(), param.getEnd());
depotStoreQueryWrapper.orderByAsc("create_time");
return depotStoreMapper.selectList(depotStoreQueryWrapper);
@@ -250,7 +272,9 @@
private List<InoutRecord> queryInoutRecords(SuperInventoryReportParam param) {
QueryWrapper<InoutRecord> inoutRecordQueryWrapper = new QueryWrapper<>();
inoutRecordQueryWrapper.eq("company_id", param.getCompanyId());
- inoutRecordQueryWrapper.eq("dept_id", param.getDeptId());
+ if (StringUtils.isNotBlank(param.getDeptId())) {
+ inoutRecordQueryWrapper.likeRight("dept_id", param.getDeptId());
+ }
inoutRecordQueryWrapper.between("create_time", param.getStart(), param.getEnd());
inoutRecordQueryWrapper.orderByAsc("create_time");
return inoutRecordMapper.selectList(inoutRecordQueryWrapper);
@@ -262,7 +286,9 @@
private List<InoutStockChange> queryInoutStockChanges(SuperInventoryReportParam param) {
QueryWrapper<InoutStockChange> inoutStockChangeQueryWrapper = new QueryWrapper<>();
inoutStockChangeQueryWrapper.eq("company_id", param.getCompanyId());
- inoutStockChangeQueryWrapper.eq("dept_id", param.getDeptId());
+ if (StringUtils.isNotBlank(param.getDeptId())) {
+ inoutStockChangeQueryWrapper.likeRight("dept_id", param.getDeptId());
+ }
inoutStockChangeQueryWrapper.between("create_time", param.getStart(), param.getEnd());
inoutStockChangeQueryWrapper.orderByAsc("create_time");
return inoutStockChangeMapper.selectList(inoutStockChangeQueryWrapper);
@@ -274,7 +300,9 @@
private List<InoutLossOver> queryInoutLossOvers(SuperInventoryReportParam param) {
QueryWrapper<InoutLossOver> inoutLossOverQueryWrapper = new QueryWrapper<>();
inoutLossOverQueryWrapper.eq("company_id", param.getCompanyId());
- inoutLossOverQueryWrapper.eq("dept_id", param.getDeptId());
+ if (StringUtils.isNotBlank(param.getDeptId())) {
+ inoutLossOverQueryWrapper.likeRight("dept_id", param.getDeptId());
+ }
inoutLossOverQueryWrapper.between("create_time", param.getStart(), param.getEnd());
inoutLossOverQueryWrapper.orderByAsc("create_time");
return inoutLossOverMapper.selectList(inoutLossOverQueryWrapper);
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportInDetailPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportInDetailPR.java
index e0dc0e3..0ef8025 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportInDetailPR.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportInDetailPR.java
@@ -77,15 +77,16 @@
//澶氬弬鏁板垎椤垫煡璇�
com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutRecord> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(0, 10000);
//鏀跺偍鍏徃鏌ヨ澶勭悊
- if(StringUtils.isEmpty(param.getDeptId())){
- param.setDeptId(param.getCompanyId());
- }
if(StringUtils.isNotEmpty(param.getDeptId()) && StringUtils.isNotEmpty(param.getCompanyId())){
String substring = param.getDeptId().substring(0, (param.getDeptId().length() - 3));
if (!substring.equals(param.getCompanyId())){
return new ArrayList<InoutRecord>();
}
}
+ if(StringUtils.isEmpty(param.getDeptId())){
+ param.setDeptId(param.getCompanyId());
+ }
+
param.setCompanyId(null);
inoutReportService.listPageInout(corePage, param);
//鑾峰彇鏌ヨ鍒板緱list鏁版嵁
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportOutDetailPR.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportOutDetailPR.java
index fa40828..f3cc834 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportOutDetailPR.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/ReportOutDetailPR.java
@@ -77,15 +77,16 @@
//澶氬弬鏁板垎椤垫煡璇�
com.baomidou.mybatisplus.extension.plugins.pagination.Page<InoutRecord> corePage = new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(0, 10000);
//鏀跺偍鍏徃鏌ヨ澶勭悊
- if(StringUtils.isEmpty(param.getDeptId())){
- param.setDeptId(param.getCompanyId());
- }
if(StringUtils.isNotEmpty(param.getDeptId()) && StringUtils.isNotEmpty(param.getCompanyId())){
String substring = param.getDeptId().substring(0, (param.getDeptId().length() - 3));
if (!substring.equals(param.getCompanyId())){
return new ArrayList<InoutRecord>();
}
}
+ if(StringUtils.isEmpty(param.getDeptId())){
+ param.setDeptId(param.getCompanyId());
+ }
+
param.setCompanyId(null);
inoutReportService.listPageInout(corePage, param);
//鑾峰彇鏌ヨ鍒板緱list鏁版嵁
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SuperInventoryReport.view.xml b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SuperInventoryReport.view.xml
index 7e7a9cc..260a93d 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/SuperInventoryReport.view.xml
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/SuperInventoryReport.view.xml
@@ -5,7 +5,7 @@
<Model>
<DataType name="dtMain">
<Property name="creationType">com.fzzy.igds.data.SuperInventoryReportData</Property>
- <PropertyDef name="customerName">
+ <PropertyDef name="customerId">
<Property name="label">鏀跺偍鍏徃</Property>
<Property name="mapping">
<Property name="mapValues">${dorado.getDataProvider("companyPR#getData").getResult()}</Property>
@@ -93,7 +93,7 @@
<Property name="label">鎴鏃堕棿</Property>
<Property name="dataType">Date</Property>
</PropertyDef>
- <PropertyDef name="customerName">
+ <PropertyDef name="customerId">
<Property></Property>
<Property name="label">鏀跺偍鍏徃</Property>
<Property name="mapping">
@@ -153,8 +153,8 @@
<Property name="labelWidth">110</Property>
<Property name="exClassName">bg-color</Property>
<AutoFormElement>
- <Property name="property">customerName</Property>
- <Property name="name">customerName</Property>
+ <Property name="property">customerId</Property>
+ <Property name="name">customerId</Property>
</AutoFormElement>
<AutoFormElement>
<Property name="name">deptId</Property>
@@ -185,6 +185,14 @@
<Property name="caption">閲嶇疆</Property>
</Button>
<Button layoutConstraint="left">
+ <ClientEvent name="onClick">var data = view.get("#dsQuery.data");
+var param = {
+ "deptId":data.get("deptId"),
+ "customerId":data.get("customerId"),
+ "start":data.get("start"),
+ "end":data.get("end")
+}
+window.parent.$.table.exportExcelDorado("./export/superInventoryReport-excel", "搴撳瓨鏁版嵁", param);</ClientEvent>
<Property name="caption">瀵煎嚭EXCEL</Property>
<Property name="exClassName">btn-q2</Property>
<Property name="width">140</Property>
@@ -244,35 +252,46 @@
<Property name="headerRowHeight">30</Property>
<Property name="rowHeight">50</Property>
<RowNumColumn/>
- <DataColumn name="customerName">
- <Property name="property">customerName</Property>
+ <DataColumn>
+ <Property name="property">customerId</Property>
+ <Property name="width">326</Property>
+ <Property name="name">customerId</Property>
</DataColumn>
<DataColumn name="deptId">
<Property name="property">deptId</Property>
+ <Property name="width">250</Property>
</DataColumn>
<DataColumn name="depotId">
<Property name="property">depotId</Property>
+ <Property name="width">326</Property>
</DataColumn>
<DataColumn name="initialWeight">
<Property name="property">initialWeight</Property>
+ <Property name="width">100</Property>
</DataColumn>
<DataColumn name="recordInWeight">
<Property name="property">recordInWeight</Property>
+ <Property name="width">100</Property>
</DataColumn>
<DataColumn name="changeInWeight">
<Property name="property">changeInWeight</Property>
+ <Property name="width">100</Property>
</DataColumn>
<DataColumn name="recordOutWeight">
<Property name="property">recordOutWeight</Property>
+ <Property name="width">100</Property>
</DataColumn>
<DataColumn name="changeOutWeight">
<Property name="property">changeOutWeight</Property>
+ <Property name="width">100</Property>
</DataColumn>
<DataColumn name="lossWeight">
<Property name="property">lossWeight</Property>
+ <Property name="width">100</Property>
</DataColumn>
<DataColumn name="finalWeight">
<Property name="property">finalWeight</Property>
+ <Property name="width">100</Property>
</DataColumn>
</DataGrid>
<ToolBar id="tool" layoutConstraint="bottom">
diff --git a/fzzy-igdss-view/src/main/java/com/fzzy/igds/export/ReportController.java b/fzzy-igdss-view/src/main/java/com/fzzy/igds/export/ReportController.java
index c3704b5..a6b1681 100644
--- a/fzzy-igdss-view/src/main/java/com/fzzy/igds/export/ReportController.java
+++ b/fzzy-igdss-view/src/main/java/com/fzzy/igds/export/ReportController.java
@@ -3,10 +3,15 @@
import com.fzzy.igds.ReportInDetailPR;
import com.fzzy.igds.ReportOutDetailPR;
+import com.fzzy.igds.SuperInventoryReportPR;
import com.fzzy.igds.data.InoutParam;
+import com.fzzy.igds.data.SuperInventoryReportData;
+import com.fzzy.igds.data.SuperInventoryReportParam;
+import com.fzzy.igds.domain.Company;
+import com.fzzy.igds.domain.Depot;
+import com.fzzy.igds.domain.Dept;
import com.fzzy.igds.domain.InoutRecord;
-import com.fzzy.igds.service.InoutRecordService;
-import com.fzzy.igds.service.SysDeptService;
+import com.fzzy.igds.service.*;
import com.fzzy.igds.utils.ContextUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
@@ -19,7 +24,9 @@
import javax.annotation.Resource;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
/**
@@ -39,11 +46,26 @@
@Resource
private SysDeptService sysDeptService;
+
+ @Resource
+ private CoreDeptService coreDeptService;
+ @Resource
+ private DepotService depotService;
+
+ @Resource
+ private CoreCompanyService coreCompanyService;
+
+
@Autowired
private ReportInDetailPR reportInDetailPR;
@Autowired
private ReportOutDetailPR reportOutDetailPR;
+ @Autowired
+ private SuperInventoryReportPR superInventoryReportPR;
+
+
+
@@ -81,4 +103,28 @@
return util.exportExcel(list, sheetName, deptName);
}
+
+ /**
+ * 搴撳瓨鎶ヨ〃瀵煎嚭
+ * @return
+ */
+ @RequestMapping("/superInventoryReport-excel")
+ @ResponseBody
+ public AjaxResult superInventoryReport(SuperInventoryReportParam param) {
+ //璁剧疆鏍囬
+ String sheetName = "搴撳瓨鎶ヨ〃鏁版嵁";
+ //鏌ヨ鏁版嵁
+ List<SuperInventoryReportData> list = superInventoryReportPR.getReportData(param);
+ //鑾峰彇鍒嗗簱缂栫爜瀵瑰簲鐨勫垎搴撳悕绉�
+ String deptName = "";
+ SysDept subDept = sysDeptService.getCacheDept(null, ContextUtil.subDeptId(null));
+ if (null != subDept) {
+ deptName = subDept.getDeptName();
+ }
+
+ //瀵煎嚭
+ ExcelUtil<SuperInventoryReportData> util = new ExcelUtil<SuperInventoryReportData>(SuperInventoryReportData.class);
+ return util.exportExcel(list, sheetName, deptName);
+ }
+
}
--
Gitblit v1.9.3