From c383af8d9624b7d1f8e2111680ea1642593ad805 Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期一, 24 七月 2023 14:42:57 +0800
Subject: [PATCH] 项目调整

---
 product-server-project-management/src/main/java/com/product/project/management/controller/ProjectStatisticAnalysisController.java |   53 +++++
 product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java              |   28 ---
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java                    |  142 ---------------
 product-server-project-management/src/main/java/com/product/project/management/controller/ProjectBudgetController.java            |    5 
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectStatisticAnalysisService.java       |  262 +++++++++++++++++++++++++++++
 5 files changed, 323 insertions(+), 167 deletions(-)

diff --git a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectBudgetController.java b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectBudgetController.java
new file mode 100644
index 0000000..10d1319
--- /dev/null
+++ b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectBudgetController.java
@@ -0,0 +1,5 @@
+package com.product.project.management.controller;
+
+public class ProjectBudgetController {
+
+}
diff --git a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java
index b094be6..1a452dc 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectInfoController.java
@@ -130,34 +130,6 @@
         }
     }
 
-    /**
-     * 鑾峰彇椤圭洰鍒嗘瀽鏁版嵁
-     *
-     * @param request
-     * @return
-     */
-    @RequestMapping(value = "/statist-analysis-report/{version}", method = RequestMethod.POST)
-    @ApiVersion(1)
-    public String statistAnalysis(HttpServletRequest request) {
-        try {
-            //鑾峰彇鍙傛暟
-            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request);
-
-            //鍒ゆ柇uuid鏄惁涓虹┖
-            if (BaseUtil.strIsNull(fse.getString(Cmnconst.PROJECT_UUID))) {
-                return this.error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText());
-            }
-            return ResultInfo.success(projectInfoService.statistAnalysis(fse.getString(Cmnconst.PROJECT_UUID)));
-//    		return OK_List(projectInfoService.statistAnalysis(fse.getString(Cmnconst.PROJECT_UUID)));
-        } catch (BaseException e) {
-            e.printStackTrace();
-            return this.error(e);
-        } catch (Exception e) {
-            e.printStackTrace();
-            return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(),
-                    SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage());
-        }
-    }
 
     /**
      * 鍒犻櫎鍗曚釜椤圭洰鍒嗛」楠岃瘉锛堟牴鎹绠楅獙璇佹槸鍚﹀垹闄わ級
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
new file mode 100644
index 0000000..7b32d3a
--- /dev/null
+++ b/product-server-project-management/src/main/java/com/product/project/management/controller/ProjectStatisticAnalysisController.java
@@ -0,0 +1,53 @@
+package com.product.project.management.controller;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.product.core.controller.support.AbstractBaseController;
+import com.product.core.entity.FieldSetEntity;
+import com.product.core.exception.BaseException;
+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.ProjectStatisticAnalysisService;
+import com.product.util.BaseUtil;
+import com.product.util.ResultInfo;
+
+@RequestMapping("/api/project-statistic")
+@RestController
+public class ProjectStatisticAnalysisController extends AbstractBaseController{
+	
+	@Autowired
+	ProjectStatisticAnalysisService projectStatisticAnalysisService;
+
+	/**
+     * 鑾峰彇椤圭洰鍒嗘瀽鏁版嵁
+     *
+     * @param request
+     * @return
+     */
+    @RequestMapping(value = "/statist-analysis-report/{version}", method = RequestMethod.POST)
+    @ApiVersion(1)
+    public String statistAnalysis(HttpServletRequest request) {
+        try {
+            //鑾峰彇鍙傛暟
+            FieldSetEntity fse = BaseUtil.getFieldSetEntity(request);
+
+            //鍒ゆ柇uuid鏄惁涓虹┖
+            if (BaseUtil.strIsNull(fse.getString(Cmnconst.PROJECT_UUID))) {
+                return this.error(SystemCode.SYSTEM_FORM_COUNT.getValue(), SystemCode.SYSTEM_FORM_COUNT.getText());
+            }
+            return ResultInfo.success(projectStatisticAnalysisService.statistAnalysis(fse.getString(Cmnconst.PROJECT_UUID)));
+        } catch (BaseException e) {
+            e.printStackTrace();
+            return this.error(e);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return this.error(SystemCode.PROJECT_INFO_OPERATE_ERROR.getValue(), SystemCode.PROJECT_INFO_OPERATE_ERROR.getText() + e.getMessage());
+        }
+    }
+}
diff --git a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java
index 08bb879..bc24ed8 100644
--- a/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java
+++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java
@@ -80,145 +80,7 @@
         return baseDao.listTable(Cmnconst.PRODUCT_PROJECT_QXLW, null, null, new Object[]{CoreConst.UUID, Cmnconst.PROJECT_NAME});
     }
 
