Ver código fonte

增加界面上补录功能处理

wukai 1 semana atrás
pai
commit
b3882c503a

+ 6 - 0
jjt-biz/src/main/java/com/jjt/calc/service/ITwinCalcHourService.java

@@ -71,6 +71,12 @@ public interface ITwinCalcHourService {
     public void calc2Curr();
 
     /**
+     * 补录某天的数据
+     */
+    public void calcBl(Date date);
+
+
+    /**
      * 统计指定日期指定时段数据
      *
      * @param date   指定日期 yyyy-mm-dd

+ 47 - 2
jjt-biz/src/main/java/com/jjt/calc/service/impl/TwinCalcHourServiceImpl.java

@@ -2,8 +2,14 @@ package com.jjt.calc.service.impl;
 
 import com.jjt.biz.domain.TwinDevice;
 import com.jjt.biz.service.ITwinDeviceService;
-import com.jjt.calc.domain.*;
-import com.jjt.calc.mapper.*;
+import com.jjt.calc.domain.TwinCalcHour;
+import com.jjt.calc.domain.TwinCalcHourSpec;
+import com.jjt.calc.domain.TwinRecordAlarms;
+import com.jjt.calc.domain.TwinRecordStop;
+import com.jjt.calc.mapper.TwinCalcHourMapper;
+import com.jjt.calc.mapper.TwinCalcHourSpecMapper;
+import com.jjt.calc.mapper.TwinRecordAlarmsMapper;
+import com.jjt.calc.mapper.TwinRecordStopMapper;
 import com.jjt.calc.service.ITwinCalcAlarmsService;
 import com.jjt.calc.service.ITwinCalcDayService;
 import com.jjt.calc.service.ITwinCalcHourService;
@@ -16,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.ibatis.session.ExecutorType;
 import org.apache.ibatis.session.SqlSession;
 import org.apache.ibatis.session.SqlSessionFactory;
+import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -53,6 +60,8 @@ public class TwinCalcHourServiceImpl implements ITwinCalcHourService {
     private ITwinCalcDayService dayService;
     @Resource
     private ITwinEmpCalcService empCalcService;
+    @Resource
+    private JdbcTemplate jdbcTemplate;
 
     /**
      * 查询1小时统计数据
@@ -147,6 +156,42 @@ public class TwinCalcHourServiceImpl implements ITwinCalcHourService {
     }
 
     /**
+     * 补录某天的数据
+     *
+     * @param date 时间
+     */
+    @Override
+    public void calcBl(Date date) {
+        log.info("指定日期{}补录数据开始===========", date);
+        //先删除数据
+        LocalDate localDate = DateUtils.toLocalDate(date);
+        LocalDateTime start = LocalDateTime.of(localDate, LocalTime.MIN).plusHours(7);
+        LocalDateTime stop = start.plusHours(23);
+        String startTime = DateUtils.parseTimeToStr(start);
+        String endTime = DateUtils.parseTimeToStr(stop);
+        List<String> sqls = new ArrayList<>();
+        String sql = "DELETE FROM TWIN_CALC_ALARMS WHERE DATEADD(hour,[HOUR], DATA_DATE) between '%s' AND '%s'";
+        sqls.add(String.format(sql, startTime, endTime));
+        sql = "DELETE FROM TWIN_CALC_STOP WHERE DATEADD(hour,[HOUR], DATA_DATE) between '%s' AND '%s'";
+        sqls.add(String.format(sql, startTime, endTime));
+        sql = "DELETE FROM TWIN_CALC_HOUR WHERE DATEADD(hour,[HOUR], DATA_DATE) between '%s' AND '%s'";
+        sqls.add(String.format(sql, startTime, endTime));
+        sql = "DELETE FROM TWIN_CALC_HOUR_SPEC WHERE DATEADD(hour,[HOUR], DATA_DATE) between '%s' AND '%s'";
+        sqls.add(String.format(sql, startTime, endTime));
+        sql = "DELETE FROM TWIN_PAN_HEAD_INFO WHERE RECORD_TIME between '%s' AND '%s'";
+        sqls.add(String.format(sql, startTime, endTime));
+        jdbcTemplate.batchUpdate(sqls.toArray(new String[0]));
+
+        while (!start.isAfter(stop)) {
+            LocalDateTime end = start.plusHours(1);
+            calc4device(start, end);
+            log.info("补录数据===========start:{},end:{},stop:{}", start, end, stop);
+            start = end;
+        }
+        log.info("指定日期{}补录数据结束===========", date);
+    }
+
+    /**
      * 统计指定日期指定时段数据
      *
      * @param date   指定日期 yyyy-mm-dd

+ 2 - 4
jjt-biz/src/main/java/com/jjt/dye/controller/DyeTypeProcessController.java

@@ -29,7 +29,6 @@ import java.io.OutputStream;
 import java.net.URLEncoder;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
@@ -68,8 +67,7 @@ public class DyeTypeProcessController extends BaseController {
     //@PreAuthorize("@ss.hasPermi('dye:process:export')")
     @PostMapping("/exportProc")
     public void exportProc(HttpServletResponse response, ProcExpVO vo) {
-        LocalDate localDate = LocalDate.parse(vo.getDate());
-        LocalDateTime localDateTime = LocalDateTime.of(localDate, LocalTime.MIN).plusHours(Integer.parseInt(vo.getHour()));
+        LocalDateTime localDateTime = DateUtils.toLocalDateTime(vo.getTime());
         List<DyeProcessVO> list = dyeTypeProcessService.searchPara(localDateTime, vo.getTypes(), vo.getLines());
         Map<String, List<DyeProcessVO>> processVOsByLine = list.stream().collect(Collectors.groupingBy(DyeProcessVO::getLine));
         try (InputStream inputStream = getClass().getClassLoader().getResourceAsStream("tpl/qz-proc.xlsx"); XSSFWorkbook wb = new XSSFWorkbook(inputStream); OutputStream outputStream = new BufferedOutputStream(response.getOutputStream())) {
@@ -78,7 +76,7 @@ public class DyeTypeProcessController extends BaseController {
                 String sheetName = line + "#产线";
                 wb.setSheetName(wb.getSheetIndex(sheet), sheetName);
                 Cell title = sheet.getRow(0).getCell(0);
-                title.setCellValue("前整车间" + sheetName + "生产工艺统计表(" + DateUtils.parseDateToStr("yyyy-MM-dd HH", DateUtils.toDate(localDateTime)) + ")");
+                title.setCellValue("前整车间" + sheetName + "生产工艺统计表(" + DateUtils.parseDateToStr("yyyy-MM-dd HH:mm:ss", vo.getTime()) + ")");
                 AtomicInteger rowNum = new AtomicInteger(3);
                 // 按照sortNum排序
                 vos.stream().sorted(Comparator.comparing(DyeProcessVO::getSortNum)).forEach(d -> {

+ 4 - 0
jjt-biz/src/main/java/com/jjt/dye/vo/ProcExpVO.java

@@ -2,6 +2,9 @@ package com.jjt.dye.vo;
 
 import lombok.Data;
 
+import java.time.LocalDateTime;
+import java.util.Date;
+
 /**
  * DyeDeviceVO$
  *
@@ -10,6 +13,7 @@ import lombok.Data;
  */
 @Data
 public class ProcExpVO {
+    private Date time;
     private String date;
     private String hour;
     private String[] types;

+ 6 - 0
jjt-biz/src/main/java/com/jjt/emp/controller/TwinEmpCalcController.java

@@ -41,6 +41,12 @@ public class TwinEmpCalcController extends BaseController {
         return toAjax(twinEmpCalcService.calc(DateUtils.parseDate(date)));
     }
 
+    @GetMapping("/calcBl")
+    @ResponseBody
+    public AjaxResult calcBl(String date) {
+        return toAjax(twinEmpCalcService.calcBl(DateUtils.parseDate(date)));
+    }
+
     @GetMapping("/month/calc")
     @ResponseBody
     public AjaxResult monthCalc(String date) {

+ 14 - 2
jjt-biz/src/main/java/com/jjt/emp/service/ITwinEmpCalcService.java

@@ -1,8 +1,9 @@
 package com.jjt.emp.service;
 
+import com.jjt.emp.domain.TwinEmpCalc;
+
 import java.util.Date;
 import java.util.List;
-import com.jjt.emp.domain.TwinEmpCalc;
 
 /**
  * 员工产量统计Service接口
@@ -66,6 +67,7 @@ public interface ITwinEmpCalcService {
      * @return 结果
      */
     int calc(Date date);
+
     /**
      * 按日查询
      *
@@ -73,13 +75,15 @@ public interface ITwinEmpCalcService {
      * @return 结果
      */
     List<TwinEmpCalc> selectTwinEmpCalcListByDate(Date date);
+
     /**
      * 按月查询
      *
      * @param month 月份
      * @return 结果
      */
-    List<TwinEmpCalc> selectTwinEmpCalcListByMonth(String  month);
+    List<TwinEmpCalc> selectTwinEmpCalcListByMonth(String month);
+
     /**
      * 按日统计,从MES同步过来的
      *
@@ -87,4 +91,12 @@ public interface ITwinEmpCalcService {
      * @return 结果
      */
     void calcNew(Date date);
+
+    /**
+     * 按日统计,先补录数据
+     *
+     * @param date 日期
+     * @return 结果
+     */
+    int calcBl(Date date);
 }

+ 15 - 0
jjt-biz/src/main/java/com/jjt/emp/service/impl/TwinEmpCalcServiceImpl.java

@@ -3,6 +3,7 @@ package com.jjt.emp.service.impl;
 import com.jjt.calc.domain.TwinCalcDay;
 import com.jjt.calc.domain.TwinCalcHourSpec;
 import com.jjt.calc.service.ITwinCalcDayService;
+import com.jjt.calc.service.ITwinCalcHourService;
 import com.jjt.calc.service.ITwinCalcHourSpecService;
 import com.jjt.common.utils.DateUtils;
 import com.jjt.common.utils.StringUtils;
@@ -51,6 +52,8 @@ public class TwinEmpCalcServiceImpl implements ITwinEmpCalcService {
     private SqlSessionFactory factory;
     @Resource
     private ITwinWkEmpRotaService rotaService;
+    @Resource
+    private ITwinCalcHourService calcHourService;
 
     /**
      * 查询员工产量统计
@@ -433,4 +436,16 @@ public class TwinEmpCalcServiceImpl implements ITwinEmpCalcService {
             }
         }
     }
+
+    /**
+     * 按日统计,先补录数据
+     *
+     * @param date 日期
+     * @return 结果
+     */
+    @Override
+    public int calcBl(Date date) {
+        calcHourService.calcBl(date);
+        return calc(date);
+    }
 }