suntianwu 3 лет назад
Родитель
Сommit
51cd1ddcfb

+ 29 - 1
src/main/java/com/iden/bms/controller/CrowdController.java

@@ -87,6 +87,7 @@ public class CrowdController {
         }
     }
 
+
     /**
      * 下载模板
      * @param
@@ -217,7 +218,6 @@ public class CrowdController {
             @ApiImplicitParam(paramType = "query", name = "crowdId", value = "人群id", required = true)
     })
     public PageResult<List<PersonVO>> listPersonByCrowd(HttpServletRequest request, @RequestHeader(value = "token") String token,
-
                                                  @RequestParam(value = "crowdId", required = true) Long crowdId,
                                                  PageReqVO pageReqVo){
         try {
@@ -234,6 +234,34 @@ public class CrowdController {
         }
     }
 
+    /**
+     * 导出人群中人员列表Excel
+     * @param
+     * @return
+     */
+    @ApiOperation(value = "导出人群中人员列表")
+    @ApiImplicitParams(value = {
+            @ApiImplicitParam(paramType = "query", name = "crowdId", value = "人群id", required = true)
+    })
+    @GetMapping({"/exportToExcel"})
+    @LogAnnotation(
+            type = OperateType.EXPORT,
+            moduleName = "导出人群中人员列表",
+            description = "导出人群中人员列表"
+    )
+    public void exportToExcel(HttpServletRequest request,@RequestHeader(name = "token", required = true) String token,
+                              @RequestParam(value = "crowdId", required = true) Long crowdId,
+                              HttpServletResponse response) {
+        try {
+            UserLoginedConvertVO loginUser = WebPageUtils.getCurrentLoginedUser(request);
+            this.crowdService.exportToExcel(crowdId,loginUser, response);
+        } catch (BDException e) {
+            log.error("导出人群中人员列表出现异常",e);
+        } catch (Exception e) {
+            log.error("人群管理: 导出人群中人员列表出现异常",e);
+        }
+    }
+
     @PostMapping("/deletePersonFromCrowd")
     @ApiOperation(value = "从人群中删除人员")
     @ApiImplicitParams(value = {

+ 81 - 5
src/main/java/com/iden/bms/service/CrowdService.java

@@ -5,8 +5,8 @@ import cn.hutool.core.collection.CollUtil;
 
 import cn.hutool.core.util.StrUtil;
 
+import com.alibaba.excel.EasyExcel;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.iden.common.cache.DictCache;
@@ -17,13 +17,11 @@ import com.iden.common.enums.CredentialsTypeEnum;
 import com.iden.common.enums.GenderEnum;
 import com.iden.common.enums.PersonTypeEnum;
 import com.iden.common.enums.PopulationTypeEnum;
+import com.iden.common.exceltool.RowWriteHandler;
 import com.iden.common.exception.BDException;
 import com.iden.common.service.*;
 
-import com.iden.common.vo.CrowdVO;
-import com.iden.common.vo.PageReqVO;
-import com.iden.common.vo.PersonVO;
-import com.iden.common.vo.UserLoginedConvertVO;
+import com.iden.common.vo.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -31,7 +29,10 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.io.File;
+import java.net.URL;
+import java.net.URLEncoder;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -102,6 +103,10 @@ public class CrowdService {
                 pageRes.getRecords().forEach(item -> {
                     CrowdVO resVO = new CrowdVO();
                     BeanUtils.copyProperties(item,resVO);
+                    QueryWrapper<IdenPersonCrowdRef> queryWrapper1 = new QueryWrapper<>();
+                    queryWrapper1.lambda().eq(IdenPersonCrowdRef::getCrowdId,resVO.getId());
+                    int cnt = this.idenPersonCrowdRefService.count(queryWrapper1);
+                    resVO.setQuantity(cnt);
                     list.add(resVO);
                 });
                 results.setRecords(list);
@@ -109,6 +114,77 @@ public class CrowdService {
             return results;
     }
 
+    public void exportToExcel( Long crowdId,UserLoginedConvertVO loginUser, HttpServletResponse response)  throws Exception {
+        QueryWrapper<IdenPerson> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda()
+                .orderByDesc(IdenPerson::getModifyTime)
+                .orderByDesc(IdenPerson::getCreateTime);
+
+        if (crowdId != null) {
+            queryWrapper.apply(" in ( select person_id from iden_person_crowd_ref ipcr where ipcr.crowd_id = "+ crowdId + ")");
+        }
+
+        List<IdenPerson>  list =  this.idenPersonService.list(queryWrapper);
+        List<PersonExcelVO> records = new ArrayList<>();
+        if (CollUtil.isNotEmpty(list)) {
+            list.forEach(item->{
+                PersonExcelVO resVO = new PersonExcelVO();
+                BeanUtils.copyProperties(item,resVO);
+                resVO.setPopulationTypeName(PopulationTypeEnum.getValueToName(item.getPopulationType()));
+                resVO.setTypeName(PersonTypeEnum.getValueToName(item.getType()));
+                resVO.setGenderName(GenderEnum.getValueToName(item.getGender()));
+                resVO.setCredentialsTypeName(CredentialsTypeEnum.getValueToName(item.getCredentialsType()));
+                resVO.setMarriageName(DictCache.getNameByValue("marriage", item.getMarriage()));
+                resVO.setPolicitalStatusName(DictCache.getNameByValue("policital_status", item.getPolicitalStatus()));
+
+                try {
+                    resVO.setImageUrl(new URL(item.getImage()));
+                } catch (Exception e){
+                    e.printStackTrace();
+                }
+                Long communityId1 = item.getCommunityId();
+                if(communityId1 != null){
+                    IdenCommunity idenCommunity = this.idenCommunityService.getById(communityId1);
+                    if(idenCommunity != null) {
+                        resVO.setCommunityName(idenCommunity.getName());
+                    }
+                }
+                QueryWrapper<IdenPersonCrowdRef> queryWrapper1 = new QueryWrapper<>();
+                queryWrapper1.lambda().eq(IdenPersonCrowdRef::getPersonId,item.getId());
+                List<IdenPersonCrowdRef> listIdenPersonCrowdRef = idenPersonCrowdRefService.list(queryWrapper1);
+                StringBuilder sb = new StringBuilder();
+                if (CollUtil.isNotEmpty(listIdenPersonCrowdRef)) {
+                    for(IdenPersonCrowdRef idenPersonCrowdRef : listIdenPersonCrowdRef){
+                        IdenCrowd idenCrowd = idenCrowdService.getById(idenPersonCrowdRef.getCrowdId());
+                        if(idenCrowd != null) {
+                            sb.append(idenCrowd.getName()).append(",");
+                        }
+                    }
+                }
+                String crowdName = sb.toString();
+                if(crowdName != null && crowdName.endsWith(",")) {
+                    crowdName = crowdName.substring(0, crowdName.length() - 1);
+                }
+                resVO.setCrowdName(crowdName);
+                records.add(resVO);
+            });
+        }
+
+        try {
+            response.reset(); // 非常重要
+            response.addHeader("Access-Control-Allow-Origin",  "*");
+            response.setContentType("application/vnd.ms-excel");
+            response.setCharacterEncoding("utf-8");
+            final String fileName = URLEncoder.encode("Person", "UTF-8");
+            response.setHeader("Content-disposition", "attachment;filename=" + fileName + "_" + System.currentTimeMillis() + ".xlsx");
+
+            EasyExcel.write(response.getOutputStream(), PersonExcelVO.class).sheet("人员表").registerWriteHandler(new RowWriteHandler()).doWrite(records);
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 删除人群
      * @param id

+ 0 - 15
src/main/java/com/iden/common/entity/IdenCrowd.java

@@ -45,26 +45,11 @@ public class IdenCrowd implements Serializable {
     private String name;
 
 
-    @ApiModelProperty("人群数量")
-    @TableField("QUANTITY")
-    private Integer quantity;
-
-
     @ApiModelProperty("备注")
     @TableField("REMARK")
     private String remark;
 
 
-    @ApiModelProperty("数据日期开始")
-    @TableField("DATA_DATE_BEGIN")
-    private Date dataDateBegin;
-
-
-    @ApiModelProperty("数据日期结束")
-    @TableField("DATA_DATE_END")
-    private Date dataDateEnd;
-
-
     @ApiModelProperty("createTime")
     @TableField("CREATE_TIME")
     private Date createTime;

+ 0 - 8
src/main/java/com/iden/common/vo/CrowdVO.java

@@ -43,14 +43,6 @@ public class CrowdVO implements Serializable {
     @ApiModelProperty("数据日期")
     private String dataDate;
 
-    @ApiModelProperty("数据日期开始")
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
-    private Date dataDateBegin;
-
-
-    @ApiModelProperty("数据日期结束")
-    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
-    private Date dataDateEnd;
 
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
     @ApiModelProperty("创建时间")

+ 1 - 1
src/main/resources/application-dev.properties

@@ -35,7 +35,7 @@ iden.root=/data/iden/
 file.url=http://124.70.58.209:17778/
 
 ##是否初始化加载人脸识别库,是:1,不:0
-init.face.dataset=1
+init.face.dataset=0
 
 #视频编辑程序所在路径
 ffmpeg.path=/data/iden/ffmpeg/ffmpeg-git-20211217-amd64-static/ffmpeg