wukai преди 5 месеца
родител
ревизия
787a8b7c2e

+ 13 - 29
ruoyi-admin/src/main/java/com/ruoyi/biz/controller/ApiController.java

@@ -21,12 +21,14 @@ import org.apache.poi.xddf.usermodel.chart.BarDirection;
 import org.apache.poi.xssf.usermodel.XSSFCellStyle;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
+import java.io.BufferedOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.net.URLEncoder;
@@ -63,24 +65,6 @@ public class ApiController extends BaseController {
     private AsyncServiceImpl asyncService;
     @Resource
     private BrokenYarnExportServiceImpl brokenYarnExportService;
-    @Value("${excel.total}")
-    private String totalExcelTemplate;
-    @Value("${excel.formula}")
-    private String formulaExcelTemplate;
-    @Value("${excel.gram}")
-    private String gramExcelTemplate;
-    @Value("${excel.stops}")
-    private String stopsExcelTemplate;
-    @Value("${excel.stopsType}")
-    private String stopsTypeExcelTemplate;
-    @Value("${excel.stopDetail}")
-    private String stopDetailExcelTemplate;
-    @Value("${excel.alarms}")
-    private String alarmsExcelTemplate;
-    @Value("${excel.yarn}")
-    private String yarnExcelTemplate;
-    @Value("${excel.brokenYarn}")
-    private String brokenYarnExcelTemplate;
 
     @ApiOperation("在线设备")
     @GetMapping("/device/online")
@@ -246,7 +230,7 @@ public class ApiController extends BaseController {
             Date sd = Date.from(localDate.atStartOfDay(ZoneOffset.of("+8")).toInstant());
             List<TwinCalcDay> calcDayList = twinCalcDayService.selectTwinCalcDayListByTime(sd, sd);
             Map<Long, BigDecimal> decimalMap = calcDayList.stream().collect(Collectors.toMap(TwinCalcDay::getDeviceId, TwinCalcDay::getLength));
-            try (FileInputStream inputStream = new FileInputStream(yarnExcelTemplate); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/yarn.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
                 Sheet sheet = wb.getSheetAt(0);
                 AtomicInteger rowNum = new AtomicInteger(2);
                 CellStyle percentStyle = wb.createCellStyle();
@@ -400,7 +384,7 @@ public class ApiController extends BaseController {
         if (total != null && detail != null) {
             List<GramMass> list = (List<GramMass>) total;
             List<GramMassDetail> details = (List<GramMassDetail>) detail;
-            try (FileInputStream inputStream = new FileInputStream(gramExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/gram.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
                 Sheet sheet = wb.getSheetAt(0);
 
                 CreationHelper creationHelper = wb.getCreationHelper();
@@ -488,7 +472,7 @@ public class ApiController extends BaseController {
         if (d != null) {
             List<FormulaDetail> list = (List<FormulaDetail>) d;
             list = list.stream().filter(detail -> detail.getFormula_data_15().equals(height)).collect(Collectors.toList());
-            try (FileInputStream inputStream = new FileInputStream(formulaExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/formula.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
                 Sheet sheet = wb.getSheetAt(0);
                 AtomicInteger rowNum = new AtomicInteger(2);
 
@@ -528,7 +512,7 @@ public class ApiController extends BaseController {
         localDate = LocalDate.parse(end);
         Date ed = Date.from(localDate.atStartOfDay(ZoneOffset.of("+8")).toInstant());
         List<TwinCalcDay> list = twinCalcDayService.selectTwinCalcDayListByTime(sd, ed);
-        try (FileInputStream inputStream = new FileInputStream(totalExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/total.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
             CreationHelper creationHelper = wb.getCreationHelper();
             CellStyle percentStyle = wb.createCellStyle();
             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%"));
@@ -574,7 +558,7 @@ public class ApiController extends BaseController {
     @CrossOrigin(origins = "*")
     public void brokenYarnExport(String date, HttpServletResponse response) throws ParseException {
         LocalDate localDate = LocalDate.parse(date);
-        try (FileInputStream inputStream = new FileInputStream(brokenYarnExcelTemplate); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/brokenYarn.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
             //1.基本信息表
             brokenYarnExportService.base(wb, localDate);
             //2.停机原因分析
@@ -833,7 +817,7 @@ public class ApiController extends BaseController {
                 totalTime.updateAndGet(v -> v + t);
             });
         }
-        try (FileInputStream inputStream = new FileInputStream(stopsExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/stops.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
             CreationHelper creationHelper = wb.getCreationHelper();
             CellStyle percentStyle = wb.createCellStyle();
             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%"));
@@ -925,7 +909,7 @@ public class ApiController extends BaseController {
             stopList.sort(Comparator.comparing(StopDetailVO::getDeviceId));
             int[] nums = new int[7];
             String[] devices = new String[7];
-            try (FileInputStream inputStream = new FileInputStream(stopDetailExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+            try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/stopDetail.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
                 CellStyle p2 = wb.createCellStyle();
                 p2.setDataFormat(wb.createDataFormat().getFormat("0.00"));
                 Sheet sheet2 = wb.getSheetAt(1);
@@ -1077,7 +1061,7 @@ public class ApiController extends BaseController {
         //1停经片停机,2-CCD停机(相机号+断纱/故障),3-人工停机,4-断电停机,5-设备故障停机,6-落布米数达到停机,7-盘头剩余圈数达到停机
         String[] stopStr = {"断纱", "断纱", "人工停机", "断电停机", "设备故障停机", "下卷", "叫料"};
 
-        try (FileInputStream inputStream = new FileInputStream(stopsTypeExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/stopsType.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
             CreationHelper creationHelper = wb.getCreationHelper();
             CellStyle percentStyle = wb.createCellStyle();
             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%"));
@@ -1169,7 +1153,7 @@ public class ApiController extends BaseController {
         Map<Long, TwinDevice> deviceMap = deviceService.deviceMap();
         Map<Long, List<TwinCalcAlarms>> alarmsGroup = list.stream().collect(Collectors.groupingBy(TwinCalcAlarms::getDeviceId, LinkedHashMap::new, Collectors.toList()));
         String[] alarmStr = {"GB1伺服通讯故障", "GB2伺服通讯故障", "GB3伺服通讯故障", "GB4伺服通讯故障", "GB5伺服通讯故障", "牵引伺服通讯故障", "卷曲伺服通讯故障", "断纱故障", "电源故障", "联动未完全啮合", "米长到达", "GB1剩余圈数报警", "GB2剩余圈数报警", "GB3剩余圈数报警", "GB4剩余圈数报警", "GB5剩余圈数报警", "主轴变频掉线", "主轴变频故障", "GB1伺服故障", "GB2伺服故障", "GB3伺服故障", "GB4伺服故障", "GB5伺服故障", "牵引伺服故障", "卷曲伺服故障", "拍照自停", "CCD位置报警信息显示"};
-        try (FileInputStream inputStream = new FileInputStream(alarmsExcelTemplate); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
+        try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/alarms.xlsx"); Workbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
             CreationHelper creationHelper = wb.getCreationHelper();
             CellStyle percentStyle = wb.createCellStyle();
             percentStyle.setDataFormat(creationHelper.createDataFormat().getFormat("0.00%"));

+ 3 - 3
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/TaskServiceImpl.java

@@ -196,9 +196,9 @@ public class TaskServiceImpl implements ITaskService {
                 sqlSession.commit();
             }
         }
-        dbProcess(endTime, calcHours, stopList, alarmsList, panList);
-        stopService.process(ldt, list);
-        alarmsService.process(ldt, list);
+//        dbProcess(endTime, calcHours, stopList, alarmsList, panList);
+//        stopService.process(ldt, list);
+//        alarmsService.process(ldt, list);
         Date d = new Date();
         log.info("总共消耗:{}ms", d.getTime() - s.getTime());
 

+ 8 - 3
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/TwinEmpServiceImpl.java

@@ -64,12 +64,16 @@ public class TwinEmpServiceImpl implements ITwinEmpService {
         TwinEmp twinEmp = new TwinEmp();
         twinEmp.setEmpDate(date);
         List<TwinEmp> list = selectTwinEmpList(twinEmp);
-        if (!StringUtils.isNotNull(list)) {
+        if (list.size() == 0) {
             //如果未找到,则取最后一条记录
             list = selectTwinEmpList(new TwinEmp());
         }
         Long empId = list.get(0).getEmpId();
-        return selectTwinEmpByEmpId(empId);
+        twinEmp = selectTwinEmpByEmpId(empId);
+        twinEmp.setEmpId(null);
+        twinEmp.setEmpDate(date);
+        insertTwinEmp(twinEmp);
+        return twinEmp;
     }
 
     /**
@@ -143,9 +147,10 @@ public class TwinEmpServiceImpl implements ITwinEmpService {
         });
         Long empId = twinEmp.getEmpId();
         if (StringUtils.isNotNull(twinEmpDetailList)) {
-            List<TwinEmpDetail> list = new ArrayList<TwinEmpDetail>();
+            List<TwinEmpDetail> list = new ArrayList<>();
             for (TwinEmpDetail twinEmpDetail : twinEmpDetailList) {
                 twinEmpDetail.setEmpId(empId);
+                twinEmpDetail.setDetailId(null);
                 list.add(twinEmpDetail);
             }
             if (list.size() > 0) {

+ 18 - 4
ruoyi-admin/src/main/java/com/ruoyi/biz/task/TwinTask.java

@@ -1,13 +1,15 @@
 package com.ruoyi.biz.task;
 
-import com.ruoyi.biz.service.IApiService;
-import com.ruoyi.biz.service.ITaskService;
-import com.ruoyi.biz.service.ITwinCalcDayService;
+import com.ruoyi.biz.service.*;
+import com.ruoyi.common.utils.DateUtils;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
-import java.time.*;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.ZoneId;
 import java.util.Date;
 
 /**
@@ -25,6 +27,10 @@ public class TwinTask {
     private IApiService apiService;
     @Resource
     private JdbcTemplate jdbcTemplate;
+    @Resource
+    private ITwinEmpCalcService empCalcService;
+    @Resource
+    private ITwinEmpService empService;
 
     /**
      * 计算上一个小时数据
@@ -55,6 +61,14 @@ public class TwinTask {
     }
 
     /**
+     * 绩效日报
+     */
+    public void productivity() {
+        LocalDate localDate = LocalDate.now().minusDays(1);
+        empCalcService.calc(DateUtils.toDate(localDate));
+    }
+
+    /**
      * 清理数据
      *
      * @param day 天数

BIN
ruoyi-admin/src/main/resources/tpl/alarms.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/brokenYarn.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/formula.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/gram.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/stopDetail.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/stops.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/stopsType.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/template.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/total.xlsx


BIN
ruoyi-admin/src/main/resources/tpl/yarn.xlsx


+ 43 - 0
ruoyi-admin/src/test/java/com/jjt/EmpTest.java

@@ -0,0 +1,43 @@
+package com.jjt;
+
+import com.ruoyi.RuoYiApplication;
+import com.ruoyi.biz.domain.TwinCalcAlarms;
+import com.ruoyi.biz.domain.TwinCalcDay;
+import com.ruoyi.biz.domain.TwinCalcHour;
+import com.ruoyi.biz.domain.TwinCalcStop;
+import com.ruoyi.biz.service.*;
+import com.ruoyi.biz.tools.Tools;
+import javafx.util.Pair;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.jdbc.core.JdbcTemplate;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.ZoneOffset;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
+
+/**
+ * DataProcess$
+ *
+ * @author wukai
+ * @date 2024/5/7 11:49
+ */
+@SpringBootTest(classes = RuoYiApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
+public class EmpTest {
+    @Resource
+    private ITwinEmpService empService;
+    @Test
+    void test() {
+        empService.selectTwinEmpByDate(new Date());
+    }
+
+}