zhuang před 4 měsíci
rodič
revize
e16942c3b9

+ 52 - 3
business-common/src/main/java/com/rongwei/bscommon/sys/dao/ZhcxProjectRectifySnapDao.java

@@ -24,7 +24,8 @@ public interface ZhcxProjectRectifySnapDao extends BaseMapper<ZhcxProjectRectify
     List<ZhcxProjectRectifySnapVo> listCloseTotalDataByDay(Map<String, Object> map);
     @Select("<script>" +
             "select CONCAT(TO_CHAR(DATE, 'YYYY'),'第',TO_CHAR(DATE, 'IW'),'周') AS DATESTR,MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE," +
-            "sum(RECTIFYTOTAL ) as RECTIFYTOTAL,sum(FINISHNUM) as FINISHNUM,sum(TBCNUM) as TBCNUM " +
+            "sum(RECTIFYTOTAL ) as RECTIFYTOTAL,sum(FINISHNUM) as FINISHNUM,sum(TBCNUM) as TBCNUM," +
+            "MAX(RECTIFYTOTAL - FINISHNUM) - MIN(RECTIFYTOTAL - FINISHNUM) AS nowFinishNum " +
             "FROM ZHCX_PROJECT_RECTIFY_SNAP " +
             "WHERE " +
             "PROJECTID = #{projectId} and MACHINENO in " +
@@ -39,7 +40,8 @@ public interface ZhcxProjectRectifySnapDao extends BaseMapper<ZhcxProjectRectify
             "select CONCAT(TO_CHAR(DATE, 'YYYY'),'/',TO_CHAR(DATE, 'MM'),'/',CASE WHEN TO_CHAR(DATE, 'DD') BETWEEN '01' AND '15' THEN '15' " +
             " ELSE TO_CHAR(LAST_DAY(DATE), 'DD')  " +
             "    END) AS DATESTR,MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE," +
-            "sum(RECTIFYTOTAL ) as RECTIFYTOTAL,sum(FINISHNUM) as FINISHNUM,sum(TBCNUM) as TBCNUM " +
+            "sum(RECTIFYTOTAL ) as RECTIFYTOTAL,sum(FINISHNUM) as FINISHNUM,sum(TBCNUM) as TBCNUM," +
+            "MAX(RECTIFYTOTAL - FINISHNUM) - MIN(RECTIFYTOTAL - FINISHNUM) AS nowFinishNum " +
             "FROM ZHCX_PROJECT_RECTIFY_SNAP " +
             "WHERE " +
             "PROJECTID = #{projectId} and MACHINENO in " +
@@ -56,7 +58,8 @@ public interface ZhcxProjectRectifySnapDao extends BaseMapper<ZhcxProjectRectify
 
     @Select("<script>" +
             "select CONCAT(TO_CHAR(DATE, 'YYYY'),'/',TO_CHAR(DATE, 'MM')) AS DATESTR,MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE," +
-            "sum(RECTIFYTOTAL ) as RECTIFYTOTAL,sum(FINISHNUM) as FINISHNUM,sum(TBCNUM) as TBCNUM " +
+            "sum(RECTIFYTOTAL ) as RECTIFYTOTAL,sum(FINISHNUM) as FINISHNUM,sum(TBCNUM) as TBCNUM," +
+            "MAX(RECTIFYTOTAL - FINISHNUM) - MIN(RECTIFYTOTAL - FINISHNUM) AS nowFinishNum " +
             "FROM ZHCX_PROJECT_RECTIFY_SNAP " +
             "WHERE " +
             "PROJECTID = #{projectId} and MACHINENO in " +
@@ -67,4 +70,50 @@ public interface ZhcxProjectRectifySnapDao extends BaseMapper<ZhcxProjectRectify
             "GROUP BY TO_CHAR(DATE, 'YYYY'), TO_CHAR(DATE, 'MM'),MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE" +
             "</script>")
     List<ZhcxProjectRectifySnapVo> listCloseTotalDataByMonth(Map<String, Object> map);
+
+    @Select("<script>" +
+            "select CONCAT(TO_CHAR(DATE, 'YYYY'),'第',TO_CHAR(DATE, 'IW'),'周') AS DATESTR,MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE," +
+            "sum(RECTIFYTOTAL )/ COUNT(DISTINCT TO_CHAR(DATE, 'DD')) as RECTIFYTOTAL,sum(FINISHNUM)/ COUNT(DISTINCT TO_CHAR(DATE, 'DD')) as FINISHNUM,sum(TBCNUM)/ COUNT(DISTINCT TO_CHAR(DATE, 'DD')) as TBCNUM " +
+            "FROM ZHCX_PROJECT_RECTIFY_SNAP " +
+            "WHERE " +
+            "PROJECTID = #{projectId} and MACHINENO in " +
+            "<foreach collection=\"machineNo\" separator=\",\" open=\"(\" close=\")\" item=\"item\"> " +
+            "   #{item}" +
+            "</foreach>" +
+            "AND TO_CHAR(DATE, 'YYYY') || TO_CHAR(DATE, 'IW') >= TO_CHAR(SYSDATE, 'YYYY') || TO_CHAR(SYSDATE, 'IW') - 30" +
+            "GROUP BY TO_CHAR(DATE, 'YYYY'), TO_CHAR(DATE, 'IW'),MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE" +
+            "</script>")
+    List<ZhcxProjectRectifySnapVo> listCloseTotalDataByWeekAvg(Map<String, Object> map);
+    @Select("<script>" +
+            "select CONCAT(TO_CHAR(DATE, 'YYYY'),'/',TO_CHAR(DATE, 'MM'),'/',CASE WHEN TO_CHAR(DATE, 'DD') BETWEEN '01' AND '15' THEN '15' " +
+            " ELSE TO_CHAR(LAST_DAY(DATE), 'DD')  " +
+            "    END) AS DATESTR,MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE," +
+            "sum(RECTIFYTOTAL )/COUNT(DISTINCT DATE) as RECTIFYTOTAL,sum(FINISHNUM)/COUNT(DISTINCT DATE) as FINISHNUM,sum(TBCNUM)/COUNT(DISTINCT DATE) as TBCNUM " +
+            "FROM ZHCX_PROJECT_RECTIFY_SNAP " +
+            "WHERE " +
+            "PROJECTID = #{projectId} and MACHINENO in " +
+            "<foreach collection=\"machineNo\" separator=\",\" open=\"(\" close=\")\" item=\"item\"> " +
+            "   #{item}" +
+            "</foreach>" +
+            " AND DATE &gt;= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -5) AND DATE &lt; TRUNC(SYSDATE, 'MM') + INTERVAL '1' MONTH " +
+            "GROUP BY TO_CHAR(DATE, 'YYYY'),  " +
+            "    TO_CHAR(DATE, 'MM')," +
+            "    CASE WHEN TO_CHAR(DATE, 'DD') BETWEEN '01' AND '15' THEN '15' ELSE TO_CHAR(LAST_DAY(DATE), 'DD') END" +
+            "    ,MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE" +
+            "</script>")
+    List<ZhcxProjectRectifySnapVo> listCloseTotalDataByHalfMonthAvg(Map<String, Object> map);
+
+    @Select("<script>" +
+            "select CONCAT(TO_CHAR(DATE, 'YYYY'),'/',TO_CHAR(DATE, 'MM')) AS DATESTR,MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE," +
+            "sum(RECTIFYTOTAL )/COUNT(DISTINCT TO_CHAR(DATE, 'DD')) as RECTIFYTOTAL,sum(FINISHNUM)/COUNT(DISTINCT TO_CHAR(DATE, 'DD')) as FINISHNUM,sum(TBCNUM)/COUNT(DISTINCT TO_CHAR(DATE, 'DD')) as TBCNUM " +
+            "FROM ZHCX_PROJECT_RECTIFY_SNAP " +
+            "WHERE " +
+            "PROJECTID = #{projectId} and MACHINENO in " +
+            "<foreach collection=\"machineNo\" separator=\",\" open=\"(\" close=\")\" item=\"item\"> " +
+            "   #{item}" +
+            "</foreach>" +
+            "AND DATE &gt;= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -30) AND DATE &lt; TRUNC(SYSDATE, 'MM') + INTERVAL '1' MONTH " +
+            "GROUP BY TO_CHAR(DATE, 'YYYY'), TO_CHAR(DATE, 'MM'),MACHINENO, FIRSTORGID,FIRSTORGNAME,IFOUTSIDEBASE" +
+            "</script>")
+    List<ZhcxProjectRectifySnapVo> listCloseTotalDataByMonthAvg(Map<String, Object> map);
 }

