From 3b0d2e394dddb504452bb492203bd1b2fff05fde Mon Sep 17 00:00:00 2001 From: 354798ggg <1074825718@qq.com> Date: 星期三, 28 六月 2023 09:21:07 +0800 Subject: [PATCH] 项目数据统计分析 --- product-server-project-management/src/main/java/com/product/project/management/service/ProjectInfoService.java | 136 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 134 insertions(+), 2 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 09fc076..f298f33 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,10 +1,14 @@ 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.config.CoreConst; import com.product.core.dao.BaseDao; import com.product.core.entity.DataTableEntity; import com.product.core.entity.FieldSetEntity; @@ -13,6 +17,8 @@ import com.product.project.management.config.Cmnconst; import com.product.project.management.config.SystemCode; import com.product.util.BaseUtil; + +import cn.hutool.json.JSONObject; @Component("qxlw-project-service") public class ProjectInfoService extends AbstractBaseService{ @@ -26,7 +32,7 @@ * @return */ public DataTableEntity getProjectTypeItem(String projectType) { - DataTableEntity dtProjectItem = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, "itemize_type=?", new Object[] {projectType}, new Object[] {Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE}); + DataTableEntity dtProjectItem = baseDao.listTable(Cmnconst.PRODUCT_PROJECT_BASE_PROJECT_ITEM, "itemize_type=?", new Object[] {projectType}, new Object[] {Cmnconst.ITEMIZE, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_TYPE, Cmnconst.ITEMIZE_PARENT_CODE}); if (!BaseUtil.dataTableIsEmpty(dtProjectItem)) { DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItem, Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null); return newDtProjectItem; @@ -35,7 +41,7 @@ } /** - * 閫氳繃椤圭洰涓昏〃鑾峰彇椤圭洰鍒嗛」锛堣幏鍙栦繚瀛樼殑瀛愯〃鍒嗛」锛� + * 閫氳繃椤圭洰UUID鑾峰彇椤圭洰鍒嗛」锛堣幏鍙栦繚瀛樼殑瀛愯〃鍒嗛」--澶氫釜鏍戯級 * @param uuid * @return */ @@ -48,6 +54,105 @@ } /** + * 閫氳繃椤圭洰UUID鑾峰彇椤圭洰鍒嗛」锛堣幏鍙栦繚瀛樼殑瀛愯〃鍒嗛」--鍗曚釜鏍戯級 + * @param uuid + * @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}); + if (!BaseUtil.dataTableIsEmpty(dtProjectItemize)) { + DataTableEntity newDtProjectItem = BaseUtil.dataTableToTreeTable(dtProjectItemize,Cmnconst.ITEMIZE_CODE, Cmnconst.ITEMIZE_PARENT_CODE, null); + return newDtProjectItem; + } + return null; + } + + /** + * 鑾峰彇鎵�鏈夐」鐩俊鎭� + * @return + */ + public DataTableEntity listProject() { + 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,A.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(" WHERE project_uuid = ? ") + .append(" GROUP BY A.project_uuid,A.project_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 "); + 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 { + 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; + } + + /** * 鍒犻櫎瀛愰」楠岃瘉锛堝凡缁忕敓鎴愰绠楃殑瀛愰」涓嶈兘鍒犻櫎锛� * @param uuid */ @@ -57,4 +162,31 @@ throw new BaseException(SystemCode.PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL.getValue(), SystemCode.PROJECT_MANAGEMENT_ITEMIZE_DEL_FAIL.getText()); } } + + /** + * 鑾峰彇鍒嗛」棰勭畻淇℃伅 + * @param projectUUID 椤圭洰UUID + * @param itemizeCode 鍒嗛」缂栫爜 + * @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; + } } -- Gitblit v1.9.2