Bläddra i källkod

[task-3522]温控对接-导入模式的功能开发

szjbdgzl 1 år sedan
förälder
incheckning
a7a8865bd2

+ 26 - 3
ibps-component-root/modules/comp-poi/src/main/java/com/lc/ibps/components/poi/excel/ExcelImportUtil.java

@@ -1,11 +1,12 @@
 package com.lc.ibps.components.poi.excel;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStream;
+import java.io.*;
+import java.util.ArrayList;
 import java.util.List;
 
+import org.apache.poi.ss.usermodel.*;
 import org.apache.poi.util.IOUtils;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -36,6 +37,28 @@ public class ExcelImportUtil {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(ExcelImportUtil.class);
 
+    public static List<String> getHeaders(InputStream inputstream,int row) {
+        Workbook workbook = null;
+        List<String> headers = new ArrayList<>();
+        try {
+            workbook = new XSSFWorkbook(inputstream);
+            Sheet sheet = workbook.getSheetAt(0);
+            Row headerRow = sheet.getRow(row);
+            if (headerRow != null) {
+                for (Cell cell : headerRow) {
+                    headers.add(cell.getStringCellValue());
+                }
+            }
+        } catch (IOException e) {
+            LOGGER.error(e.getMessage(), e);
+            throw new ExcelImportException(e.getMessage(), e);
+        } finally {
+            IOUtils.closeQuietly(inputstream);
+            IOUtils.closeQuietly(workbook);
+        }
+        return headers;
+    }
+
     /**
      * Excel 导入 数据源本地文件,不返回校验结果 导入 字 段类型 Integer,Long,Double,Date,String,Boolean
      * 

+ 34 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/thirtyparty/controller/NanShaWsdController.java

@@ -0,0 +1,34 @@
+package com.lc.ibps.business.thirtyparty.controller;
+
+
+import com.lc.ibps.business.thirtyparty.service.NanShaWsdService;
+import com.lc.ibps.cloud.entity.APIResult;
+import com.lc.ibps.cloud.provider.GenericProvider;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+
+@Api(tags = "南沙导入第三方温控数据")
+@RequestMapping(value = "/thirtyparty/nansha")
+@RestController
+public class NanShaWsdController extends GenericProvider {
+
+    @Resource
+    private NanShaWsdService nanShaWsdService;
+
+    @ApiOperation("导入Excel温湿度数据")
+    @RequestMapping(value = "/importExcelByNanSha", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    APIResult importExcelByNanSha(@RequestPart(name = "file", required = true) MultipartFile file){
+        APIResult result = nanShaWsdService.importWsdByNanSha(file);
+        return result;
+    }
+
+
+}

+ 10 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/thirtyparty/service/NanShaWsdService.java

@@ -0,0 +1,10 @@
+package com.lc.ibps.business.thirtyparty.service;
+
+import com.lc.ibps.cloud.entity.APIResult;
+import org.springframework.web.multipart.MultipartFile;
+
+public interface NanShaWsdService {
+
+    APIResult<Void> importWsdByNanSha(MultipartFile file);
+
+}

+ 1 - 205
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/thirtyparty/service/impl/HumitureServiceImpl.java

@@ -1,12 +1,9 @@
 package com.lc.ibps.business.thirtyparty.service.impl;
 
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.lc.ibps.api.base.constants.StateEnum;
 import com.lc.ibps.base.core.util.*;
 import com.lc.ibps.base.core.util.Collections;
 import com.lc.ibps.base.framework.id.UniqueIdUtil;
-import com.lc.ibps.base.framework.table.ICommonDao;
 import com.lc.ibps.base.web.context.ContextUtil;
 import com.lc.ibps.base.web.util.AppFileUtil;
 import com.lc.ibps.business.thirtyparty.service.HumitureService;
@@ -19,7 +16,6 @@ import org.springframework.stereotype.Service;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.multipart.MultipartFile;
 
-import javax.annotation.Resource;
 import java.io.File;
 import java.text.SimpleDateFormat;
 import java.util.*;
@@ -28,23 +24,7 @@ import static com.lc.ibps.cloud.utils.ResultUtil.setExceptionResult;
 
 @Log4j2
 @Service
-public class HumitureServiceImpl implements HumitureService {
-
-    //  室内温湿度--t_snwsdjkjlb   冰箱温度--t_bxwdjkjlb   温浴箱(培养箱)温湿度--t_wyxwdjkywhjlb   阴凉柜温湿度记录---t_ylgwdjkjlb
-    private static final String SNWSD = "t_snwsdjkjlb";
-    private static final String BXWD = "t_bxwdjkjlb";
-    private static final String WYXWSD = "t_wyxwdjkywhjlb";
-    private static final String YLGWSD = "t_ylgwdjkjlb";
-    private static final String SKJLB = "t_sshjskycljlb";
-
-    private SimpleDateFormat shijian = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-    private SimpleDateFormat minute = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-    private SimpleDateFormat riqi = new SimpleDateFormat("yyyy-MM-dd");
-    private SimpleDateFormat shifen = new SimpleDateFormat("HH:mm");
-    private SimpleDateFormat merge = new SimpleDateFormat("yyyyMMddHHmm");
-
-    @Resource
-    private ICommonDao<?> commonDao;
+public class HumitureServiceImpl extends WsdBaseServiceImpl implements HumitureService {
 
     @Override
     public APIResult<Void> importHumiture(@RequestParam(name = "file", required = true) MultipartFile file) {
@@ -290,189 +270,5 @@ public class HumitureServiceImpl implements HumitureService {
         }
     }
 
-    private void addWsdData(List<Map<String, Object>> list) throws Exception {
-        for (Map<String,Object> map : list){
-            String deptId = BeanUtils.isEmpty(map.get("bu_men_id_"))?"":map.get("bu_men_id_").toString();
-            String type = map.get("shu_ju_lei_xing_").toString();
-            String leiXing = map.get("she_bei_lei_xing_").toString();
-            Map<String,Object> data = new HashMap<>();
-            data.put("id_", UniqueIdUtil.getId());
-            data.put("create_time_", shijian.format(new Date()));
-            data.put("bian_zhi_bu_men_", deptId);
-            data.put("shi_fou_guo_shen_", "已完成");
-            data.put("bian_zhi_ren_", "1");
-            data.put("di_dian_", map.get("di_dian_"));
-            data.put("bian_zhi_shi_jian", map.get("cai_ji_shi_jian_"));
-            data.put("bu_men_", deptId);
-            data.put("qu_yu_ming_cheng_", BeanUtils.isEmpty(map.get("qu_yu_"))?"":map.get("qu_yu_").toString());
-            boolean add = BeanUtils.isNotEmpty(map.get("zui_xiao_zhi_")) && BeanUtils.isNotEmpty(map.get("zui_da_zhi_")) && BeanUtils.isNotEmpty(map.get("wen_shi_du_zhi_"));
-            if (add){
-                double humMax = 0;double humMin = 0;double hum = 0;String humStatus="";String humLimit="";
-                if (type.equals("湿度")){
-                    humMax = Double.parseDouble(map.get("zui_da_zhi_").toString());
-                    humMin = Double.parseDouble(map.get("zui_xiao_zhi_").toString());
-                    hum = Double.parseDouble(map.get("wen_shi_du_zhi_").toString());
-                    humStatus = hum > humMax || hum < humMin ? "失控" : "正常";
-                    humLimit = humMin + "~" + humMax + "%";
-                }
-                double tempMax = 0;double tempMin = 0;double temp = 0;String tempStatus="";String tempLimit="";
-                if (type.equals("温度")){
-                    tempMax = Double.parseDouble(map.get("zui_da_zhi_").toString());
-                    tempMin = Double.parseDouble(map.get("zui_xiao_zhi_").toString());
-                    temp = Double.parseDouble(map.get("wen_shi_du_zhi_").toString());
-                    tempStatus = temp > tempMax || temp < tempMin ? "失控" : "正常";
-                    tempLimit = tempMin + "~" + tempMax + "℃";
-                }
-                String tempPart = !tempLimit.isEmpty() ? "温度:" + tempLimit : "";
-                String humPart = !humLimit.isEmpty() ? "湿度:" + humLimit : "";
-                String wenDuJianKong = (tempPart.isEmpty() ? "" : tempPart) + (humPart.isEmpty() ? "" : humPart);
-                if (leiXing.equals("冰箱")){
-                    // 冰箱  t_bxwdjkjlb
-                    addBxData(data,map,wenDuJianKong,tempStatus,tempMax,tempMin,temp);
-                }
-                if (leiXing.equals("环境")){
-                    // 室内温湿度 t_snwsdjkjlb
-                    addSnwsdData(data,map,wenDuJianKong,humStatus,tempStatus,tempMax,tempMin,temp,humMax,humMin,hum);
-                }
-                if (leiXing.equals("温浴箱")){
-                    // 温浴箱(培养箱)温湿度 t_wyxwdjkywhjlb
-                    addPyxData(data,map,wenDuJianKong,humStatus,tempStatus,tempMax,tempMin,temp,humMax,humMin,hum);
-                }
-                if (leiXing.equals("阴凉柜")){
-                    // 阴凉柜温湿度记录---t_ylgwdjkjlb
-                    addYlgData(data,map,wenDuJianKong,humStatus,tempStatus,tempMax,tempMin,temp,humMax,humMin,hum);
-                }
-            }
-        }
-    }
-
-    private void addYlgData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String humStatus,
-                            String tempStatus,double tempMax,double tempMin,double temp,double humMax,double humMin,double hum) throws Exception {
-        if (!exist(YLGWSD,map.get("id_").toString(),"config_id_")){
-            data.put("yin_liang_gui_bia",map.get("cai_ji_qi_id_")+" "+map.get("cai_ji_qi_ming_ch"));
-            data.put("fang_jian_",BeanUtils.isEmpty(map.get("fang_jian_"))?"":map.get("fang_jian_").toString());
-            data.put("qu_yu_ming_cheng_", BeanUtils.isEmpty(map.get("qu_yu_"))?"":map.get("qu_yu_").toString());
-            data.put("gang_wei_", BeanUtils.isEmpty(map.get("gang_wei_"))?"":map.get("gang_wei_").toString());
-            data.put("config_id_", map.get("id_"));
-            data.put("jian_kong_she_bei", map.get("cai_ji_qi_id_"));
-            data.put("jian_she_bian_hao", map.get("cai_ji_qi_ming_ch"));
-            data.put("jian_ce_shi_jian_",map.get("cai_ji_shi_jian_"));
-            data.put("jian_ce_zhou_qi_","每日");
-            data.put("jian_ce_ri_qi_","每天");
-            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
-            data.put("shi_ji_shi_jian_", map.get("cai_ji_shi_jian_"));
-            data.put("wen_du_jian_kong_", wenDuJianKong);
-            data.put("shi_kong_zhuang_t",(humStatus.equals("失控")||tempStatus.equals("失控"))?"失控":"正常");
-
-            JSONArray params = new JSONArray();
-            if (BeanUtils.isNotEmpty(temp)){
-                params.add(setJsonList("temp",tempStatus,tempMax,tempMin,temp));
-            }
-            if (BeanUtils.isNotEmpty(hum)){
-                params.add(setJsonList("hum",humStatus,humMax,humMin,hum));
-            }
-            data.put("lie_biao_shu_ju_",params);
-            commonDao.execute(SqlUtil.buildInsertSql(data,YLGWSD));
-        }
-    }
-
-    private void addPyxData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String humStatus,
-                            String tempStatus,double tempMax,double tempMin,double temp,double humMax,double humMin,double hum) throws Exception {
-        if (!exist(WYXWSD,map.get("id_").toString(),"config_id_")){
-            data.put("she_bei_ming_chen",map.get("cai_ji_qi_ming_ch"));
-            data.put("she_bei_bian_hao_",map.get("cai_ji_qi_id_"));
-            data.put("fang_jian_",BeanUtils.isEmpty(map.get("fang_jian_"))?"":map.get("fang_jian_").toString());
-            data.put("qu_yu_ming_cheng_", BeanUtils.isEmpty(map.get("qu_yu_"))?"":map.get("qu_yu_").toString());
-            data.put("gang_wei_", BeanUtils.isEmpty(map.get("gang_wei_"))?"":map.get("gang_wei_").toString());
-            data.put("config_id_", map.get("id_"));
-            data.put("jian_ce_zhou_qi_","每日");
-            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
-            data.put("shi_ji_shi_jian_", map.get("cai_ji_shi_jian_"));
-            data.put("wen_kong_zhi_fan_", wenDuJianKong);
-            data.put("shi_kong_zhuang_t",(humStatus.equals("失控")||tempStatus.equals("失控"))?"失控":"正常");
-
-            JSONArray params = new JSONArray();
-            if (BeanUtils.isNotEmpty(temp)){
-                params.add(setJsonList("temp",tempStatus,tempMax,tempMin,temp));
-            }
-            if (BeanUtils.isNotEmpty(hum)){
-                params.add(setJsonList("hum",humStatus,humMax,humMin,hum));
-            }
-            data.put("lie_biao_shu_ju_",params);
-            commonDao.execute(SqlUtil.buildInsertSql(data,WYXWSD));
-        }
 
-    }
-
-    private void addSnwsdData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String humStatus,
-                              String tempStatus,double tempMax,double tempMin,double temp,double humMax,double humMin,double hum) throws Exception {
-        if (!exist(SNWSD,map.get("id_").toString(),"wai_jian_")){
-            data.put("fang_jian_hao_",BeanUtils.isEmpty(map.get("fang_jian_"))?"":map.get("fang_jian_").toString());
-            data.put("qu_yu_ming_cheng_", BeanUtils.isEmpty(map.get("qu_yu_"))?"":map.get("qu_yu_").toString());
-            data.put("gang_wei_", BeanUtils.isEmpty(map.get("gang_wei_"))?"":map.get("gang_wei_").toString());
-            data.put("wai_jian_", map.get("id_"));
-            data.put("jian_ce_zhou_qi_","每日");
-            data.put("jian_ce_ri_qi_","每天");
-            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
-            data.put("shi_ji_cao_zuo_sh", map.get("cai_ji_shi_jian_"));
-            data.put("wen_shi_du_kong_z", wenDuJianKong);
-            data.put("shi_kong_zhuang_t",(humStatus.equals("失控")||tempStatus.equals("失控"))?"失控":"正常");
-
-            JSONArray params = new JSONArray();
-            if (BeanUtils.isNotEmpty(temp)){
-                params.add(setJsonList("temp",tempStatus,tempMax,tempMin,temp));
-            }
-            if (BeanUtils.isNotEmpty(hum)){
-                params.add(setJsonList("hum",humStatus,humMax,humMin,hum));
-            }
-            data.put("lie_biao_shu_ju_",params);
-            commonDao.execute(SqlUtil.buildInsertSql(data,SNWSD));
-        }
-    }
-
-    private void addBxData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String status,double tempMax,double tempMin,double temp) throws Exception {
-        if (!exist(BXWD,map.get("id_").toString(),"config_id_")){
-            data.put("config_id_", map.get("id_"));
-            data.put("bing_xiang_bian_h", map.get("cai_ji_qi_id_")+" "+map.get("cai_ji_qi_ming_ch"));
-            data.put("wen_kong_zhi_fan_", wenDuJianKong);
-            data.put("shi_ji_shi_jian_", minute.format(minute.parse(map.get("cai_ji_shi_jian_").toString())));
-            data.put("yue_ri_qi_", riqi.format(minute.parse(map.get("cai_ji_shi_jian_").toString())));
-            data.put("shi_jian_shi_fen_", shifen.format(minute.parse(map.get("cai_ji_shi_jian_").toString())));
-            data.put("shi_kong_zhuang_t",status);
-            data.put("fang_jian_",BeanUtils.isEmpty(map.get("fang_jian_"))?"":map.get("fang_jian_").toString());
-            data.put("qu_yu_ming_cheng_", BeanUtils.isEmpty(map.get("qu_yu_"))?"":map.get("qu_yu_").toString());
-            data.put("gang_wei_", BeanUtils.isEmpty(map.get("gang_wei_"))?"":map.get("gang_wei_").toString());
-            data.put("jian_ce_zhou_qi_","每日");
-            data.put("jian_ce_ri_qi_","每周1,2,3,4,5,6,7");
-            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
-            JSONArray params = new JSONArray();
-            params.add(setJsonList("temp",status,tempMax,tempMin,temp));
-            data.put("lie_biao_shu_ju_",params);
-            commonDao.execute(SqlUtil.buildInsertSql(data,BXWD));
-        }
-    }
-
-    private JSONObject setJsonList(String type, String status, double max, double min, double value){
-        JSONObject tempObj = new JSONObject();
-        JSONArray tempRange = new JSONArray();
-        tempRange.add(min);
-        tempRange.add(max);
-        tempObj.put("range",tempRange);
-        tempObj.put("fixValue","");
-        tempObj.put("value",value);
-        tempObj.put("result",value);
-        tempObj.put("status",status);
-        tempObj.put("unit",type.equals("temp")?"℃":"%");
-        tempObj.put("label",type.equals("temp")?"温度":"湿度");
-        tempObj.put("rate","每天");
-        return tempObj;
-    }
-
-    public boolean exist(String tableName,String id,String field){
-        Map<String,Object> his = commonDao.queryOne("select id_ from "+tableName+" where "+field+"='"+id+"'");
-        if (BeanUtils.isNotEmpty(his)){
-            return true;
-        }
-        return false;
-    }
 }

+ 261 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/thirtyparty/service/impl/NanShaWsdServiceImpl.java

@@ -0,0 +1,261 @@
+package com.lc.ibps.business.thirtyparty.service.impl;
+
+import com.lc.ibps.api.base.constants.StateEnum;
+import com.lc.ibps.base.core.util.BeanUtils;
+import com.lc.ibps.base.core.util.Collections;
+import com.lc.ibps.base.core.util.I18nUtil;
+import com.lc.ibps.base.framework.id.UniqueIdUtil;
+import com.lc.ibps.base.web.context.ContextUtil;
+import com.lc.ibps.business.thirtyparty.service.NanShaWsdService;
+import com.lc.ibps.cloud.entity.APIResult;
+import com.lc.ibps.components.poi.excel.ExcelImportUtil;
+import com.lc.ibps.components.poi.excel.entity.ImportParams;
+import com.lc.ibps.untils.SqlUtil;
+import com.lc.ibps.untils.StrUtil;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static com.lc.ibps.cloud.utils.ResultUtil.setExceptionResult;
+
+@Log4j2
+@Service
+public class NanShaWsdServiceImpl extends WsdBaseServiceImpl implements NanShaWsdService {
+
+    @Override
+    public APIResult<Void> importWsdByNanSha(@RequestParam(name = "file", required = true) MultipartFile file){
+        APIResult<Void> result = new APIResult<>();
+        try{
+            List<String> headers = ExcelImportUtil.getHeaders(file.getInputStream(),0);
+            ImportParams params = new ImportParams();
+            params.setHeadRows(1);
+            List<Map<String,Object>> excelList = ExcelImportUtil.importExcel(file.getInputStream(), Map.class, params);
+            String sql = "select di_dian_,bu_men_,she_bei_ming_chen,cai_ji_qi_id_,she_bei_lei_xing_,qu_yu_,fang_jian_,gang_wei_ from `t_wsdcjpzb` where shi_fou_qi_yong_='是'; ";
+            List<Map<String,Object>> configList = (List<Map<String, Object>>) commonDao.query(sql);
+            if(Collections.isEmpty(excelList) || Collections.isEmpty(configList)){
+                return null;
+            }
+            // 添加主表数据
+            Map<String,Object> main = new HashMap<>();
+            String parentId = UniqueIdUtil.getId();
+            main.put("id_", parentId);
+            main.put("create_by_", ContextUtil.getCurrentUserId());
+            main.put("create_time_", shijian.format(new Date()));
+            main.put("bian_zhi_ren_", ContextUtil.getCurrentUserId());
+            main.put("bian_zhi_bu_men_", ContextUtil.getCurrentPositionId());
+            main.put("bian_zhi_shi_jian", shijian.format(new Date()));
+            Map<String,Object> map = new HashMap<>();
+
+            addWsdSubData(headers,configList,excelList,parentId,map);
+
+            if (BeanUtils.isEmpty(map.get("errMsg"))) {
+                main.put("dao_ru_shu_liang_", StrUtil.str(map.get("count")));
+                main.put("jie_guo_", "导入成功");
+            }else {
+                main.put("dao_ru_shu_liang_", StrUtil.str(map.get("count")));
+                main.put("jie_guo_", map.get("errMsg"));
+            }
+
+            // 处理数据到具体业务表
+            createDailyRecord(parentId);
+            log.warn("处理数据到具体业务表完成");
+
+            // 处理失控开启失控流程
+            checkUncontrolBx(parentId);
+            log.warn("处理失控开启失控流程完成");
+
+            commonDao.execute(SqlUtil.buildInsertSql(main,"t_wsdsjdrjlb"));
+
+            result.setVariables(map);
+            result.setMessage("导入成功!");
+        }catch (Exception e){
+            result.setMessage("导入失败!");
+            setExceptionResult(result, StateEnum.ERROR.getCode(), I18nUtil.getMessage(StateEnum.ERROR.getCode() + ""), e);
+        }
+        return result;
+    }
+
+    public void addWsdSubData(List<String> headers,List<Map<String,Object>> configList,List<Map<String,Object>> excelList,String parentId,Map<String,Object> infoMap)  {
+        // headers ==[采集时间, 设备名称, 监控点名称, 报警最小值, 报警最大值, 采集类型, 所属部门, 统计类型, 数据范围, 8点, 15点 ,.......]
+        for (int h = 0; h < excelList.size(); h++) {
+            Map<String, Object> excel = excelList.get(h);
+            for(Map<String,Object> config : configList){
+                if (excel.get("监控点名称").toString().equals(config.get("cai_ji_qi_id_").toString())){
+                    try{
+                        for (int i = 0; i < headers.size()-9; i++) {
+                            Map<String,Object> data = new HashMap<>();
+                            String clcrm = headers.get(9+i);
+                            String value = StrUtil.str(excel.get(clcrm));
+                            if (value.equals("—"))continue;
+                            String timeNum = clcrm.substring(0,clcrm.lastIndexOf("点"));
+                            if (Integer.parseInt(timeNum)<10){
+                                timeNum = "0"+timeNum;
+                            }
+                            String caiJiShiJian = StrUtil.str(excel.get("采集时间"))+" "+timeNum+":00:00";
+                            String time = merge.format(shijian.parse(caiJiShiJian));
+                            data.put("create_time_", shijian.format(new Date()));
+                            data.put("cai_ji_shi_jian_", caiJiShiJian);
+                            data.put("cai_ji_ri_qi_", StrUtil.str(excel.get("采集时间")));
+                            data.put("cai_ji_qi_id_", StrUtil.str(excel.get("监控点名称")));
+                            data.put("cai_ji_qi_ming_ch", StrUtil.str(excel.get("设备名称")));
+                            data.put("she_bei_lei_xing_", StrUtil.str(config.get("she_bei_lei_xing_")));
+                            data.put("bu_men_id_", StrUtil.str(config.get("bu_men_")));
+                            data.put("qu_yu_", StrUtil.str(config.get("qu_yu_")));
+                            data.put("fang_jian_", StrUtil.str(config.get("fang_jian_")));
+                            data.put("gang_wei_", StrUtil.str(config.get("gang_wei_")));
+                            data.put("di_dian_", StrUtil.str(config.get("di_dian_")));
+                            data.put("parent_id_",parentId);
+
+                            String type = StrUtil.str(excel.get("采集类型"));
+                            if ("温湿度(℃/%RH)".equals(type)){
+                                addBoth(excel,clcrm,data,time);
+                            }else if ("温度(℃)".equals(type)){
+                                addWenDu(excel,value,data,time);
+                            }else if (("湿度(%RH)".equals(type))) {
+                                addShiDu(excel,value,data,time);
+                            }
+                        }
+                    }catch (Exception e){
+                        infoMap.put("errMsg","Excel中第"+h+"行数据异常,无法解析,\n异常数据:"+excel +" \n异常原因:"+e.getMessage());
+                        log.error("导入Excel解析异常,异常原因:",e);
+                        // throw e;
+                    }
+                }
+            }
+        }
+        infoMap.put("count",excelList.size());
+        log.warn("导入完成,导入数量={}",excelList.size());
+    }
+
+    private void addBoth(Map<String, Object> excel, String clcrm, Map<String, Object> data ,String time) throws Exception {
+        String[] result = StrUtil.str(excel.get(clcrm)).split("/\n");
+        String[] max = StrUtil.str(excel.get("报警最大值")).split("/\n");
+        String[] min = StrUtil.str(excel.get("报警最小值")).split("/\n");
+        for (int j = 0; j < result.length; j++) {
+            if (result[j].equals("—"))continue;
+            String subId = StrUtil.str(excel.get("监控点名称"));
+            if (j==0){
+                subId = subId + "-1-" + time;
+                data.put("shu_ju_lei_xing_","温度");
+                data.put("zui_da_zhi_", max[j].substring(0,max[j].lastIndexOf("℃")));
+                data.put("zui_xiao_zhi_", min[j].substring(0,min[j].lastIndexOf("℃")));
+            }else {
+                subId = subId + "-2-" + time;
+                data.put("shu_ju_lei_xing_","湿度");
+                data.put("zui_da_zhi_", max[j].substring(0,max[j].lastIndexOf("%RH")));
+                data.put("zui_xiao_zhi_", min[j].substring(0,min[j].lastIndexOf("%RH")));
+            }
+            data.put("id_",subId);
+            if (result[j].contains("*")){
+                result[j] = result[j].substring(0,result[j].lastIndexOf("*"));
+                data.put("shi_fou_shi_kong_","是");
+            }else {
+                data.put("shi_fou_shi_kong_","否");
+            }
+            data.put("wen_shi_du_zhi_", result[j]);
+            commonDao.execute(SqlUtil.buildInsertIgnorePrimarySql(data,WSDJLB));
+        }
+    }
+
+    private void addWenDu(Map<String, Object> excel, String value, Map<String, Object> data ,String time) throws Exception {
+        String subId = StrUtil.str(excel.get("监控点名称")) + "-1-" + time;
+        data.put("shu_ju_lei_xing_","温度");
+        String max = StrUtil.str(excel.get("报警最大值"));
+        String min = StrUtil.str(excel.get("报警最小值"));
+        data.put("zui_da_zhi_", max.substring(0,max.lastIndexOf("℃")));
+        data.put("zui_xiao_zhi_", min.substring(0,min.lastIndexOf("℃")));
+        data.put("id_",subId);
+        if (value.contains("*")){
+            value = value.substring(0,value.lastIndexOf("*"));
+            data.put("shi_fou_shi_kong_","是");
+        }else {
+            data.put("shi_fou_shi_kong_","否");
+        }
+        data.put("wen_shi_du_zhi_", value);
+        commonDao.execute(SqlUtil.buildInsertIgnorePrimarySql(data,WSDJLB));
+    }
+
+    private void addShiDu(Map<String, Object> excel, String value, Map<String, Object> data ,String time) throws Exception {
+        String subId = StrUtil.str(excel.get("监控点名称")) + "-2-" + time;
+        data.put("shu_ju_lei_xing_","湿度");
+        String max = StrUtil.str(excel.get("报警最大值"));
+        String min = StrUtil.str(excel.get("报警最小值"));
+        data.put("zui_da_zhi_", max.substring(0,max.lastIndexOf("RH")));
+        data.put("zui_xiao_zhi_", min.substring(0,min.lastIndexOf("RH")));
+        data.put("id_",subId);
+        if (value.contains("*")){
+            value = value.substring(0,value.lastIndexOf("*"));
+            data.put("shi_fou_shi_kong_","是");
+        }else {
+            data.put("shi_fou_shi_kong_","否");
+        }
+        data.put("wen_shi_du_zhi_", value);
+        commonDao.execute(SqlUtil.buildInsertIgnorePrimarySql(data,WSDJLB));
+    }
+
+
+    private void createDailyRecord(String parentId) throws Exception {
+        String sql = "SELECT *from t_dsfwsdjlb WHERE parent_id_='%s' ORDER BY cai_ji_shi_jian_";
+        sql = String.format(sql,parentId);
+        List<Map<String, Object>> wsdList = (List<Map<String, Object>>) commonDao.query(sql);
+        if (BeanUtils.isEmpty(wsdList))return;
+        addWsdData(wsdList);
+    }
+
+    private void checkUncontrolBx(String parentId) throws Exception {
+        String sql = "SELECT cai_ji_ri_qi_ from t_dsfwsdjlb WHERE parent_id_='%s' and shi_fou_shi_kong_='是' GROUP BY cai_ji_ri_qi_ ORDER BY cai_ji_shi_jian_ ";
+        sql = String.format(sql,parentId);
+        List<Map<String, Object>> skList = (List<Map<String, Object>>) commonDao.query(sql);
+        if (BeanUtils.isEmpty(skList))return;
+        for (Map<String,Object> map : skList){
+            outOfControlJudge(parentId,StrUtil.str(map.get("cai_ji_ri_qi_")));
+        }
+    }
+
+    private void outOfControlJudge(String parentId,String date) throws Exception {
+        String sql = "SELECT *from t_dsfwsdjlb WHERE parent_id_='%s' and shi_fou_shi_kong_='是' and cai_ji_ri_qi_='%s' ORDER BY cai_ji_shi_jian_ ;";
+        sql = String.format(sql,parentId, date);
+        List<Map<String, Object>> list = (List<Map<String, Object>>) commonDao.query(sql);
+        if (BeanUtils.isEmpty(list))return;
+        StringBuilder beiZhu = new StringBuilder();
+        StringBuilder idStr = new StringBuilder();
+        for (Map<String,Object> map : list){
+            double wenDu = Double.parseDouble(StrUtil.str(map.get("wen_shi_du_zhi_")));
+            double max = Double.parseDouble(StrUtil.str(map.get("zui_da_zhi_")));
+            double min = Double.parseDouble(StrUtil.str(map.get("zui_xiao_zhi_")));
+            idStr.append(map.get("id_")).append("_");
+            String typeStr = StrUtil.str(map.get("shu_ju_lei_xing_")).equals("温度")?",温度:":",湿度:";
+            String limits = StrUtil.str(map.get("shu_ju_lei_xing_")).equals("温度")?"温度范围:":"湿度范围:";
+            String unit = StrUtil.str(map.get("shu_ju_lei_xing_")).equals("温度")?"℃":"%";
+            beiZhu.append("采集时间:").append(map.get("cai_ji_shi_jian_")).append(typeStr).append(wenDu).
+                    append(unit).append(",").append(limits).append(min).append("~").append(max).append(unit).append("\n");
+        }
+        addWenDuSkData( list.get(0) ,beiZhu.toString(), idStr.toString());
+    }
+
+    private void addWenDuSkData(Map<String,Object> map,String beiZhu,String idStr) throws Exception {
+        if (!exist(SKJLB,idStr,"yuan_shu_ju_id_")){
+            Map<String,Object> data = new HashMap<>();
+            data.put("id_", UniqueIdUtil.getId());
+            data.put("create_time_", shijian.format(new Date()));
+            data.put("bian_zhi_shi_jian", shijian.format(new Date()));
+            data.put("fa_xian_shi_jian_", map.get("cai_ji_shi_jian_"));
+            data.put("bian_zhi_bu_men_", map.get("bu_men_id_"));
+            data.put("fa_sheng_qu_yu_", map.get("qu_yu_"));
+            data.put("di_dian_", map.get("di_dian_"));
+            data.put("fang_jian_", map.get("fang_jian_"));
+            data.put("jie_guo_", "是");
+            data.put("qing_kuang_", "设备号为:"+map.get("cai_ji_qi_id_")+"-"+map.get("cai_ji_qi_ming_ch")+" 的温湿度失控记录如下:\n"+beiZhu);
+            data.put("create_by_","1");
+            data.put("bian_zhi_ren_","1");
+            data.put("yuan_shu_ju_id_",idStr);
+            commonDao.execute(SqlUtil.buildInsertSql(data,SKJLB));
+        }
+    }
+}

+ 230 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/business/thirtyparty/service/impl/WsdBaseServiceImpl.java

@@ -0,0 +1,230 @@
+package com.lc.ibps.business.thirtyparty.service.impl;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.lc.ibps.base.core.util.BeanUtils;
+import com.lc.ibps.base.framework.id.UniqueIdUtil;
+import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.untils.SqlUtil;
+import com.lc.ibps.untils.StrUtil;
+import lombok.extern.log4j.Log4j2;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@Log4j2
+@Service
+public class WsdBaseServiceImpl {
+
+    //  室内温湿度--t_snwsdjkjlb   冰箱温度--t_bxwdjkjlb   温浴箱(培养箱)温湿度--t_wyxwdjkywhjlb   阴凉柜温湿度记录---t_ylgwdjkjlb
+    public static final String SNWSD = "t_snwsdjkjlb";
+    public static final String BXWD = "t_bxwdjkjlb";
+    public static final String WYXWSD = "t_wyxwdjkywhjlb";
+    public static final String YLGWSD = "t_ylgwdjkjlb";
+    public static final String SKJLB = "t_sshjskycljlb";
+    public static final String WSDJLB = "t_dsfwsdjlb";
+
+    public SimpleDateFormat shijian = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+    public SimpleDateFormat minute = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+    public SimpleDateFormat riqi = new SimpleDateFormat("yyyy-MM-dd");
+    public SimpleDateFormat shifen = new SimpleDateFormat("HH:mm");
+    public SimpleDateFormat merge = new SimpleDateFormat("yyyyMMddHHmm");
+
+    @Resource
+    public ICommonDao<?> commonDao;
+
+    public void addWsdData(List<Map<String, Object>> list) throws Exception {
+        for (Map<String,Object> map : list){
+            String deptId = StrUtil.str(map.get("bu_men_id_"));
+            String type = StrUtil.str(map.get("shu_ju_lei_xing_"));
+            String leiXing = StrUtil.str(map.get("she_bei_lei_xing_"));
+            Map<String,Object> data = new HashMap<>();
+            data.put("id_", UniqueIdUtil.getId());
+            data.put("create_time_", shijian.format(new Date()));
+            data.put("bian_zhi_bu_men_", deptId);
+            data.put("shi_fou_guo_shen_", "已完成");
+            data.put("bian_zhi_ren_", "1");
+            data.put("di_dian_", StrUtil.str(map.get("di_dian_")));
+            data.put("bian_zhi_shi_jian", StrUtil.str(map.get("cai_ji_shi_jian_")));
+            data.put("bu_men_", deptId);
+            data.put("qu_yu_ming_cheng_", StrUtil.str(map.get("qu_yu_")));
+            String value = StrUtil.str(map.get("wen_shi_du_zhi_"));
+            String max = StrUtil.str(map.get("zui_da_zhi_"));
+            String min = StrUtil.str(map.get("zui_xiao_zhi_"));
+            boolean add = BeanUtils.isNotEmpty(value) && BeanUtils.isNotEmpty(max) && BeanUtils.isNotEmpty(min);
+            if (add){
+                double humMax = 0;double humMin = 0;double hum = 0;String humStatus="";String humLimit="";
+                if (type.equals("湿度")){
+                    humMax = Double.parseDouble(max);
+                    humMin = Double.parseDouble(min);
+                    hum = Double.parseDouble(value);
+                    humStatus = hum > humMax || hum < humMin ? "失控" : "正常";
+                    humLimit = humMin + "~" + humMax + "%";
+                }
+                double tempMax = 0;double tempMin = 0;double temp = 0;String tempStatus="";String tempLimit="";
+                if (type.equals("温度")){
+                    tempMax = Double.parseDouble(max);
+                    tempMin = Double.parseDouble(min);
+                    temp = Double.parseDouble(value);
+                    tempStatus = temp > tempMax || temp < tempMin ? "失控" : "正常";
+                    tempLimit = tempMin + "~" + tempMax + "℃";
+                }
+                String tempPart = !tempLimit.isEmpty() ? "温度:" + tempLimit : "";
+                String humPart = !humLimit.isEmpty() ? "湿度:" + humLimit : "";
+                String wenDuJianKong = (tempPart.isEmpty() ? "" : tempPart) + (humPart.isEmpty() ? "" : humPart);
+                if (leiXing.equals("冰箱")){
+                    // 冰箱  t_bxwdjkjlb
+                    addBxData(data,map,wenDuJianKong,tempStatus,tempMax,tempMin,temp);
+                }
+                if (leiXing.equals("环境")){
+                    // 室内温湿度 t_snwsdjkjlb
+                    addSnwsdData(data,map,wenDuJianKong,humStatus,tempStatus,tempMax,tempMin,temp,humMax,humMin,hum);
+                }
+                if (leiXing.equals("温浴箱")){
+                    // 温浴箱(培养箱)温湿度 t_wyxwdjkywhjlb
+                    addPyxData(data,map,wenDuJianKong,humStatus,tempStatus,tempMax,tempMin,temp,humMax,humMin,hum);
+                }
+                if (leiXing.equals("阴凉柜")){
+                    // 阴凉柜温湿度记录---t_ylgwdjkjlb
+                    addYlgData(data,map,wenDuJianKong,humStatus,tempStatus,tempMax,tempMin,temp,humMax,humMin,hum);
+                }
+            }
+        }
+    }
+
+    public void addYlgData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String humStatus,
+                            String tempStatus,double tempMax,double tempMin,double temp,double humMax,double humMin,double hum) throws Exception {
+        if (!exist(YLGWSD,map.get("id_").toString(),"config_id_")){
+            data.put("yin_liang_gui_bia",map.get("cai_ji_qi_id_")+" "+map.get("cai_ji_qi_ming_ch"));
+            data.put("fang_jian_",StrUtil.str(map.get("fang_jian_")));
+            data.put("qu_yu_ming_cheng_", StrUtil.str(map.get("qu_yu_")));
+            data.put("gang_wei_", StrUtil.str(map.get("gang_wei_")));
+            data.put("config_id_", map.get("id_"));
+            data.put("jian_kong_she_bei", map.get("cai_ji_qi_id_"));
+            data.put("jian_she_bian_hao", map.get("cai_ji_qi_ming_ch"));
+            data.put("jian_ce_shi_jian_",map.get("cai_ji_shi_jian_"));
+            data.put("jian_ce_zhou_qi_","每日");
+            data.put("jian_ce_ri_qi_","每天");
+            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
+            data.put("shi_ji_shi_jian_", map.get("cai_ji_shi_jian_"));
+            data.put("wen_du_jian_kong_", wenDuJianKong);
+            data.put("shi_kong_zhuang_t",(humStatus.equals("失控")||tempStatus.equals("失控"))?"失控":"正常");
+
+            JSONArray params = new JSONArray();
+            if (BeanUtils.isNotEmpty(temp)){
+                params.add(setJsonList("temp",tempStatus,tempMax,tempMin,temp));
+            }
+            if (BeanUtils.isNotEmpty(hum)){
+                params.add(setJsonList("hum",humStatus,humMax,humMin,hum));
+            }
+            data.put("lie_biao_shu_ju_",params);
+            commonDao.execute(SqlUtil.buildInsertSql(data,YLGWSD));
+        }
+    }
+
+    public void addPyxData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String humStatus,
+                            String tempStatus,double tempMax,double tempMin,double temp,double humMax,double humMin,double hum) throws Exception {
+        if (!exist(WYXWSD,map.get("id_").toString(),"config_id_")){
+            data.put("she_bei_ming_chen",map.get("cai_ji_qi_ming_ch"));
+            data.put("she_bei_bian_hao_",map.get("cai_ji_qi_id_"));
+            data.put("fang_jian_",StrUtil.str(map.get("fang_jian_")));
+            data.put("qu_yu_ming_cheng_", StrUtil.str(map.get("qu_yu_")));
+            data.put("gang_wei_", StrUtil.str(map.get("gang_wei_")));
+            data.put("config_id_", map.get("id_"));
+            data.put("jian_ce_zhou_qi_","每日");
+            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
+            data.put("shi_ji_shi_jian_", map.get("cai_ji_shi_jian_"));
+            data.put("wen_kong_zhi_fan_", wenDuJianKong);
+            data.put("shi_kong_zhuang_t",(humStatus.equals("失控")||tempStatus.equals("失控"))?"失控":"正常");
+
+            JSONArray params = new JSONArray();
+            if (BeanUtils.isNotEmpty(temp)){
+                params.add(setJsonList("temp",tempStatus,tempMax,tempMin,temp));
+            }
+            if (BeanUtils.isNotEmpty(hum)){
+                params.add(setJsonList("hum",humStatus,humMax,humMin,hum));
+            }
+            data.put("lie_biao_shu_ju_",params);
+            commonDao.execute(SqlUtil.buildInsertSql(data,WYXWSD));
+        }
+
+    }
+
+    public void addSnwsdData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String humStatus,
+                              String tempStatus,double tempMax,double tempMin,double temp,double humMax,double humMin,double hum) throws Exception {
+        if (!exist(SNWSD,map.get("id_").toString(),"wai_jian_")){
+            data.put("fang_jian_hao_",StrUtil.str(map.get("fang_jian_")));
+            data.put("qu_yu_ming_cheng_", StrUtil.str(map.get("qu_yu_")));
+            data.put("gang_wei_", StrUtil.str(map.get("gang_wei_")));
+            data.put("wai_jian_", map.get("id_"));
+            data.put("jian_ce_zhou_qi_","每日");
+            data.put("jian_ce_ri_qi_","每天");
+            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
+            data.put("shi_ji_cao_zuo_sh", map.get("cai_ji_shi_jian_"));
+            data.put("wen_shi_du_kong_z", wenDuJianKong);
+            data.put("shi_kong_zhuang_t",(humStatus.equals("失控")||tempStatus.equals("失控"))?"失控":"正常");
+
+            JSONArray params = new JSONArray();
+            if (BeanUtils.isNotEmpty(temp)){
+                params.add(setJsonList("temp",tempStatus,tempMax,tempMin,temp));
+            }
+            if (BeanUtils.isNotEmpty(hum)){
+                params.add(setJsonList("hum",humStatus,humMax,humMin,hum));
+            }
+            data.put("lie_biao_shu_ju_",params);
+            commonDao.execute(SqlUtil.buildInsertSql(data,SNWSD));
+        }
+    }
+
+    public void addBxData(Map<String, Object> data,Map<String, Object> map,String wenDuJianKong,String status,double tempMax,double tempMin,double temp) throws Exception {
+        if (!exist(BXWD,map.get("id_").toString(),"config_id_")){
+            data.put("config_id_", map.get("id_"));
+            data.put("bing_xiang_bian_h", map.get("cai_ji_qi_id_")+" "+map.get("cai_ji_qi_ming_ch"));
+            data.put("wen_kong_zhi_fan_", wenDuJianKong);
+            data.put("shi_ji_shi_jian_", minute.format(minute.parse(map.get("cai_ji_shi_jian_").toString())));
+            data.put("yue_ri_qi_", riqi.format(minute.parse(map.get("cai_ji_shi_jian_").toString())));
+            data.put("shi_jian_shi_fen_", shifen.format(minute.parse(map.get("cai_ji_shi_jian_").toString())));
+            data.put("shi_kong_zhuang_t",status);
+            data.put("fang_jian_",StrUtil.str(map.get("fang_jian_")));
+            data.put("qu_yu_ming_cheng_", StrUtil.str(map.get("qu_yu_")));
+            data.put("gang_wei_", StrUtil.str(map.get("gang_wei_")));
+            data.put("jian_ce_zhou_qi_","每日");
+            data.put("jian_ce_ri_qi_","每周1,2,3,4,5,6,7");
+            data.put("ri_qi_lie_biao_","1,2,3,4,5,6,7");
+            JSONArray params = new JSONArray();
+            params.add(setJsonList("temp",status,tempMax,tempMin,temp));
+            data.put("lie_biao_shu_ju_",params);
+            commonDao.execute(SqlUtil.buildInsertSql(data,BXWD));
+        }
+    }
+
+    public JSONObject setJsonList(String type, String status, double max, double min, double value){
+        JSONObject tempObj = new JSONObject();
+        JSONArray tempRange = new JSONArray();
+        tempRange.add(min);
+        tempRange.add(max);
+        tempObj.put("range",tempRange);
+        tempObj.put("fixValue","");
+        tempObj.put("value",value);
+        tempObj.put("result",value);
+        tempObj.put("status",status);
+        tempObj.put("unit",type.equals("temp")?"℃":"%");
+        tempObj.put("label",type.equals("temp")?"温度":"湿度");
+        tempObj.put("rate","每天");
+        return tempObj;
+    }
+
+    public boolean exist(String tableName,String id,String field){
+        Map<String,Object> his = commonDao.queryOne("select id_ from "+tableName+" where "+field+"='"+id+"'");
+        if (BeanUtils.isNotEmpty(his)){
+            return true;
+        }
+        return false;
+    }
+
+}

+ 12 - 0
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/untils/StrUtil.java

@@ -0,0 +1,12 @@
+package com.lc.ibps.untils;
+
+public class StrUtil {
+
+    public static String str(Object obj) {
+        if (obj == null || "".equals(obj.toString().trim())) {
+            return "";
+        }
+        return obj.toString();
+    }
+
+}