+ 6 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/ZhcxProjectRectifySnapService.java

@@ -24,4 +24,10 @@ public interface ZhcxProjectRectifySnapService extends IService<ZhcxProjectRecti
     List<ZhcxProjectRectifySnapVo> listCloseTotalDataByHalfMonth(Map<String, Object> map);
 
     List<ZhcxProjectRectifySnapVo> listCloseTotalDataByMonth(Map<String, Object> map);
+
+    List<ZhcxProjectRectifySnapVo> listCloseTotalDataByWeekAvg(Map<String, Object> map);
+
+    List<ZhcxProjectRectifySnapVo> listCloseTotalDataByHalfMonthAvg(Map<String, Object> map);
+
+    List<ZhcxProjectRectifySnapVo> listCloseTotalDataByMonthAvg(Map<String, Object> map);
 }

+ 23 - 5
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxOutsideInspectionItpServiceImpl.java

@@ -50,8 +50,12 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.StandardCopyOption;
 import java.text.SimpleDateFormat;
 import java.time.LocalTime;
 import java.util.*;
@@ -1144,10 +1148,12 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
         SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
         String classPath = filepath;
         // 临时目录 以uuid+时间戳 为目录名称
-        String temp = classPath +File.separator + IdUtil.simpleUUID() + System.currentTimeMillis();
+        //String temp = classPath +File.separator + IdUtil.simpleUUID() + System.currentTimeMillis();
+        File tempDir = new File(classPath, IdUtil.simpleUUID() + System.currentTimeMillis());
+        String temp = tempDir.getAbsolutePath();
         log.info("临时目录:"+temp);
         // 临时目录如果存在则删除
