From 2f7887ba2e13272da88ec1a2c5d8d03994c56290 Mon Sep 17 00:00:00 2001 From: yinq <1345442242@qq.com> Date: Thu, 29 Sep 2022 16:42:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E4=BB=BB=E5=8A=A1=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E6=8A=A5=E8=A1=A8=E7=BB=B4=E6=8A=A4V4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/OutStoreController.java | 31 +-- .../controller/TemporaryFixController.java | 9 +- .../service/impl/TemporaryFixServiceImpl.java | 8 +- .../main/resources/mapper/ReportMapper.xml | 223 +++++++++--------- .../resources/mapper/TemporaryFixMapper.xml | 2 +- 5 files changed, 139 insertions(+), 134 deletions(-) diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java index b4218e9b..a6b20e94 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/OutStoreController.java @@ -1,5 +1,6 @@ package com.foreverwin.mesnac.anomaly.controller; +import com.foreverwin.mesnac.anomaly.utils.DateReportUtils; import com.foreverwin.mesnac.common.util.StringUtil; import com.foreverwin.modular.core.util.R; import com.foreverwin.modular.core.util.FrontPage; @@ -48,11 +49,13 @@ public class OutStoreController { */ @ResponseBody @GetMapping("") - public R getOutStoreList(@RequestParam(required = false) OutStore outStore){ + public R getOutStoreList(@RequestParam(required = false) OutStore outStore,String startDate,String endDate){ List result; QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.setEntity(outStore); - + queryWrapper + .ge(!StringUtil.isBlank(startDate),"IMPORT_DATE_TIME", DateReportUtils.stringToDate(startDate + " 00:00:00","yyyy-MM-dd HH:mm:ss")) + .le(!StringUtil.isBlank(endDate),"IMPORT_DATE_TIME",DateReportUtils.stringToDate(endDate + " 23:59:59","yyyy-MM-dd HH:mm:ss")) +; result = outStoreService.list(queryWrapper); return R.ok(result); } @@ -65,25 +68,13 @@ public class OutStoreController { */ @ResponseBody @GetMapping("/page") - public R page(FrontPage frontPage, OutStore outStore){ + public R page(FrontPage frontPage, OutStore outStore,String startDate,String endDate){ IPage result; QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.setEntity(outStore); - if (frontPage.getGlobalQuery() != null && !"".equals(frontPage.getGlobalQuery().trim())) { - //TODO modify global query - queryWrapper.lambda().and(wrapper -> wrapper - .like(OutStore::getHandle, frontPage.getGlobalQuery()) - .or().like(OutStore::getFactory, frontPage.getGlobalQuery()) - .or().like(OutStore::getStockLocation, frontPage.getGlobalQuery()) - .or().like(OutStore::getProjectNo, frontPage.getGlobalQuery()) - .or().like(OutStore::getItem, frontPage.getGlobalQuery()) - .or().like(OutStore::getItemDescription, frontPage.getGlobalQuery()) - .or().like(OutStore::getImportUser, frontPage.getGlobalQuery()) - .or().like(OutStore::getOther1, frontPage.getGlobalQuery()) - .or().like(OutStore::getOther2, frontPage.getGlobalQuery()) - .or().like(OutStore::getOther3, frontPage.getGlobalQuery()) - ); - } + queryWrapper + .ge(!StringUtil.isBlank(startDate),"IMPORT_DATE_TIME", DateReportUtils.stringToDate(startDate + " 00:00:00","yyyy-MM-dd HH:mm:ss")) + .le(!StringUtil.isBlank(endDate),"IMPORT_DATE_TIME",DateReportUtils.stringToDate(endDate + " 23:59:59","yyyy-MM-dd HH:mm:ss")) + ; result = outStoreService.page(frontPage.getPagePlus(), queryWrapper); return R.ok(result); } diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/TemporaryFixController.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/TemporaryFixController.java index 03f008b5..cae58611 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/TemporaryFixController.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/controller/TemporaryFixController.java @@ -126,8 +126,10 @@ public class TemporaryFixController { temporaryFix.setCreatedBy(user); temporaryFix.setUpdatedBy(user); temporaryFix.setUpdatedTime(now); - temporaryFix.setTotalWorkHours(String.valueOf(Float.valueOf(temporaryFix.getAmount()) * Float.valueOf(temporaryFix.getSingleWorkHours()))); + if (temporaryFix.getAmount() != null && temporaryFix.getSingleWorkHours() != null && temporaryFix.getAmount() != null && temporaryFix.getSingleWorkHours() != null){ + temporaryFix.setTotalWorkHours(String.valueOf(Float.valueOf(temporaryFix.getAmount()) * Float.valueOf(temporaryFix.getSingleWorkHours()))); + } boolean result = temporaryFixService.save(temporaryFix); return R.ok(result); } @@ -139,8 +141,9 @@ public class TemporaryFixController { String user = CommonMethods.getUser(); temporaryFix.setUpdatedBy(user); temporaryFix.setUpdatedTime(now); - temporaryFix.setTotalWorkHours(String.valueOf(Float.valueOf(temporaryFix.getAmount()) * Float.valueOf(temporaryFix.getSingleWorkHours()))); - + if (temporaryFix.getAmount() != null && temporaryFix.getSingleWorkHours() != null && temporaryFix.getAmount() != null && temporaryFix.getSingleWorkHours() != null){ + temporaryFix.setTotalWorkHours(String.valueOf(Float.valueOf(temporaryFix.getAmount()) * Float.valueOf(temporaryFix.getSingleWorkHours()))); + } boolean result = temporaryFixService.updateById(temporaryFix); return R.ok(result); diff --git a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/TemporaryFixServiceImpl.java b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/TemporaryFixServiceImpl.java index 45803854..2b30db5b 100644 --- a/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/TemporaryFixServiceImpl.java +++ b/anomaly/src/main/java/com/foreverwin/mesnac/anomaly/service/impl/TemporaryFixServiceImpl.java @@ -75,7 +75,9 @@ public class TemporaryFixServiceImpl extends ServiceImpl temporaryFixList = ExcelUtils.readExcel(fileType, TemporaryFix.class, multipartFile, null); temporaryFixList = this.temporaryFixImportFile(temporaryFixList); - if (temporaryFixList.equals(null)){ - return R.failed("导入数据失败"); + if (temporaryFixList.size() == 0){ + return R.failed("导出数据失败:0条数据"); } boolean result = this.saveBatch(temporaryFixList); return R.ok(result); diff --git a/anomaly/src/main/resources/mapper/ReportMapper.xml b/anomaly/src/main/resources/mapper/ReportMapper.xml index 0593f1ad..09b60eff 100644 --- a/anomaly/src/main/resources/mapper/ReportMapper.xml +++ b/anomaly/src/main/resources/mapper/ReportMapper.xml @@ -1155,16 +1155,16 @@ WIP.shopOrderQTY "shopOrderQTY", WIP.doneQTY "doneQTY",--已完成数量 WIP.rate || '%' "rate", - OT.DESCRIPTION "currentOperation", + zsd2.CURRENT_OPERATION "currentOperation", WIP.nextOperationNum "nextOperationNum", - zsd2.PLANNED_COMP_DATE "currentPlanTime", + zsd3.PLANNED_COMP_DATE "currentPlanTime", WIP.endPlanTime "endPlanTime", WIP.rework "rework",--是否返修工序 CASE - WHEN WIP.nextOperationNum > 0 AND SYSDATE > zsd2.PLANNED_COMP_DATE AND zsd2.DISPATCH_STATUS != 'COMPLETE' + WHEN WIP.nextOperationNum > 0 AND SYSDATE > zsd3.PLANNED_COMP_DATE AND zsd3.DISPATCH_STATUS != 'COMPLETE' THEN 'true' - WHEN WIP.nextOperationNum = 0 AND WIP.rate !=100.00 AND SYSDATE > zsd2.PLANNED_COMP_DATE AND - zsd2.DISPATCH_STATUS != 'COMPLETE' + WHEN WIP.nextOperationNum = 0 AND WIP.rate !=100.00 AND SYSDATE > zsd3.PLANNED_COMP_DATE AND + zsd3.DISPATCH_STATUS != 'COMPLETE' THEN 'true' ELSE 'false' END "isOverTime" --当前工序是否超时 FROM (SELECT cf.VALUE item,--项目号 @@ -1174,20 +1174,20 @@ it.DESCRIPTION itemDescription,--物料描述 MAX(zsd.DISPATCH_QTY) shopOrderQTY,--订单数量 MIN(CASE - WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN + WHEN zsd.DISPATCH_STATUS = 'COMPLETE' AND zsd.DISPATCH_STATUS = 'CANCEL' THEN zsd.DISPATCH_QTY ELSE 0 END) doneQTY, --已完成数量 TO_CHAR( DECODE(SUM(CASE - WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN + WHEN zsd.DISPATCH_STATUS = 'COMPLETE' AND zsd.DISPATCH_STATUS = 'CANCEL' THEN zsd.PROD_HOURS * zsd.DISPATCH_QTY ELSE 0 END), 0, 0, SUM(CASE - WHEN zsd.DISPATCH_STATUS = 'COMPLETE' THEN + WHEN zsd.DISPATCH_STATUS = 'COMPLETE' AND zsd.DISPATCH_STATUS = 'CANCEL' THEN zsd.PROD_HOURS * zsd.DISPATCH_QTY ELSE 0 END) / SUM(zsd.PROD_HOURS * zsd.DISPATCH_QTY)) * 100, '99990.99') rate,--进度(工时百分比) MAX(zsd.ACTUAL_START_DATE) ACTUAL_START_DATE,--最大实际开始时间 - SUM(CASE WHEN zsd.DISPATCH_STATUS != 'COMPLETE' THEN 1 ELSE 0 END) nextOperationNum,--剩余工序数量 + SUM(CASE WHEN zsd.DISPATCH_STATUS != 'COMPLETE' AND zsd.DISPATCH_STATUS != 'CANCEL' THEN 1 ELSE 0 END) nextOperationNum,--剩余工序数量 MAX(zsd.PLANNED_COMP_DATE) endPlanTime,--计划最终交付时间 rs.REWORK rework,--是否返修工序 zsd.SITE SITE @@ -1201,16 +1201,25 @@ LEFT JOIN ROUTER r ON zsd.ROUTER_BO = R.HANDLE LEFT JOIN ROUTER_STEP rs ON rs.ROUTER_BO = r.HANDLE AND rs.STEP_ID = zsd.STEP_ID WHERE zsd.SITE = '1000' - AND zsd.DISPATCH_STATUS != 'CANCEL' + -- AND zsd.DISPATCH_STATUS != 'CANCEL' AND cf.VALUE IS NOT NULL AND cf2.VALUE IS NOT NULL GROUP BY zsd.SITE, cf.VALUE, cf2.VALUE, zsd.SHOP_ORDER, zsd.SFC, it.DESCRIPTION, rs.REWORK ORDER BY rate ) WIP - LEFT JOIN Z_SFC_DISPATCH zsd2 ON WIP.shopOrder = ZSD2.SHOP_ORDER AND WIP.SFC = zsd2.SFC - AND WIP.SITE = zsd2.SITE AND WIP.ACTUAL_START_DATE = zsd2.ACTUAL_START_DATE - INNER JOIN OPERATION O ON O.SITE = WIP.SITE AND O.OPERATION = zsd2.OPERATION AND O.CURRENT_REVISION = 'true' - LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh' + LEFT JOIN (SELECT zsd1.SITE,zsd1.SFC,MAX(zsd1.STEP_ID) STEP_ID,MAX(zsd1.CURRENT_OPERATION) CURRENT_OPERATION FROM ( + SELECT zsd0.SITE,zsd0.SFC,OT.DESCRIPTION CURRENT_OPERATION,ss.STEP_ID + FROM Z_SFC_DISPATCH zsd0 + LEFT JOIN SFC s2 ON s2.SFC = zsd0.SFC AND s2.SITE = zsd0.SITE + LEFT JOIN SFC_ROUTING sr ON sr.SFC_BO = s2.HANDLE + LEFT JOIN SFC_ROUTER st ON st.SFC_ROUTING_BO = sr.HANDLE AND st.IN_USE = 'true' + LEFT JOIN SFC_STEP ss ON ss.SFC_ROUTER_BO = st.HANDLE AND (ss.QTY_IN_QUEUE > 0 OR ss.QTY_IN_WORK > 0) + INNER JOIN OPERATION o + ON ss.OPERATION_BO = 'OperationBO:'||o.SITE||','||o.OPERATION||',#' AND o.CURRENT_REVISION = 'true' AND o.SITE = zsd0.SITE AND o.CURRENT_REVISION = 'true' + and zsd0.OPERATION = o.OPERATION + LEFT JOIN OPERATION_T OT ON OT.OPERATION_BO = O.HANDLE AND OT.LOCALE = 'zh') zsd1 + GROUP BY zsd1.SITE,zsd1.SFC) zsd2 ON WIP.SFC = zsd2.SFC AND WIP.SITE = zsd2.SITE + LEFT JOIN Z_SFC_DISPATCH zsd3 ON zsd3.SFC = zsd2.SFC AND zsd3.STEP_ID = zsd2.STEP_ID AND zsd3.SITE = zsd2.SITE AND WIP.rate = 100.00 @@ -1545,84 +1554,84 @@ @@ -1646,24 +1655,24 @@ TO_CHAR(DECODE(CF.VALUE,NULL,0, WIP."workHours12" / CF.VALUE) * 100, '99990.99') || '%' "monthRate12" FROM ( WITH MONTH AS ( - SELECT ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 0 - #{month}) month0, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 1- #{month}) month1, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 2- #{month}) month2, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 3- #{month}) month3, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 4- #{month}) month4, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 5- #{month}) month5, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 6- #{month}) month6, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 7- #{month}) month7, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 8- #{month}) month8, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 9- #{month}) month9, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 10- #{month}) month10, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 11- #{month}) month11, - ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 12- #{month}) month12 + SELECT ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 0 - #{month}) month0, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 1- #{month}) month1, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 2- #{month}) month2, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 3- #{month}) month3, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 4- #{month}) month4, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 5- #{month}) month5, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 6- #{month}) month6, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 7- #{month}) month7, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 8- #{month}) month8, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 9- #{month}) month9, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 10- #{month}) month10, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 11- #{month}) month11, + ADD_MONTHS(TRUNC(TO_DATE(TO_CHAR(sysdate - 8/24, 'yyyy-MM'), 'yyyy-MM'), 'yyyy'), 12- #{month}) month12 FROM DUAL) SELECT O.OPERATION "operation", OT.DESCRIPTION "operationDescription", SUM(CASE - WHEN TO_DATE(trunc(sysdate,'month')) > ZSD.PLANNED_COMP_DATE THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "tardinessWork", + WHEN TO_DATE(trunc(sysdate - 8/24,'month')) > ZSD.PLANNED_COMP_DATE THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "tardinessWork", SUM(CASE WHEN ZSD.PLANNED_COMP_DATE >= TO_DATE(MONTH.month0) AND ZSD.PLANNED_COMP_DATE <= TO_DATE(MONTH.month1) THEN ZSD.DISPATCH_QTY * ZSD.PROD_HOURS ELSE 0 END) "workHours1", @@ -1856,7 +1865,7 @@ AND cf.VALUE IS NOT NULL AND cf2.VALUE IS NOT NULL - AND cf.VALUE = #{item} + AND cf.VALUE LIKE '%${item}%' AND cf2.VALUE LIKE '%${career}%' diff --git a/anomaly/src/main/resources/mapper/TemporaryFixMapper.xml b/anomaly/src/main/resources/mapper/TemporaryFixMapper.xml index 0e321e67..bc757493 100644 --- a/anomaly/src/main/resources/mapper/TemporaryFixMapper.xml +++ b/anomaly/src/main/resources/mapper/TemporaryFixMapper.xml @@ -38,7 +38,7 @@ - HANDLE, SITE, ENTRUST_DATE, ENTRUST_UNIT, DUTY_PERSON, DUTY_REASON, PROJECT_NUMBER, QUALITY_REVIEW_NUMBER, WORK_CONTACT_NUMBER, MATERIAL_CODE, MATERIAL_NAME, MAP_NO, AMOUNT, SINGLE_WORK_HOURS, TOTAL_WORK_HOURS, MACHINE_HOURS, OPERATOR, USE_DEVICE, DEVICE_TYPE, COST_CENTER, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME, UPLOAD_CENTER, UPLOAD_USER, CLASSIFY, DUTY_CLASSIFY, EMPLOY_PROPERTY, CENTER_CODE,ROWNUM SEQ + HANDLE, SITE, ENTRUST_DATE, ENTRUST_UNIT, DUTY_PERSON, DUTY_REASON, PROJECT_NUMBER, QUALITY_REVIEW_NUMBER, WORK_CONTACT_NUMBER, MATERIAL_CODE, MATERIAL_NAME, MAP_NO, AMOUNT, SINGLE_WORK_HOURS, TOTAL_WORK_HOURS, MACHINE_HOURS, OPERATOR, USE_DEVICE, DEVICE_TYPE, COST_CENTER, CREATED_BY, CREATED_TIME, UPDATED_BY, UPDATED_TIME, UPLOAD_CENTER, UPLOAD_USER, CLASSIFY, DUTY_CLASSIFY, EMPLOY_PROPERTY, CENTER_CODE,row_number() over (ORDER BY ENTRUST_DATE DESC ) SEQ