-    /**
-     * 椤圭洰鏁版嵁鍒嗘瀽
-     *
-     * @param project_uuid
-     * @return
-     */
-    public JSONObject statistAnalysis(String project_uuid) {
-
-        JSONObject returnJson = new JSONObject();
-
-        //鏁版嵁搴撳嚭搴撲俊鎭眹鎬�
-        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, ")
-        .append(" 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,7)) 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(" )");
-        //鍑哄簱淇℃伅鎿嶄綔锛堟灦绔嬬瓔鍜屽0娴嬬涓嶅睍绀哄瀷鍙锋眹鎬绘眰鍜岃杞垪锛屾櫘閫氶挗绛嬪拰缃戠墖灞曠ず鍨嬪彿锛屾牴鎹」鐩垎椤瑰叧鑱旀眹鎬伙級
-        StringBuilder operateInfo = new StringBuilder(1024);
-        operateInfo.append(" ,getItemizeSum AS( ")
-        .append(" SELECT itemize,SUM(outbound_weight)total_outbound_weight FROM outbound WHERE material_type IN (0,1) GROUP BY itemize ")
-        .append(" ),allitemize AS( ")
-        .append(" SELECT itemize FROM outbound GROUP BY itemize ")
-        .append(" ),intermediateData1 AS( ")
-        .append(" SELECT A.itemize,SUM(IF(`material_type`='1',outbound_weight,0)) as 'JLJ',SUM(IF(`material_type`='2',outbound_weight,0)) as 'SCG' ")
-        .append(" FROM ( SELECT itemize FROM outbound GROUP BY itemize )A ")
-        .append(" LEFT JOIN ( ")
-        .append(" SELECT project_uuid,itemize,material_type,CASE WHEN material_type=1 THEN '鏋剁珛绛�' ELSE '澹版祴绠�' END AS material_code,SUM(outbound_weight)outbound_weight ")
-        .append(" FROM outbound ")
-        .append(" WHERE material_type IN (1,2) ")
-        .append(" GROUP BY project_uuid,itemize,material_type ")
-        .append(" ) B ON A.itemize = B.itemize ")
-        .append(" GROUP BY A.itemize ")
-        .append(" ),intermediateData2 AS( ")
-        .append(" SELECT project_uuid,itemize,material_type,material_code,outbound_weight FROM outbound WHERE material_type IN (0,3) ")
-        .append(" ),intermediateData3 AS( ")
-        .append(" SELECT A.itemize,A.total_outbound_weight,A.jlj,A.scg,B.material_type,material_code,outbound_weight FROM( ")
-        .append(" SELECT A.itemize,C.total_outbound_weight,B.jlj,B.scg ")
-        .append(" FROM allitemize A ")
-        .append(" LEFT JOIN intermediateData1 B ON A.itemize = B.itemize ")
-        .append(" LEFT JOIN getItemizeSum C ON A.itemize = C.itemize ")
-        .append(" )A ")
-        .append(" LEFT JOIN intermediateData2 B ON A.itemize = B.itemize ")
-        .append(" ) ")
-        .append(" select * from intermediateData3 ");
-        
-        StringBuilder totalSum = new StringBuilder("");
-        totalSum.append(" SELECT material_code,SUM(outbound_weight)outbound_weight FROM outbound WHERE material_type IN (0,3) GROUP BY material_code ")
-        .append(" UNION ALL ")
-        .append(" SELECT CASE WHEN material_type=1 THEN 'JLJ' WHEN material_type=2 THEN 'SCG' END,SUM(outbound_weight) FROM outbound WHERE material_type IN (1,2) GROUP BY material_type ")
-        .append(" UNION ALL ")
-        .append(" SELECT '鍚堣',SUM(outbound_weight) 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});
-        if (!BaseUtil.dataTableIsEmpty(dtItemizeInfo)) {
-
-            Map<String, FieldSetEntity> convertData = new HashMap<>();
-            String[] materialTypes = new String[4];
-
-            //閫氳繃Java寰幆灏�"鏉愭枡"鍜�"鍑哄簱閲�"鏁版嵁琛岃浆鍒�
-            for (int i = 0; i < dtItemizeInfo.getRows(); i++) {
-                FieldSetEntity fseItemize = dtItemizeInfo.getFieldSetEntity(i);
-
-                //鑾峰彇鏉愭枡缂栫爜锛屾潗鏂欑被鍨嬶紝鍑哄簱閲�
-                String materialCode = fseItemize.getString(Cmnconst.MATERIAL_CODE);
-                String outboundWeight = fseItemize.getString(Cmnconst.OUTBOUND_WEIGHT);
-                Integer materialType = fseItemize.getInteger(Cmnconst.MATERIAL_TYPE);
-                
-                //鏀堕泦鑾峰彇鎵�鏈夎〃澶村垪锛堟潗鏂欑紪鐮侊級,鏋剁珛绛嬪拰澹版祴绠℃病鏈夎〃澶�
-                if (!BaseUtil.strIsNull(materialCode)) {
-                    if (BaseUtil.strIsNull(materialTypes[materialType])) {
-                        materialTypes[materialType] = materialCode;
-                    } else {
-                    	if(materialTypes[fseItemize.getInteger(Cmnconst.MATERIAL_TYPE)].indexOf(materialCode)<0) {
-                    		materialTypes[fseItemize.getInteger(Cmnconst.MATERIAL_TYPE)] += "," + materialCode;
-                    	}
-                    }
-				}
-
-                //鏀堕泦琛岃浆鍒楁暟鎹�
-                String itemize = fseItemize.getString(Cmnconst.ITEMIZE);
-                if (convertData.containsKey(itemize)) {
-                    convertData.get(itemize).setValue(materialCode, outboundWeight);
-                } else {
-                    FieldSetEntity fseConvertData = new FieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW);
-                    fseConvertData.setValue(Cmnconst.ITEMIZE, itemize);
-                    fseConvertData.setValue(Cmnconst.TOTAL_OUTBOUND_WEIGHT, fseItemize.getString(Cmnconst.TOTAL_OUTBOUND_WEIGHT));
-                    fseConvertData.setValue(materialCode, outboundWeight);
-                    fseConvertData.setValue("jlj", fseItemize.getString("jlj"));
-                    fseConvertData.setValue("scg", fseItemize.getString("scg"));
-                    convertData.put(itemize, fseConvertData);
-                }
-            }
-            
-            //璁$畻姹囨��
-            DataTableEntity dtTotalInfo = baseDao.listTable(outboundInfo.toString() + totalSum.toString(), new Object[]{project_uuid});
-            FieldSetEntity fseConvertData = new FieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW);
-            if (!BaseUtil.dataTableIsEmpty(dtTotalInfo)) {
-				for (int i = 0; i < dtTotalInfo.getRows(); i++) {
-					FieldSetEntity fseTotalInfo = dtTotalInfo.getFieldSetEntity(i);
-					String materialCode = fseTotalInfo.getString(Cmnconst.MATERIAL_CODE);
-					String outboundWeight = fseTotalInfo.getString(Cmnconst.OUTBOUND_WEIGHT);
-					if (!BaseUtil.strIsNull(materialCode) && !BaseUtil.strIsNull(outboundWeight)) {
-						if ("鍚堣".equals(materialCode)) {
-							fseConvertData.setValue(Cmnconst.ITEMIZE, "鍚堣");
-							fseConvertData.setValue(Cmnconst.TOTAL_OUTBOUND_WEIGHT, outboundWeight);
-						}else {
-							fseConvertData.setValue(materialCode, outboundWeight);
-						}
-					}
-				}
-			}
-            
-            //灏嗘暟鎹浆涓篋ataTableEntity杩斿洖
-            if (!convertData.isEmpty()) {
-                DataTableEntity finalConvertData = new DataTableEntity();
-                convertData.forEach((k, v) -> {
-                    finalConvertData.addFieldSetEntity(v);
-                });
-                finalConvertData.addFieldSetEntity(fseConvertData);
-                returnJson.set("data", BaseUtil.dataTableEntityToJson(finalConvertData));
-            }
-            //灏嗚〃澶存暟鎹繑鍥�
-            for (int i = 0; i < materialTypes.length; i++) {
-                if (!BaseUtil.strIsNull(materialTypes[i])) {
-                    returnJson.set("type" + i, materialTypes[i]);
-                }
-            }
-        }
-        return returnJson;
-    }
+    
 
     /**
      * 鍒犻櫎瀛愰」楠岃瘉锛堝凡缁忕敓鎴愰绠楃殑瀛愰」涓嶈兘鍒犻櫎锛�
@@ -271,6 +133,7 @@
     public DataTableEntity listMaterialV(String uuid, Integer capge, Integer pageSize) {
         return baseDao.listTable("product_project_base_material_v","project_itemize_uuid=?",new String[]{uuid},null,null,pageSize, capge);
     }
+    
     /**
      * 鏇村叿浠撳簱鍜屾潗鏂欒幏鍙栧簱瀛�
      * @return
@@ -278,6 +141,7 @@
     public FieldSetEntity findInventoryV(String warehouse_uuid, String material_uuid) {
         return baseDao.getFieldSetByFilter("product_project_inventory_v","warehouse_uuid=? and uuid=?",new String[]{warehouse_uuid,material_uuid},false);
     }
+    
     /**
      * 鏍规嵁椤圭洰uuid鑾峰彇椤圭洰鍒嗛」鏍戠粨鏋�
      * @param uuid
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
new file mode 100644
index 0000000..6e38828
--- /dev/null
+++ b/product-server-project-management/src/main/java/com/product/project/management/service/ProjectStatisticAnalysisService.java
@@ -0,0 +1,262 @@
+package com.product.project.management.service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+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.entity.FieldSetEntity;
+import com.product.core.service.support.AbstractBaseService;
+import com.product.project.management.config.Cmnconst;
+import com.product.util.BaseUtil;
+
+import cn.hutool.json.JSONObject;
+
+@Component
+public class ProjectStatisticAnalysisService extends AbstractBaseService{
+	
+	
+	@Autowired
+	BaseDao baseDao;
+	
+	/**
+     * 椤圭洰鏁版嵁鍒嗘瀽
+     *
+     * @param project_uuid
+     * @return
+     */
+    public JSONObject statistAnalysis(String project_uuid) {
+
+        JSONObject returnJson = new JSONObject();
+        
+        List<List<String>> listMaterialType = getReportMaterialType();
+
+        //鏁版嵁搴撳嚭搴撲俊鎭眹鎬�
+        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(" )");
+        //鍑哄簱淇℃伅鎿嶄綔锛坓etItemizeSum[閽㈢瓔鍜屾灦绔嬬瓔宸︿晶姹囨�籡锛沘llitemize[鎵�鏈変笁绾у垎椤筣锛沬ntermediateData1[閽㈢瓔鏋剁珛绛嬫寜鍒嗛」姹囨�籡锛沬ntermediateData2[閽㈢瓔缃戠墖鎸夊垎椤瑰拰鏉愭枡姹囨�籡锛沬ntermediateData3[鎶ヨ〃鎴愬瀷]锛�
+        StringBuilder operateInfo = new StringBuilder(1024);
+        operateInfo.append(" ,getItemizeSum AS( ")
+        .append(" SELECT itemize,ROUND(SUM(outbound_weight)/1000,1) total_outbound_weight FROM outbound WHERE ")
+        .append(BaseUtil.buildQuestionMarkFilter(Cmnconst.MATERIAL_TYPE, listMaterialType.get(0).toArray(), true))
+        .append(" GROUP BY itemize ")
+        .append(" )")
+        
+        .append(",allitemize AS( ")
+        .append(" SELECT itemize FROM outbound GROUP BY itemize ")
+        .append(" )")
+        
+        .append(",intermediateData1 AS( ")
+        .append(" SELECT A.itemize ");
+        for (int i = 0; i < listMaterialType.get(2).size(); i++) {
+        	operateInfo.append(",SUM(IF(material_type=")
+        	.append(listMaterialType.get(2).get(i))
+        	.append(",outbound_weight,0)) as ")
+        	.append(listMaterialType.get(3).get(i));
+		}
+        operateInfo.append(" FROM ( SELECT itemize FROM outbound GROUP BY itemize )A ")
+        .append(" LEFT JOIN ( ")
+        .append(" SELECT project_uuid,itemize,material_type,SUM(outbound_weight)outbound_weight,CASE ");
+        for (int i = 0; i < listMaterialType.get(2).size(); i++) {
+        	operateInfo.append(" WHEN material_type=")
+        	.append(listMaterialType.get(2).get(i))
+        	.append(" THEN ")
+        	.append("'").append(listMaterialType.get(3).get(i)).append("'");
+		}
+        
+        operateInfo.append(" END AS material_code ")
+        .append(" FROM outbound ")
+        .append(" WHERE ")
+        .append(BaseUtil.buildQuestionMarkFilter(Cmnconst.MATERIAL_TYPE, listMaterialType.get(1).toArray(), false))
+        .append(" GROUP BY project_uuid,itemize,material_type ")
+        .append(" ) B ON A.itemize = B.itemize ")
+        .append(" GROUP BY A.itemize ")
+        .append(" )")
+        
+        .append(",intermediateData2 AS( ")
+        .append(" SELECT project_uuid,itemize,material_type,material_code,outbound_weight FROM outbound WHERE ")
+        .append(BaseUtil.buildQuestionMarkFilter(Cmnconst.MATERIAL_TYPE, listMaterialType.get(1).toArray(), true))
+        .append(" )")
+        
+        .append(",intermediateData3 AS( ")
+        .append(" SELECT A.itemize,A.total_outbound_weight,B.material_type,material_code,outbound_weight");
+        for (int i = 0; i < listMaterialType.get(3).size(); i++) {
+        	operateInfo.append(",A.").append(listMaterialType.get(3).get(i));
+		}
+        operateInfo.append(" FROM( ")
+        .append(" SELECT A.itemize,C.total_outbound_weight ");
+        for (int i = 0; i < listMaterialType.get(3).size(); i++) {
+        	operateInfo.append(",B.").append(listMaterialType.get(3).get(i));
+		}
+        operateInfo.append(" FROM allitemize A ")
+        .append(" LEFT JOIN intermediateData1 B ON A.itemize = B.itemize ")
+        .append(" LEFT JOIN getItemizeSum C ON A.itemize = C.itemize ")
+        .append(" )A ")
+        .append(" LEFT JOIN intermediateData2 B ON A.itemize = B.itemize ")
+        .append(" ) ")
+        .append(" select * from intermediateData3 ");
+        
+        StringBuilder totalSum = new StringBuilder("");
+        totalSum.append(" SELECT material_code,ROUND(SUM(outbound_weight),1) outbound_weight FROM outbound WHERE ")
+        .append(BaseUtil.buildQuestionMarkFilter(Cmnconst.MATERIAL_TYPE, listMaterialType.get(1).toArray(), true))
+        .append(" GROUP BY material_code ")
+        .append(" UNION ALL ")
+        .append(" SELECT CASE ");
+        for (int i = 0; i < listMaterialType.get(2).size(); i++) {
+        	totalSum.append(" WHEN material_type=")
+        	.append(listMaterialType.get(2).get(i))
+        	.append(" THEN ")
+        	.append("'").append(listMaterialType.get(3).get(i)).append("'");
+		}
+        totalSum.append(" END, ROUND(SUM(outbound_weight),1)")
+        .append(" FROM outbound WHERE ")
+        .append(BaseUtil.buildQuestionMarkFilter(Cmnconst.MATERIAL_TYPE, listMaterialType.get(2).toArray(), true))
+        .append(" GROUP BY material_type ")
+        .append(" UNION ALL ")
+        .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});
+        if (!BaseUtil.dataTableIsEmpty(dtItemizeInfo)) {
+
+            Map<String, FieldSetEntity> convertData = new HashMap<>();
+            String[] materialTypes = new String[4];
+
+            //閫氳繃Java寰幆灏�"鏉愭枡"鍜�"鍑哄簱閲�"鏁版嵁琛岃浆鍒�
+            for (int i = 0; i < dtItemizeInfo.getRows(); i++) {
+                FieldSetEntity fseItemize = dtItemizeInfo.getFieldSetEntity(i);
+
+                //鑾峰彇鏉愭枡缂栫爜锛屾潗鏂欑被鍨嬶紝鍑哄簱閲�
+                String materialCode = fseItemize.getString(Cmnconst.MATERIAL_CODE);
+                String outboundWeight = fseItemize.getString(Cmnconst.OUTBOUND_WEIGHT);
+                Integer materialType = fseItemize.getInteger(Cmnconst.MATERIAL_TYPE);
+                
+                //鏀堕泦鑾峰彇鎵�鏈夎〃澶村垪锛堟潗鏂欑紪鐮侊級,鏋剁珛绛嬪拰澹版祴绠℃病鏈夎〃澶�
+                if (!BaseUtil.strIsNull(materialCode)) {
+                    if (BaseUtil.strIsNull(materialTypes[materialType])) {
+                        materialTypes[materialType] = materialCode;
+                    } else {
+                    	if(materialTypes[fseItemize.getInteger(Cmnconst.MATERIAL_TYPE)].indexOf(materialCode)<0) {
+                    		materialTypes[fseItemize.getInteger(Cmnconst.MATERIAL_TYPE)] += "," + materialCode;
+                    	}
+                    }
+				}
+
+                //鏀堕泦琛岃浆鍒楁暟鎹�
+                String itemize = fseItemize.getString(Cmnconst.ITEMIZE);
+                if (convertData.containsKey(itemize)) {
+                    convertData.get(itemize).setValue(materialCode, outboundWeight);
+                } else {
+                    FieldSetEntity fseConvertData = new FieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW);
+                    fseConvertData.setValue(Cmnconst.ITEMIZE, itemize);
+                    fseConvertData.setValue(Cmnconst.TOTAL_OUTBOUND_WEIGHT, fseItemize.getString(Cmnconst.TOTAL_OUTBOUND_WEIGHT));
+                    fseConvertData.setValue(materialCode, outboundWeight);
+                    for (int j = 0; j < listMaterialType.get(3).size(); j++) {
+                    	fseConvertData.setValue(listMaterialType.get(3).get(j), fseItemize.getString(listMaterialType.get(3).get(j)));
+            		}
+                    fseConvertData.setValue("jlj", fseItemize.getString("jlj"));
+                    fseConvertData.setValue("scg", fseItemize.getString("scg"));
+                    convertData.put(itemize, fseConvertData);
+                }
+            }
+            
+            //璁$畻姹囨��
+            DataTableEntity dtTotalInfo = baseDao.listTable(outboundInfo.toString() + totalSum.toString(), new Object[]{project_uuid});
+            FieldSetEntity fseConvertData = new FieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW);
+            if (!BaseUtil.dataTableIsEmpty(dtTotalInfo)) {
+				for (int i = 0; i < dtTotalInfo.getRows(); i++) {
+					FieldSetEntity fseTotalInfo = dtTotalInfo.getFieldSetEntity(i);
+					String materialCode = fseTotalInfo.getString(Cmnconst.MATERIAL_CODE);
+					String outboundWeight = fseTotalInfo.getString(Cmnconst.OUTBOUND_WEIGHT);
+					if (!BaseUtil.strIsNull(materialCode) && !BaseUtil.strIsNull(outboundWeight)) {
+						if ("鍚堣".equals(materialCode)) {
+							fseConvertData.setValue(Cmnconst.ITEMIZE, "鍚堣");
+							fseConvertData.setValue(Cmnconst.TOTAL_OUTBOUND_WEIGHT, outboundWeight);
+						}else {
+							fseConvertData.setValue(materialCode, outboundWeight);
+						}
+					}
+				}
+			}
+            
+            //灏嗘暟鎹浆涓篋ataTableEntity杩斿洖
+            if (!convertData.isEmpty()) {
+                DataTableEntity finalConvertData = new DataTableEntity();
+                convertData.forEach((k, v) -> {
+                    finalConvertData.addFieldSetEntity(v);
+                });
+                finalConvertData.addFieldSetEntity(fseConvertData);
+                returnJson.set("data", BaseUtil.dataTableEntityToJson(finalConvertData));
+            }
+            //灏嗚〃澶存暟鎹繑鍥�
+            for (int i = 0; i < materialTypes.length; i++) {
+                if (!BaseUtil.strIsNull(materialTypes[i])) {
+                    returnJson.set("type" + i, materialTypes[i]);
+                }
+            }
+        }
+        return returnJson;
+    }
+    
+    
+    /**
+     * 	杩斿洖鏉愭枡绫诲瀷淇℃伅
+     * 	listSummary 闇�瑕佹眹鎬荤殑鏉愭枡
+     * 	listShowMaterialCode 闇�瑕佸睍绀烘潗鏂欑紪鐮佺殑鏉愭枡
+     * 	listNotShowMaterialCode 涓嶉渶瑕佸睍绀烘潗鏂欑紪鐮佺殑鏉愭枡
+     * 	listNotShowMaterialCodeName 涓嶉渶瑕佸睍绀烘潗鏂欑紪鐮佺殑鏉愭枡绫诲瀷鍚嶇О
+     * @return
+     */
+    public List<List<String>> getReportMaterialType() {
+    	
+    	DataTableEntity dtMaterialType = baseDao.listTable("product_sys_dict", "dict_name = ?", new Object[] {Cmnconst.MATERIAL_TYPE}, new Object[] {"dict_value","dict_label"});
+    	if (!BaseUtil.dataTableIsEmpty(dtMaterialType)) {
+    		
+    		List<List<String>> returnList = new ArrayList<>();
+        	List<String> listSummary = new ArrayList<>();
+        	List<String> listShowMaterialCode = new ArrayList<>();
+        	List<String> listNotShowMaterialCode = new ArrayList<>();
+        	List<String> listNotShowMaterialCodeName = new ArrayList<>();
+    		
+			for (int i = 0; i < dtMaterialType.getRows(); i++) {
+				String dictValue = dtMaterialType.getFieldSetEntity(i).getString("dict_value");
+				String dictLabel = dtMaterialType.getFieldSetEntity(i).getString("dict_label");
+				if ("0".equals(dictValue)) {
+					listSummary.add(dictValue);
+					listShowMaterialCode.add(dictValue);
+				}else if ("1".equals(dictValue)) {
+					listSummary.add(dictValue);
+					listNotShowMaterialCode.add(dictValue);
+					listNotShowMaterialCodeName.add(dictLabel);
+				}else if ("3".equals(dictValue)) {
+					listShowMaterialCode.add(dictValue);
+				}else {
+					listNotShowMaterialCode.add(dictValue);
+					listNotShowMaterialCodeName.add(dictLabel);
+				}
+			}
+			returnList.add(listSummary);
+			returnList.add(listShowMaterialCode);
+			returnList.add(listNotShowMaterialCode);
+			returnList.add(listNotShowMaterialCodeName);
+			
+			return returnList;
+		}
+    	return null;
+    }
+}

--
Gitblit v1.9.2