From 75339563cebc86759a1e8addab9ab5382b4fd1a1 Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期五, 01 十二月 2023 10:34:57 +0800
Subject: [PATCH] 入库统计报表
---
product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java | 1
product-server-project-management/src/main/java/com/product/project/management/controller/ProjectStatisticAnalysisController.java | 31 ++++++++++
product-server-project-management/src/main/java/com/product/project/management/service/ProjectInventoryReportService.java | 66 ++++++++++++++++++++++
product-server-project-management/src/main/java/com/product/project/management/service/ProjectStatisticAnalysisService.java | 27 +++++----
4 files changed, 113 insertions(+), 12 deletions(-)
diff --git a/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java b/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java
index 301e0ff..c9e5e37 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/config/SystemCode.java
@@ -21,6 +21,7 @@
PROJeCT_BUDGET_CLEAR_FAIL_HAS_OUTBOUND("棰勭畻娓呯悊澶辫触锛屽凡缁忓瓨鍦ㄥ嚭搴撴暟鎹紒", ModuleEnum.QXLW_PROJECT.getValue() + "008"),
PROJeCT_OUT_CANCELOUTBOUND_ERROR("鍑哄簱鎾ら攢澶辫触锛�", ModuleEnum.QXLW_PROJECT.getValue() + "009"),
+ PROJECT_INVENTORY_DATA_QUERY_FAIL("鏉愭枡鍏ュ簱鏁版嵁鏌ヨ澶辫触锛�", ModuleEnum.QXLW_PROJECT.getValue() + "010")
;
diff --git a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectStatisticAnalysisController.java b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectStatisticAnalysisController.java
index 7b32d3a..7453491 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectStatisticAnalysisController.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectStatisticAnalysisController.java
@@ -13,6 +13,7 @@
import com.product.module.sys.version.ApiVersion;
import com.product.project.management.config.Cmnconst;
import com.product.project.management.config.SystemCode;
+import com.product.project.management.service.ProjectInventoryReportService;
import com.product.project.management.service.ProjectStatisticAnalysisService;
import com.product.util.BaseUtil;
import com.product.util.ResultInfo;
@@ -23,6 +24,9 @@
@Autowired
ProjectStatisticAnalysisService projectStatisticAnalysisService;
+
+ @Autowired
+ ProjectInventoryReportService projectInventoryReportService;
/**
* 鑾峰彇椤圭洰鍒嗘瀽鏁版嵁
@@ -50,4 +54,31 @@
return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage());
}
}
+
+ /**
+ * 鏉愭枡鍏ュ簱缁熻
+ *
+ * @param request
+ * @return
+ */
+ @RequestMapping(value = "/inventory-report/{version}", method = RequestMethod.POST)
+ @ApiVersion(1)
+ public String inventoryReport(HttpServletRequest request) {
+ try {
+ //鑾峰彇鍙傛暟
+ FieldSetEntity fse = BaseUtil.getFieldSetEntity(request);
+
+ //鍒ゆ柇鏌ヨ骞翠唤鏄惁涓虹┖
+ if (BaseUtil.strIsNull(fse.getString("query_year"))) {
+ return this.error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText());
+ }
+ return OK_List(projectInventoryReportService.inventoryStatisticReport(fse.getDate("query_year","yyyy")));
+ } catch (BaseException e) {
+ e.printStackTrace();
+ return this.error(e);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return this.error(SystemCode.PROJECT_INVENTORY_DATA_QUERY_FAIL.getValue(), SystemCode.PROJECT_INVENTORY_DATA_QUERY_FAIL.getText() + e.getMessage());
+ }
+ }
}
diff --git a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInventoryReportService.java b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInventoryReportService.java
new file mode 100644
index 0000000..20710ef
--- /dev/null
+++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInventoryReportService.java
@@ -0,0 +1,66 @@
+package com.product.project.management.service;
+
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import com.product.core.dao.BaseDao;
+import com.product.core.entity.DataTableEntity;
+import com.product.core.service.support.AbstractBaseService;
+
+/**
+ * 椤圭洰鍏ュ簱缁熻鎶ヨ〃
+ * @author 86151
+ *
+ */
+@Component
+public class ProjectInventoryReportService extends AbstractBaseService{
+
+ @Autowired
+ BaseDao baseDao;
+
+ static final String [] monthName = new String [] {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dece"};
+
+ /**
+ * 鍏ュ簱缁熻鎶ヨ〃
+ * @param queryYear
+ * @return
+ */
+ public DataTableEntity inventoryStatisticReport(String queryYear) {
+
+
+
+ StringBuilder sb = new StringBuilder(1024);
+ //鍘熷鏁版嵁
+ sb.append(" WITH rawData AS(")
+ .append(" SELECT A.material_code, MONTH(B.inbound_date)inbound_month, A.inbound_number ")
+ .append(" FROM product_project_purchase_inbound_sub A ")
+ .append(" LEFT JOIN product_project_purchase_inbound B ON A.inbound_uuid = B.uuid ")
+ .append(" WHERE YEAR(inbound_date) = ").append(queryYear)
+ .append(" ), ");
+
+ //琛屼笓鍒楁暟鎹�
+ sb.append(" convertData AS( ")
+ .append(" SELECT material_code, ");
+ for (int i = 0; i < monthName.length; i++) {
+ sb.append("SUM(CASE WHEN inbound_month = ").append(i+1).append(" THEN inbound_number END) AS ").append(monthName[i]).append(",");
+ }
+ sb.append(" ROUND(SUM(inbound_number)/1000, 1) AS YearSummary ")
+ .append(" FROM rawData ")
+ .append(" GROUP BY material_code ")
+ .append(" ORDER BY material_code ")
+ .append(" ) ");
+
+ //搴曢儴姹囨��
+ sb.append(" SELECT * FROM convertData ")
+ .append(" UNION ALL ")
+ .append(" SELECT '鏈堟�昏(t)', ");
+ for (int i = 0; i < monthName.length; i++) {
+ sb.append("ROUND(SUM(").append(monthName[i]).append(")/1000, 1),");
+ }
+ sb.append(" SUM(YearSummary) ")
+ .append(" FROM convertData ");
+
+ return baseDao.listTable(sb.toString(), new Object[] {});
+ }
+}
\ No newline at end of file
diff --git a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectStatisticAnalysisService.java b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectStatisticAnalysisService.java
index 3edb86c..fa632cd 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectStatisticAnalysisService.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectStatisticAnalysisService.java
@@ -39,16 +39,19 @@
//鏁版嵁搴撳嚭搴撲俊鎭眹鎬�
StringBuilder outboundInfo = new StringBuilder(512);
outboundInfo.append(" WITH outbound AS( ")
- .append(" SELECT project_uuid,itemize,material_type,material_code,SUM(outbound_weight)outbound_weight FROM ( ")
- .append(" SELECT ")
- .append(" A.project_uuid,B.material_type,B.material_code,B.outbound_weight, ")
- .append(" (SELECT itemize FROM product_project_item WHERE project_uuid = A.project_uuid AND itemize_code = substring(C.itemize_code,1,11)) itemize ")
- .append(" FROM product_project_outbound A ")
- .append(" LEFT JOIN product_project_outbound_sub B ON A.uuid=B.outbound_uuid ")
- .append(" LEFT JOIN product_project_item C ON C.uuid = A.project_itemize ")
- .append(" WHERE A.flow_flag=2 AND A.project_uuid=? ")
- .append(" )A GROUP BY project_uuid,itemize,material_type,material_code ")
- .append(" )");
+ .append(" SELECT project_uuid,itemize,material_type,material_code,SUM(outbound_weight)outbound_weight FROM ( ")
+ .append(" SELECT A.project_uuid,A.material_type,A.material_code,A.outbound_weight,B.itemize ")
+ .append(" FROM( ")
+ .append(" SELECT A.project_uuid,B.material_type,B.material_code,B.outbound_weight,substring(C.itemize_code,1,11) itemize ")
+ .append(" FROM product_project_outbound A ")
+ .append(" LEFT JOIN product_project_outbound_sub B ON A.uuid=B.outbound_uuid ")
+ .append(" LEFT JOIN product_project_item C ON C.uuid = A.project_itemize ")
+ .append(" WHERE A.flow_flag=2 AND A.project_uuid=? ")
+ .append(" )A ")
+ .append(" LEFT JOIN product_project_item B ON A.itemize = B.itemize_code ")
+ .append(" WHERE B.project_uuid = ? ")
+ .append(" )A GROUP BY project_uuid,itemize,material_type,material_code ")
+ .append(")");
//鍑哄簱淇℃伅鎿嶄綔锛坓etItemizeSum[閽㈢瓔鍜屾灦绔嬬瓔宸︿晶姹囨�籡锛沘llitemize[鎵�鏈変笁绾у垎椤筣锛沬ntermediateData1[閽㈢瓔鏋剁珛绛嬫寜鍒嗛」姹囨�籡锛沬ntermediateData2[閽㈢瓔缃戠墖鎸夊垎椤瑰拰鏉愭枡姹囨�籡锛沬ntermediateData3[鎶ヨ〃鎴愬瀷]锛�
StringBuilder operateInfo = new StringBuilder(1024);
operateInfo.append(" ,getItemizeSum AS( ")
@@ -131,7 +134,7 @@
.append(" SELECT '鍚堣',ROUND(SUM(outbound_weight)/1000,1) FROM outbound WHERE material_type IN (0,1,3) GROUP BY project_uuid ");
//鑾峰彇SQL瑙f瀽鐨勫熀鏈暟鎹紝鍒╃敤JAVA灏嗛」鐩垎椤瑰搴旂殑涓嶅悓鏉愭枡琛岃浆鍒�
- DataTableEntity dtItemizeInfo = baseDao.listTable(outboundInfo.toString() + operateInfo.toString(), new Object[]{project_uuid});
+ DataTableEntity dtItemizeInfo = baseDao.listTable(outboundInfo.toString() + operateInfo.toString(), new Object[]{project_uuid, project_uuid});
if (!BaseUtil.dataTableIsEmpty(dtItemizeInfo)) {
Map<String, FieldSetEntity> convertData = new HashMap<>();
@@ -176,7 +179,7 @@
}
//璁$畻姹囨��
- DataTableEntity dtTotalInfo = baseDao.listTable(outboundInfo.toString() + totalSum.toString(), new Object[]{project_uuid});
+ DataTableEntity dtTotalInfo = baseDao.listTable(outboundInfo.toString() + totalSum.toString(), new Object[]{project_uuid, project_uuid});
FieldSetEntity fseConvertData = new FieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW);
if (!BaseUtil.dataTableIsEmpty(dtTotalInfo)) {
for (int i = 0; i < dtTotalInfo.getRows(); i++) {
--
Gitblit v1.9.2