-        File tempDir = new File(temp);
+        //File tempDir = new File(temp);
         File zipFile = null;
         log.info("临时目录是否存在:"+tempDir.exists());
         try {
@@ -1192,14 +1198,26 @@ public class ZhcxOutsideInspectionItpServiceImpl extends ServiceImpl<ZhcxOutside
                                 String extName = FileNameUtil.extName(filename);
                                 filename = prefix+"("+i+")"+"."+extName;
                             }
-                            FileUtil.copyFile(new File(item.getFullpath()),
-                                    new File(temp+File.separator+filename));
+//                            FileUtil.copyFile(new File(item.getFullpath()),
+//                                    new File(temp+File.separator+filename));
+//                            File sourceFile = new File(item.getFullpath());
+//                            File destinationFile = new File(temp + File.separator + new String(filename.getBytes(), StandardCharsets.UTF_8));
+//                            FileUtil.copyFile(sourceFile, destinationFile);
+                            try {
+                                Path sourcePath = Paths.get(item.getFullpath());
+                                Path destPath = Paths.get(tempDir.getAbsolutePath(), filename);
+                                Files.copy(sourcePath, destPath, StandardCopyOption.REPLACE_EXISTING);
+                            } catch (IOException e) {
+                                e.printStackTrace();
+                            }
                         });
                     }
                 }
             }
+
             // 将临时目录压缩成zip
-            zipFile = ZipUtil.zip(temp);
+            zipFile = ZipUtil.zip(temp , CharsetUtil.CHARSET_UTF_8);
+
             byte[] buffer = new byte[1024];
             FileInputStream fis = null;
             BufferedInputStream bis = null;

