| | |
| | | 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") |
| | | |
| | | ; |
| | | |
| | |
| | | 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; |
| | |
| | | |
| | | @Autowired |
| | | ProjectStatisticAnalysisService projectStatisticAnalysisService; |
| | | |
| | | @Autowired |
| | | ProjectInventoryReportService projectInventoryReportService; |
| | | |
| | | /** |
| | | * è·å项ç®åææ°æ® |
| | |
| | | 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()); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | 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[] {}); |
| | | } |
| | | } |
| | |
| | | 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(" 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(" )"); |
| | | //åºåºä¿¡æ¯æä½ï¼getItemizeSum[é¢çåæ¶ç«çå·¦ä¾§æ±æ»]ï¼allitemize[ææä¸çº§å项]ï¼intermediateData1[é¢çæ¶ç«çæåé¡¹æ±æ»]ï¼intermediateData2[é¢çç½çæåé¡¹åæææ±æ»]ï¼intermediateData3[æ¥è¡¨æå]ï¼ |
| | |
| | | .append(" SELECT 'å计',ROUND(SUM(outbound_weight)/1000,1) FROM outbound WHERE material_type IN (0,1,3) GROUP BY project_uuid "); |
| | | |
| | | //è·åSQLè§£æçåºæ¬æ°æ®ï¼å©ç¨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<>(); |
| | |
| | | } |
| | | |
| | | //è®¡ç®æ±æ» |
| | | 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++) { |