瀏覽代碼

修改bug

lishuangjiang@potevio.com 1 年之前
父節點
當前提交
162fe16f2a

+ 41 - 20
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/HomeController.java

@@ -68,17 +68,31 @@ public class HomeController {
     @PostMapping("/category")
     public Map categoryData() {
         Map<String,Object> dataMap = new HashMap<>();
-        List<CategoryVo> categoryVos = productService.selectCategoryList();
-        Date todayZero = todayZeroTime();
-        if(CollectionUtil.isNotEmpty(categoryVos)){
-            dataMap.put("categoryAllNum",categoryVos.size());
-            Integer categoryTodayNum = categoryVos.stream().filter(item->item.getCreateAt().compareTo(todayZero.getTime())>0)
-                    .collect(Collectors.toList()).size();
-            dataMap.put("categoryTodayNum",categoryTodayNum);
-        }else{
-            dataMap.put("categoryAllNum",0);
-            dataMap.put("categoryTodayNum",0);
+//        List<CategoryVo> categoryVos = productService.selectCategoryList();
+//        Date todayZero = todayZeroTime();
+//        if(CollectionUtil.isNotEmpty(categoryVos)){
+//            dataMap.put("categoryAllNum",categoryVos.size());
+//            Integer categoryTodayNum = categoryVos.stream().filter(item->item.getCreateAt().compareTo(todayZero.getTime())>0)
+//                    .collect(Collectors.toList()).size();
+//            dataMap.put("categoryTodayNum",categoryTodayNum);
+//        }else{
+//            dataMap.put("categoryAllNum",0);
+//            dataMap.put("categoryTodayNum",0);
+//        }
+        List<ProductVo> productVos = productService.selectProductList();
+        Map<String,String> productMap = new HashMap<>();
+        if(CollectionUtil.isNotEmpty(productVos)){
+            productMap = productVos.stream().collect(Collectors.toMap(ProductVo::getProductKey,ProductVo::getCategory));
         }
+        Long categoryNum = 0L;
+        Set<String> categorySet = new HashSet<>();
+        Map statisMap = deviceServiceImpl.countCategoryMap(TenantHelper.getTenantId());
+        for (Object key :statisMap.keySet()) {
+            String category = productMap.get(key);
+            categorySet.add(category);
+        }
+        dataMap.put("categoryAllNum",categorySet.size());
+        dataMap.put("categoryTodayNum",0);
         return  dataMap;
     }
 
@@ -86,17 +100,24 @@ public class HomeController {
     @PostMapping("/product")
     public Map productData() {
         Map<String,Object> dataMap = new HashMap<>();
-        Date todayZero = todayZeroTime();
-        List<ProductVo> productVos = productService.selectProductListWithTenant(LoginHelper.getTenantId());
-        if(CollectionUtil.isNotEmpty(productVos)){
-            dataMap.put("productAllNum",productVos.size());
-            Integer productTodayNum = productVos.stream().filter(item->item.getCreateAt().compareTo(todayZero.getTime())>0)
-                    .collect(Collectors.toList()).size();
-            dataMap.put("productTodayNum",productTodayNum);
-        }else{
-            dataMap.put("productAllNum",0);
-            dataMap.put("productTodayNum",0);
+//        Date todayZero = todayZeroTime();
+//        List<ProductVo> productVos = productService.selectProductListWithTenant(LoginHelper.getTenantId());
+//        if(CollectionUtil.isNotEmpty(productVos)){
+//            dataMap.put("productAllNum",productVos.size());
+//            Integer productTodayNum = productVos.stream().filter(item->item.getCreateAt().compareTo(todayZero.getTime())>0)
+//                    .collect(Collectors.toList()).size();
+//            dataMap.put("productTodayNum",productTodayNum);
+//        }else{
+//            dataMap.put("productAllNum",0);
+//            dataMap.put("productTodayNum",0);
+//        }
+        Long productNum = 0L;
+        Map statisMap = deviceServiceImpl.countCategoryMap(TenantHelper.getTenantId());
+        if(CollectionUtil.isNotEmpty(statisMap.keySet())){
+            productNum = new Long(statisMap.keySet().size());
         }
+        dataMap.put("productAllNum",productNum);
+        dataMap.put("productTodayNum",0);
         return  dataMap;
     }
 

+ 2 - 0
iot-module/iot-openapi/src/main/java/cc/iotkit/openapi/service/impl/OpenDeviceServiceImpl.java

@@ -89,6 +89,8 @@ public class OpenDeviceServiceImpl implements OpenDeviceService {
                 SysDept sysDept = JsonUtils.parseObject(deptInfo, SysDept.class);
                 deptId = Objects.isNull(sysDept)?null:sysDept.getId();
             }
+        }else{
+            deptId = 100L;
         }
         DeviceInfo device = new DeviceInfo();
         device.setId(DeviceUtil.newDeviceId(deviceName));

+ 109 - 4
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysUserServiceImpl.java

@@ -6,13 +6,11 @@ import cc.iotkit.common.constant.UserConstants;
 import cc.iotkit.common.enums.ErrCode;
 import cc.iotkit.common.exception.BizException;
 import cc.iotkit.common.satoken.utils.LoginHelper;
+import cc.iotkit.common.utils.JsonUtils;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.common.utils.StreamUtils;
 import cc.iotkit.data.system.*;
-import cc.iotkit.model.system.SysRole;
-import cc.iotkit.model.system.SysUser;
-import cc.iotkit.model.system.SysUserPost;
-import cc.iotkit.model.system.SysUserRole;
+import cc.iotkit.model.system.*;
 import cc.iotkit.system.dto.bo.SysUserBo;
 import cc.iotkit.system.dto.vo.SysUserVo;
 import cc.iotkit.system.service.ISysUserService;
@@ -20,12 +18,20 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.*;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.client.RestTemplate;
 
 import java.util.Collection;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 
 /**
  * 用户 业务层处理
@@ -34,6 +40,7 @@ import java.util.List;
  */
 @RequiredArgsConstructor
 @Service
+@Slf4j
 public class SysUserServiceImpl implements ISysUserService {
 
     @Autowired
@@ -54,6 +61,13 @@ public class SysUserServiceImpl implements ISysUserService {
     @Autowired
     private ISysUserPostData sysUserPostData;
 
+//    @Autowired
+//    private RestTemplate restTemplate;
+
+
+    @Value("${health.platform.url:http://web.poteviohealth.com/boss/admin/api/addIotUser.jhtml}")
+    private String healthPlatFormUrl;
+
 
     public String selectUserNameById(Long userId) {
         return null;
@@ -141,6 +155,7 @@ public class SysUserServiceImpl implements ISysUserService {
     }
 
     @Override
+    @Transactional
     public int insertUser(SysUserBo user) {
         // 新增用户信息
         SysUser newUser = sysUserData.save(user.to(SysUser.class));
@@ -149,9 +164,99 @@ public class SysUserServiceImpl implements ISysUserService {
         insertUserPost(user, false);
         // 新增用户与角色管理
         insertUserRole(user, false);
+        // 同步健康数据
+        try {
+            syncHealthPlatform(user);
+        } catch (Exception e) {
+            log.error(e.toString());
+            throw new BizException("创建用户失败!");
+        }
         return newUser != null ? 1 : 0;
     }
 
+    private void syncHealthPlatform(SysUserBo user) throws Exception {
+        SysDept userDept = sysDeptData.findById(user.getDeptId());
+        SysDept parentDept = null;
+
+        if (Objects.nonNull(userDept)) {
+
+            String[] ancestors = userDept.getAncestors().split(",");
+            if (ancestors.length == 1) {
+                //总公司人员
+                syncUserdata(null, null, user.getUserName());
+            } else if (ancestors.length == 2) {
+                //分公司
+                syncUserdata(userDept.getDeptName(), null, user.getUserName());
+            } else if (ancestors.length == 3) {
+                //机构
+                parentDept = sysDeptData.findById(userDept.getParentId());
+                if (Objects.isNull(parentDept)) {
+                    throw new BizException("机构信息有误!");
+                }
+                syncUserdata(parentDept.getDeptName(), userDept.getDeptName(), user.getUserName());
+            } else {
+                //其他
+                return;
+            }
+
+        } else {
+            throw new BizException("用户信息有误!");
+        }
+    }
+
+    private void syncUserdata(String companyName, String deptName, String userName) throws Exception {
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        //头部类型
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+        MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
+        //接口参数
+        map.add("companyName",companyName);
+        map.add("password",deptName);
+        map.add("user",userName);
+        //构造实体对象
+        HttpEntity<MultiValueMap<String, Object>> param = new HttpEntity<>(map, headers);
+        ResponseEntity exchange = restTemplate.postForEntity(healthPlatFormUrl, param, Map.class);
+        if (exchange.getStatusCode() == HttpStatus.OK) {
+            Map resultRemote = (Map)exchange.getBody();
+            if((boolean) resultRemote.get("success")){
+                log.info("健康平台同步用户信息成功, 编码:"+ resultRemote.get("data"));
+            }else{
+                log.error("健康平台同步用户信息失败,用户名:"+map.get("user")+" 原因:"+resultRemote.get("data"));
+                throw new BizException("健康平台同步用户信息失败");
+            }
+        } else {
+            throw new BizException("健康平台同步用户信息失败!");
+        }
+    }
+
+    public static void main(String[] args) {
+        RestTemplate restTemplate = new RestTemplate();
+        HttpHeaders headers = new HttpHeaders();
+        //头部类型
+        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+        MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
+        //接口参数
+        map.add("companyName","中康养科技公司");
+        map.add("password",null);
+        map.add("user","test03");
+        //构造实体对象
+        HttpEntity<MultiValueMap<String, Object>> param = new HttpEntity<>(map, headers);
+        ResponseEntity exchange = restTemplate.postForEntity("http://web.poteviohealth.com/boss/admin/api/addIotUser.jhtml", param, Map.class);
+        if (exchange.getStatusCode() == HttpStatus.OK) {
+            Map resultRemote = (Map)exchange.getBody();
+            if((boolean) resultRemote.get("success")){
+                log.info("健康平台同步用户信息成功, 编码:"+ resultRemote.get("data"));
+            }else{
+                log.error("健康平台同步用户信息失败,用户名:"+map.get("user")+" 原因:"+resultRemote.get("data"));
+                throw new BizException("健康平台同步用户信息失败");
+            }
+        } else {
+            throw new BizException("健康平台同步用户信息失败!");
+        }
+    }
+
+
     /**
      * 新增用户角色信息
      *