From 443b575f774d8eb50c16d4eefccce5218fb8de2a Mon Sep 17 00:00:00 2001
From: 354798ggg <1074825718@qq.com>
Date: 星期二, 14 十一月 2023 13:40:48 +0800
Subject: [PATCH] 项目信息和出库信息高级搜索

---
 product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java |  161 +++++++++++++++++------------------------------------
 1 files changed, 52 insertions(+), 109 deletions(-)

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 a7489f0..bb26ffd 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
@@ -1,12 +1,8 @@
 package com.product.project.management.service;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 
 import com.alibaba.fastjson.JSONArray;
-import com.product.core.websocket.config.CmnConst;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -15,7 +11,9 @@
 import com.product.core.entity.DataTableEntity;
 import com.product.core.entity.FieldSetEntity;
 import com.product.core.exception.BaseException;
+import com.product.core.permission.PermissionService;
 import com.product.core.service.support.AbstractBaseService;
+import com.product.core.service.support.QueryFilterService;
 import com.product.project.management.config.Cmnconst;
 import com.product.project.management.config.SystemCode;
 import com.product.util.BaseUtil;
@@ -27,7 +25,34 @@
 
     @Autowired
     BaseDao baseDao;
-
+    
+    @Autowired
+    PermissionService permissionService;
+    
+    @Autowired
+    QueryFilterService queryFilterService;
+    
+    /**
+     * 	椤圭洰淇℃伅鍒楄〃
+     * @param cpage
+     * @param pageSize
+     * @return
+     */
+    public DataTableEntity listProjectByCreated(FieldSetEntity fse) {
+    	String queryFilter = " 1 = 1 ";
+    	String searchFilter = queryFilterService.getQueryFilter(fse);
+    	if (!BaseUtil.strIsNull(searchFilter)) {
+    		queryFilter += " AND " + searchFilter;
+		}
+    	String limitFilter = permissionService.getDataFilter(Cmnconst.PRODUCT_PROJECT_QXLW, "project_leader,materialman");
+    	if (!BaseUtil.strIsNull(limitFilter)) {
+			queryFilter += " AND " + limitFilter;
+		}
+    	DataTableEntity dt = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_QXLW, queryFilter, new Object [] {}, null, Cmnconst.CREATED_UTC_DATETIME_DESC, fse.getInteger(Cmnconst.PAGESIZE), fse.getInteger(Cmnconst.CPAGE));
+    	baseDao.loadPromptData(dt);
+    	return dt;
+    }
+    
     /**
      * 閫氳繃椤圭洰绫诲瀷鑾峰彇椤圭洰鍒嗛」锛堣幏鍙栨ā鏉垮垎椤癸級
      *
@@ -64,7 +89,7 @@
      * @return
      */
     public DataTableEntity getProjectAllItem(String uuid) {
-        DataTableEntity dtProjectItemize = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid=?", new Object[]{uuid}, new Object[]{CoreConst.UUID, Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE});
+        DataTableEntity dtProjectItemize = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid=?", new Object[]{uuid}, new Object[]{CoreConst.UUID, Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, Cmnconst.ITEMIZE_FULL_NAME});
         if (!BaseUtil.dataTableIsEmpty(dtProjectItemize)) {
             DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItemize, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null);
             return newDtProjectItem;
@@ -81,87 +106,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 sb = new StringBuilder();
-        sb.append("WITH outbound AS(")
-                .append(" SELECT A.project_uuid,D.itemize project_itemize,C.material_type,B.material_code,SUM(B.outbound_weight)outbound_weight ")
-                .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_base_material C ON B.material_uuid = C.uuid ")
-                .append(" LEFT JOIN product_project_item D ON A.project_itemize = D.uuid ")
-                .append(" WHERE A.flow_flag=2 AND A.project_uuid = ? ")
-                .append(" GROUP BY A.project_uuid,D.itemize,C.material_type,B.material_code ")
-                .append(" ) ")
-                .append(" SELECT A.project_uuid,A.project_itemize,A.total_outbound_weight,B.material_type,B.material_code,B.outbound_weight ")
-                .append(" FROM ( ")
-                .append(" SELECT project_uuid,project_itemize,SUM(outbound_weight)total_outbound_weight ")
-                .append(" FROM outbound ")
-                .append(" GROUP BY project_uuid,project_itemize ")
-                .append(" )A ")
-                .append(" RIGHT JOIN outbound B ON A.project_uuid=B.project_uuid AND A.project_itemize=B.project_itemize ")
-        		.append(" ORDER BY project_itemize,material_code");
-        DataTableEntity dtItemizeInfo = baseDao.listTable(sb.toString(), new Object[]{project_uuid});
-        if (!BaseUtil.dataTableIsEmpty(dtItemizeInfo)) {
-
-            Map<String, FieldSetEntity> convertData = new HashMap<>();
-            String[] materialTypes = new String[3];
-
-            //閫氳繃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(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.PROJECT_ITEMIZE);
-                if (convertData.containsKey(itemize)) {
-                    convertData.get(itemize).setValue(materialCode, outboundWeight);
-                } else {
-                    FieldSetEntity fseConvertData = new FieldSetEntity(Cmnconst.PRODUCT_PROJECT_QXLW);
-                    fseConvertData.setValue(Cmnconst.PROJECT_ITEMIZE, itemize);
-                    fseConvertData.setValue(Cmnconst.TOTAL_OUTBOUND_WEIGHT, fseItemize.getString(Cmnconst.TOTAL_OUTBOUND_WEIGHT));
-                    fseConvertData.setValue(materialCode, outboundWeight);
-                    convertData.put(itemize, fseConvertData);
-                }
-            }
-            //灏嗘暟鎹浆涓篋ataTableEntity杩斿洖
-            if (!convertData.isEmpty()) {
-                DataTableEntity finalConvertData = new DataTableEntity();
-                convertData.forEach((k, v) -> {
-                    finalConvertData.addFieldSetEntity(v);
-                });
-                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;
-    }
+    
 
     /**
      * 鍒犻櫎瀛愰」楠岃瘉锛堝凡缁忕敓鎴愰绠楃殑瀛愰」涓嶈兘鍒犻櫎锛�
@@ -171,36 +116,27 @@
     public void deleteItemizeValidate(String uuid) {
         DataTableEntity dtBudget = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BUDGET, "budget_code=?", new Object[]{uuid});
         if (!BaseUtil.dataTableIsEmpty(dtBudget)) {
-            throw new BaseException(SystemCode.PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL.getValue(), SystemCode.PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL.getText());
+            throw new BaseException(SystemCode.PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET.getValue(), SystemCode.PROJECT_ITEMIZE_DEL_FAIL_HAS_BUDGET.getText());
         }
     }
 
     /**
      * 鑾峰彇鍒嗛」棰勭畻淇℃伅
      *
-     * @param projectUUID 椤圭洰UUID
-     * @param itemizeCode 鍒嗛」缂栫爜
+     * @param itemizeUUID 鍒嗛」UUID
      * @param capge       褰撳墠椤�
      * @param pageSize    椤靛ぇ灏�
      * @return
      */
-    public DataTableEntity listItemizeBudget(String projectUUID, String itemizeCode, Integer capge, Integer pageSize) {
-
-        String filter;
-        List<String> params = new ArrayList<>();
-        if (BaseUtil.strIsNull(itemizeCode)) {
-            filter = "project_itemize_uuid IN (SELECT uuid FROM product_project_item WHERE project_uuid=?)";
-            params.add(projectUUID);
-        } else {
-            filter = "project_itemize_uuid IN (SELECT uuid FROM product_project_item WHERE project_uuid=? AND itemize_code like ?)";
-            params.add(projectUUID);
-            params.add(itemizeCode + "%");
-        }
-        DataTableEntity dtItemizeBudget = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BUDGET, filter, params.toArray(), null, null, pageSize, capge);
-        if (!BaseUtil.dataTableIsEmpty(dtItemizeBudget)) {
-            baseDao.loadPromptData(dtItemizeBudget);
-        }
-        return dtItemizeBudget;
+    public DataTableEntity listItemizeBudget(String itemizeUUID, Integer capge, Integer pageSize) {
+    	if (!BaseUtil.strIsNull(itemizeUUID)) {
+    		DataTableEntity dtItemizeBudget = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BUDGET, "project_itemize_uuid = ?", new Object[] {itemizeUUID}, null, null, pageSize, capge);
+            if (!BaseUtil.dataTableIsEmpty(dtItemizeBudget)) {
+                baseDao.loadPromptData(dtItemizeBudget);
+            }
+            return dtItemizeBudget;
+		}
+        return null;
     }
 
     /**
@@ -213,13 +149,20 @@
     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
+     */
+    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
      * @return
      */
-
     public JSONArray getTreeProjectItem(String uuid) {
         DataTableEntity dtProjectItemize = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_ITEM, "project_uuid=?", new Object[]{uuid}, new Object[]{CoreConst.UUID, Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE});
         DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItemize, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null);

--
Gitblit v1.9.2