+ 57 - 23
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxProjectManageServiceImpl.java

@@ -2302,7 +2302,8 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
     public R searchRectifyTabData(Map<String, Object> map) {
         Object projectIdObj = map.get("projectId");
         Object machineNoObj = map.get("machineNo");
-        Object tabDetailTypeObj = map.get("tabDetailType");
+        String tabDetailTypeObj = (String) map.getOrDefault("tabDetailType","");
+        String tabTypeObj = (String)map.getOrDefault("tabType","");
         if (ObjectUtil.isEmpty(projectIdObj) || ObjectUtil.isEmpty(machineNoObj)) {
             return R.error();
         }
@@ -2313,11 +2314,23 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
         if ("day".equals(tabDetailTypeObj)) {
             list = zhcxProjectRectifySnapService.listCloseTotalDataByDay(map);
         }else if("week".equals(tabDetailTypeObj)){
-            list = zhcxProjectRectifySnapService.listCloseTotalDataByWeek(map);
+            if ("2".equals(tabTypeObj)) {
+                list = zhcxProjectRectifySnapService.listCloseTotalDataByWeek(map);
+            }else{
+                list = zhcxProjectRectifySnapService.listCloseTotalDataByWeekAvg(map);
+            }
         }else if("halfMonth".equals(tabDetailTypeObj)){
-            list = zhcxProjectRectifySnapService.listCloseTotalDataByHalfMonth(map);
+            if ("2".equals(tabTypeObj)) {
+                list = zhcxProjectRectifySnapService.listCloseTotalDataByHalfMonth(map);
+            }else{
+                list = zhcxProjectRectifySnapService.listCloseTotalDataByHalfMonthAvg(map);
+            }
         }else if("month".equals(tabDetailTypeObj)){
-            list = zhcxProjectRectifySnapService.listCloseTotalDataByMonth(map);
+            if ("2".equals(tabTypeObj)) {
+                list = zhcxProjectRectifySnapService.listCloseTotalDataByMonth(map);
+            }else{
+                list = zhcxProjectRectifySnapService.listCloseTotalDataByMonthAvg(map);
+            }
         }
         RectifySnapDto rectifySnapDto = new RectifySnapDto();
         Set<String> dateList = new HashSet<>();
@@ -2421,7 +2434,7 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
 
         for (int i = 0; i < machineNoData.size(); i++) {
             List<RectifySnapVo> snapList = machineNoData.get(i).getSnapList();
-            List<ZhcxProjectDeviceNumberDo> deviceNumberDos = deviceMap.get(machineNoData.get(i).getMachineNo());
+            //List<ZhcxProjectDeviceNumberDo> deviceNumberDos = deviceMap.get(machineNoData.get(i).getMachineNo());
             snapList.forEach(snapVo -> {
                 List<ZhcxProjectRectifySnapVo> dataList = snapVo.getData();
                 if (dataList != null) {
@@ -2449,25 +2462,46 @@ public class ZhcxProjectManageServiceImpl extends ServiceImpl<ZhcxProjectManageD
 //                        }
 //                    });
                     // 按 date 字段倒序排序
-                    dataList.sort(Comparator.comparing(ZhcxProjectRectifySnapVo::getDatestr, Comparator.nullsLast(Comparator.reverseOrder())));
-                    for (int j = dataList.size() -1; j >= 0; j--) {
-                        ZhcxProjectRectifySnapVo current = dataList.get(j);
-                        if (current.getInitstatus()) {
-                            Integer rectifytotal = current.getRectifytotal() != null ? current.getRectifytotal() : 0;
-                            Integer finishnum = current.getFinishnum() != null ? current.getFinishnum() : 0;
-                            // 设置未完成数
-                            current.setUnFinishNum(rectifytotal - finishnum);
+                    if ("week".equals(tabDetailTypeObj)) {
+                        dataList.sort((o1, o2) -> {
+                            String datestr1 = o1.getDatestr();
+                            String datestr2 = o2.getDatestr();
 
-                            // 设置当前完成数
-                            if (j < dataList.size() - 1) {
-                                // 前一个元素
-                                ZhcxProjectRectifySnapVo previous = dataList.get(j + 1);
-                                int i1 = previous.getUnFinishNum() == null ? 0 : previous.getUnFinishNum();
-                                int i2 = current.getUnFinishNum() == null ? 0 : current.getUnFinishNum();
-                                current.setNowFinishNum(i1 - i2);
-                            } else {
-                                // 第一条记录没有 "前一条" 数据
-                                current.setNowFinishNum(0);
+                            int year1 = Integer.parseInt(datestr1.substring(0, 4)); // 提取年份
+                            int year2 = Integer.parseInt(datestr2.substring(0, 4)); // 提取年份
+
+                            int week1 = Integer.parseInt(datestr1.substring(datestr1.indexOf("第") + 1, datestr1.indexOf("周"))); // 提取周数
+                            int week2 = Integer.parseInt(datestr2.substring(datestr2.indexOf("第") + 1, datestr2.indexOf("周"))); // 提取周数
+
+                            // 首先比较年份,如果年份相同,再比较周数
+                            if (year1 != year2) {
+                                return Integer.compare(year2, year1);
+                            }
+                            return Integer.compare(week2, week1);
+                        });
+                    }else{
+                        dataList.sort(Comparator.comparing(ZhcxProjectRectifySnapVo::getDatestr, Comparator.nullsLast(Comparator.reverseOrder())));
+                    }
+                    if ("day".equals(tabDetailTypeObj) || (!"day".equals(tabDetailTypeObj) && !"2".equals(tabTypeObj))) {
+                        for (int j = dataList.size() -1; j >= 0; j--) {
+                            ZhcxProjectRectifySnapVo current = dataList.get(j);
+                            if (current.getInitstatus()) {
+                                Integer rectifytotal = current.getRectifytotal() != null ? current.getRectifytotal() : 0;
+                                Integer finishnum = current.getFinishnum() != null ? current.getFinishnum() : 0;
+                                // 设置未完成数
+                                current.setUnFinishNum(rectifytotal - finishnum);
+
+                                // 设置当前完成数
+                                if (j < dataList.size() - 1) {
+                                    // 前一个元素
+                                    ZhcxProjectRectifySnapVo previous = dataList.get(j + 1);
+                                    int i1 = previous.getUnFinishNum() == null ? 0 : previous.getUnFinishNum();
+                                    int i2 = current.getUnFinishNum() == null ? 0 : current.getUnFinishNum();
+                                    current.setNowFinishNum(i1 - i2);
+                                } else {
+                                    // 第一条记录没有 "前一条" 数据
+                                    current.setNowFinishNum(0);
+                                }
                             }
                         }
                     }

+ 15 - 0
business-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ZhcxProjectRectifySnapServiceImpl.java

@@ -44,4 +44,19 @@ public class ZhcxProjectRectifySnapServiceImpl extends ServiceImpl<ZhcxProjectRe
     public List<ZhcxProjectRectifySnapVo> listCloseTotalDataByMonth(Map<String, Object> map) {
         return dao.listCloseTotalDataByMonth(map);
     }
+
+    @Override
+    public List<ZhcxProjectRectifySnapVo> listCloseTotalDataByWeekAvg(Map<String, Object> map) {
+        return dao.listCloseTotalDataByWeekAvg(map);
+    }
+
+    @Override
+    public List<ZhcxProjectRectifySnapVo> listCloseTotalDataByHalfMonthAvg(Map<String, Object> map) {
+        return dao.listCloseTotalDataByHalfMonthAvg(map);
+    }
+
+    @Override
+    public List<ZhcxProjectRectifySnapVo> listCloseTotalDataByMonthAvg(Map<String, Object> map) {
+        return dao.listCloseTotalDataByMonthAvg(map);
+    }
 }