大数据与最优化研究所 il y a 1 an
Parent
commit
e34f090b29

+ 9 - 0
src/main/java/com/xjrsoft/common/utils/WeChatUtil.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.common.utils;
 
 
+import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.spring.SpringUtil;
 import cn.hutool.http.HttpUtil;
@@ -11,6 +12,7 @@ import com.xjrsoft.module.organization.dto.WeChatDepartDto;
 import com.xjrsoft.module.organization.dto.WeChatUserDto;
 import com.xjrsoft.module.system.vo.WeChatUserInfo;
 import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
@@ -24,6 +26,7 @@ import java.util.UUID;
 
 @Component
 @Data
+@Slf4j
 public class WeChatUtil {
     @Value("${xjrsoft.enterpriseWeChat.corpid}")
     public String appKey;
@@ -144,6 +147,7 @@ public class WeChatUtil {
 
     //公众号发送文本消息给用户
     public Boolean sendMessage(String content, String userId) {
+
         String token = this.getToken(WeChatType.WEWEB);
         JSONObject object = new JSONObject();
         JSONArray touser=new JSONArray();
@@ -180,6 +184,11 @@ public class WeChatUtil {
     //           }
     //       }
     public Boolean sendTemplateMessage(JSONObject object){
+        String active = SpringUtil.getActiveProfile();
+        if(!"prod".equals(active)){
+            log.info("非正式环境,无法执行数据推送");
+            return false;
+        }
         String token = this.getToken(WeChatType.WEWEB);
         String result = HttpUtil.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token, JSONObject.toJSONString(object));
         System.out.printf(result);

+ 112 - 10
src/main/java/com/xjrsoft/module/asset/controller/WfAssetManageController.java

@@ -1,35 +1,39 @@
 package com.xjrsoft.module.asset.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.xjrsoft.common.constant.GlobalConstant;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.TreeUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.asset.dto.AddWfAssetManageDto;
 import com.xjrsoft.module.asset.dto.UpdateWfAssetManageDto;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-
 import com.xjrsoft.module.asset.dto.WfAssetManagePageDto;
 import com.xjrsoft.module.asset.entity.WfAssetManage;
 import com.xjrsoft.module.asset.service.IWfAssetManageService;
+import com.xjrsoft.module.asset.vo.BaseOfficeBuildVo;
+import com.xjrsoft.module.asset.vo.PlaceTreeVo;
 import com.xjrsoft.module.asset.vo.WfAssetManagePageVo;
-
 import com.xjrsoft.module.asset.vo.WfAssetManageVo;
+import com.xjrsoft.module.base.entity.BaseClassroom;
+import com.xjrsoft.module.base.entity.BaseOfficeBuild;
+import com.xjrsoft.module.base.service.IBaseClassroomService;
+import com.xjrsoft.module.base.service.IBaseOfficeBuildService;
+import com.xjrsoft.module.system.entity.DictionaryDetail;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
 * @title: 资产管理
@@ -46,6 +50,104 @@ public class WfAssetManageController {
 
     private final IWfAssetManageService wfAssetManageService;
 
+    private final IBaseOfficeBuildService baseOfficeBuildService;
+
+    private final IBaseClassroomService baseClassroomService;
+
+    @GetMapping(value = "/buildingfloorclassroomtree")
+    @ApiOperation(value = "楼栋楼层教室树")
+    @SaCheckPermission("studentmanager:detail")
+    public RT<List<PlaceTreeVo>> buildingFloorClassroomTree() {
+        List<PlaceTreeVo> voList = new ArrayList<>();
+        long customUniqueId = 101010;
+
+        //获取楼栋信息记录
+        MPJLambdaWrapper<BaseOfficeBuild> baseOfficeBuildMPJLambdaWrapper = new MPJLambdaWrapper<>();
+        baseOfficeBuildMPJLambdaWrapper
+                .select(BaseOfficeBuild::getId)
+                .selectAs(DictionaryDetail::getName, BaseOfficeBuildVo::getBuildTypeCn)
+                .select(BaseOfficeBuild.class,x -> VoToColumnUtil.fieldsToColumns(BaseOfficeBuildVo.class).contains(x.getProperty()))
+                .leftJoin(DictionaryDetail.class, DictionaryDetail::getCode, BaseOfficeBuild::getBuildType)
+        ;
+
+        List<BaseOfficeBuildVo> baseOfficeBuildVoList = baseOfficeBuildService.selectJoinList(BaseOfficeBuildVo.class, baseOfficeBuildMPJLambdaWrapper);
+
+        Map<String, List<BaseOfficeBuildVo>> officeBuildByAddress = baseOfficeBuildVoList.stream().collect(Collectors.groupingBy(BaseOfficeBuildVo::getAddress));
+
+        for (Map.Entry<String, List<BaseOfficeBuildVo>> entry : officeBuildByAddress.entrySet()){
+            String key = entry.getKey();
+            List<BaseOfficeBuildVo> value = entry.getValue();
+
+            voList.add(new PlaceTreeVo(){{
+                setId(8888L);
+                setName(key);
+            }});
+
+            if(!value.isEmpty()){
+                Map<String, List<BaseOfficeBuildVo>> officeBuildByType = value.stream().collect(Collectors.groupingBy(BaseOfficeBuildVo::getBuildType));
+                for (Map.Entry<String, List<BaseOfficeBuildVo>> e : officeBuildByType.entrySet()){
+                    String k = e.getKey();
+                    List<BaseOfficeBuildVo> v = e.getValue();
+
+                    PlaceTreeVo placeTreeVo = new PlaceTreeVo();
+                    placeTreeVo.setId(customUniqueId);
+                    if(!v.isEmpty() && v.get(0) != null){
+                        placeTreeVo.setName(v.get(0).getName());
+                    }
+                    placeTreeVo.setParentId(8888L);
+
+                    if(!v.isEmpty()){
+                        for (BaseOfficeBuildVo baseOfficeBuildVo : v){
+                            PlaceTreeVo p = new PlaceTreeVo();
+                            p.setId(baseOfficeBuildVo.getId());
+                            p.setName(baseOfficeBuildVo.getName());
+                            p.setParentId(customUniqueId);
+                        }
+                    }
+
+                    customUniqueId++;
+                }
+            }
+        }
+
+        //获取教室信息
+        List<BaseClassroom> baseClassroomList = baseClassroomService.list();
+
+        Map<Long, List<BaseClassroom>> baseClassroomMap = baseClassroomList.stream().collect(Collectors.groupingBy(BaseClassroom::getOfficeBuildId));
+        for (Map.Entry<Long, List<BaseClassroom>> entry : baseClassroomMap.entrySet()){
+            Long key = entry.getKey();
+            List<BaseClassroom> value = entry.getValue();
+
+            if(!value.isEmpty()){
+                Map<Integer, List<BaseClassroom>> baseClassroomByFloorNum = value.stream().collect(Collectors.groupingBy(BaseClassroom::getFloorNum));
+                for (Map.Entry<Integer, List<BaseClassroom>> e : baseClassroomByFloorNum.entrySet()){
+                    Integer k = e.getKey();
+                    List<BaseClassroom> v = e.getValue();
+
+                    PlaceTreeVo placeTreeVo = new PlaceTreeVo();
+                    placeTreeVo.setId(customUniqueId);
+                    placeTreeVo.setName(k + "楼");
+                    placeTreeVo.setParentId(key);
+
+                    if(!v.isEmpty()){
+                        for (BaseClassroom baseClassroom : v){
+                            PlaceTreeVo p = new PlaceTreeVo();
+                            p.setId(baseClassroom.getId());
+                            p.setName(baseClassroom.getName());
+                            p.setParentId(customUniqueId);
+                        }
+                    }
+
+                    customUniqueId++;
+                }
+            }
+        }
+
+        List<PlaceTreeVo> treeVoList = TreeUtil.build(voList);
+
+        return RT.ok(treeVoList);
+    }
+
     @GetMapping(value = "/page")
     @ApiOperation(value="资产管理列表(分页)")
     @SaCheckPermission("wfassetmanage:detail")

+ 31 - 0
src/main/java/com/xjrsoft/module/asset/vo/BaseOfficeBuildVo.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.asset.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class BaseOfficeBuildVo {
+    @ApiModelProperty("主键")
+    private Long id;
+
+    @ApiModelProperty("楼栋名称")
+    private String name;
+
+    @ApiModelProperty("所属校区(xjr_department)第一级")
+    private Long orgId;
+
+    @ApiModelProperty("楼层数")
+    private Integer floorTotal;
+
+    @ApiModelProperty("楼栋类型(xjr_dictionary_item[build_type])")
+    private String buildType;
+
+    @ApiModelProperty("楼栋号")
+    private Integer buildNumber;
+
+    @ApiModelProperty("地址")
+    private String address;
+
+    @ApiModelProperty("楼栋类型")
+    private String buildTypeCn;
+}

+ 31 - 0
src/main/java/com/xjrsoft/module/asset/vo/PlaceTreeVo.java

@@ -0,0 +1,31 @@
+package com.xjrsoft.module.asset.vo;
+
+import com.xjrsoft.common.model.tree.ITreeNode;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @author szs
+ * @date 2024/3/25
+ */
+@Data
+public class PlaceTreeVo implements ITreeNode<PlaceTreeVo, Long>, Serializable {
+    @ApiModelProperty("id")
+    private Long id;
+
+
+    @ApiModelProperty("name")
+    private String name;
+
+
+    @ApiModelProperty("disabled")
+    private Long parentId;
+
+
+    @ApiModelProperty("children")
+    private List<PlaceTreeVo> children;
+
+}