Browse Source

生成小区二维码调整

master
Jackwang 3 years ago
parent
commit
255711a6f0
  1. 7
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CollectUrlEnum.java
  2. 6
      epmet-module/gov-org/gov-org-server/pom.xml
  3. 65
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  4. 94
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/NeighborHoodServiceImpl.java
  5. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java

7
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/NeighborHoodUrlEnum.java → epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/CollectUrlEnum.java

@ -1,16 +1,17 @@
package com.epmet.commons.tools.enums;
public enum NeighborHoodUrlEnum {
public enum CollectUrlEnum {
URL_PRE("https://www.baidu.com/", "小区码跳转地址");
URL_PRE("subpages/points/pages/fangyi/xinxi/create/index", "小程序码跳转地址"),
GET_CODE_URL("https://api.weixin.qq.com/wxa/getwxacode?access_token=", "获取二维码的url");
private String code;
private String name;
NeighborHoodUrlEnum(String code, String name) {
CollectUrlEnum(String code, String name) {
this.code = code;
this.name = name;
}

6
epmet-module/gov-org/gov-org-server/pom.xml

@ -147,6 +147,12 @@
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.epmet</groupId>
<artifactId>epmet-third-client</artifactId>
<version>2.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>

65
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java

@ -33,7 +33,6 @@ import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.CustomerAgencyConstant;
import com.epmet.constant.OrgInfoConstant;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.entity.CustomerAgencyEntity;
@ -409,13 +408,9 @@ public class AgencyController {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织信息不存在");
}
name = customerAgencyDTO.getOrganizationName();
} else if (type.equals(OrgInfoConstant.NEIGHBOR_HOOD)) {
IcNeighborHoodDTO icNeighborHoodDTO = neighborHoodService.get(id);
if (icNeighborHoodDTO == null) {
} else {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "小区信息不存在");
}
name = icNeighborHoodDTO.getNeighborHoodName();
}
//url组成:数字社区地址?小区id&用户id
//String url = "https://demo.tduckapp.com/s/7314b64b3a26455ab793fb8c640856b6?id="+id;
String url = EnvEnum.getCurrentEnv().getUrl()
@ -454,6 +449,64 @@ public class AgencyController {
log.error("method exception", e);
}
}
// @PostMapping("create-qrcode")
// public void createQrCode(@LoginUser TokenDto tokenDto, @RequestBody CreateQrCodeFormDTO formDTO, HttpServletResponse response) {
// ValidatorUtils.validateEntity(formDTO, CreateQrCodeFormDTO.CreateQrCodeForm.class);
// String id = formDTO.getId();
// String type = formDTO.getType();
// String name = "";
// try {
// if (type.equals(OrgInfoConstant.COMMUNITY)) {
// CustomerAgencyDTO customerAgencyDTO = customerAgencyService.get(id);
// if (customerAgencyDTO == null) {
// throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "组织信息不存在");
// }
// name = customerAgencyDTO.getOrganizationName();
// } else if (type.equals(OrgInfoConstant.NEIGHBOR_HOOD)) {
// IcNeighborHoodDTO icNeighborHoodDTO = neighborHoodService.get(id);
// if (icNeighborHoodDTO == null) {
// throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "小区信息不存在");
// }
// name = icNeighborHoodDTO.getNeighborHoodName();
// }
// //url组成:数字社区地址?小区id&用户id
// //String url = "https://demo.tduckapp.com/s/7314b64b3a26455ab793fb8c640856b6?id="+id;
// String url = EnvEnum.getCurrentEnv().getUrl()
// .replace("cloud", "open")
// .replace("api/", StrConstant.EPMETY_STR)
// .concat("epmet-oper-gov/#/caiji/")
// .concat(id).concat("?")
// .concat("name=").concat(URLEncoder.encode(name, StrConstant.UTF_8)).concat(StrConstant.AND_MARK)
// .concat("customerId=").concat(tokenDto.getCustomerId()).concat(StrConstant.AND_MARK)
// .concat("type=").concat(type).concat(StrConstant.AND_MARK)
// .concat("userId=").concat(tokenDto.getUserId())
// .concat(StrConstant.AND_MARK).concat(String.valueOf(LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli()));
// BufferedImage image = BarcodeUtils.drawQRImage(name, url);
// //BufferedImage 转 InputStream
// ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
// ImageOutputStream imageOutput = ImageIO.createImageOutputStream(byteArrayOutputStream);
// ImageIO.write(image, "png", imageOutput);
// InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
// long length = imageOutput.length();
// String fileName = name + ".png";
// response.setContentType("application/octet-stream");
// response.setContentLength((int) length);
// response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, StrConstant.UTF_8));
//
// //输出流
// byte[] bytes = new byte[1024];
// OutputStream outputStream = response.getOutputStream();
// long count = 0;
// while (count < length) {
// int len = inputStream.read(bytes, 0, 1024);
// count += len;
// outputStream.write(bytes, 0, len);
// }
// outputStream.flush();
// } catch (Exception e) {
// log.error("method exception", e);
// }
// }
/**
* Desc: 查询工作人员所属组织下的所有社区

94
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/NeighborHoodServiceImpl.java

@ -1,19 +1,19 @@
package com.epmet.service.impl;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.enums.NeighborHoodUrlEnum;
import com.epmet.commons.tools.enums.CollectUrlEnum;
import com.epmet.commons.tools.enums.OrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.BarcodeUtils;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.HttpClientManager;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.NeighborhoodConstant;
import com.epmet.dao.CustomerGridDao;
@ -39,28 +39,23 @@ import com.epmet.excel.IcNeighborHoodExcel;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.GovOrgOpenFeignClient;
import com.epmet.feign.OssFeignClient;
import com.epmet.resi.group.dto.QRCodeMultipartFileDTO;
import com.epmet.service.IcNeighborHoodPropertyService;
import com.epmet.service.IcNeighborHoodService;
import com.epmet.service.NeighborHoodService;
import com.epmet.util.ExcelPoiUtils;
import com.epmet.utils.ThirdUtils;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.http.entity.ContentType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -134,7 +129,7 @@ public class NeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao,I
IcNeighborHoodEntity neiEntity = new IcNeighborHoodEntity();
neiEntity.setId(entity.getId());
try {
neiEntity.setQrcodeUrl(createNeiQrcodeUrl(entity.getId(),entity.getNeighborHoodName()));
neiEntity.setQrcodeUrl(createNeiQrcodeUrl(entity));
} catch (Exception e) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"二维码生成失败","二维码生成失败");
}
@ -148,46 +143,45 @@ public class NeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao,I
* @params [NeighborHood]
* @return java.lang.String
*/
private String createNeiQrcodeUrl(String NeighborHood,String neighborHoodName) throws Exception {
if (org.apache.commons.lang3.StringUtils.isBlank(NeighborHood)) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "小区id不可为空", "小区id不可为空");
}
//二维码内容地址
String url = NeighborHoodUrlEnum.URL_PRE.getCode()+"?neiId="+NeighborHood;
String fileName = neighborHoodName + ".png";
BufferedImage image = BarcodeUtils.drawQRImage(neighborHoodName, url);
private String createNeiQrcodeUrl(IcNeighborHoodEntity entity) throws Exception {
if (null == entity) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "小区不可为空", "小区不可为空");
}
//获取AccessToken
String accessToken = ThirdUtils.getAccessToken(entity.getCustomerId()).getResiToken();
if (org.apache.commons.lang3.StringUtils.isBlank(accessToken)) {
log.warn("获取accessToken失败,customerId:{}", entity.getCustomerId());
throw new RenException("获取accessToken失败,customerId:{}", entity.getCustomerId());
}
//跳转的页面
StringBuilder path = new StringBuilder(CollectUrlEnum.URL_PRE.getCode());
path.append("?neiId=").append(entity.getId()).append("&agencyId=").append(entity.getAgencyId());
FileItem fileItem = new DiskFileItemFactory(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD, FileUtils.getAndCreateDirUnderEpmetFilesDir("temp").toFile())
.createItem("file", ContentType.APPLICATION_OCTET_STREAM.toString(), false, fileName);
OutputStream os = fileItem.getOutputStream();
Result<UploadImgResultDTO> uploadResult = null;
try {
ImageIO.write(image, "png", os);
uploadResult = ossFeignClient.uploadImportTaskDescFile(new CommonsMultipartFile(fileItem));
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("上传小区二维码:{}", errormsg);
} finally {
try {
os.close();
} catch (IOException e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("上传小区二维码关闭输出流:{}", errormsg);
//需要发送的Json
JSONObject data = new JSONObject();
data.put("path", path.toString());
data.put("width", 400);
//发送
byte[] buffer = HttpClientManager.getInstance().getMediaByteArray(CollectUrlEnum.GET_CODE_URL.getCode() + accessToken, JSON.toJSONString(data)).getData();
if (buffer != null && buffer.length < 500) {
String wxResult = "";
wxResult = new String(buffer, StandardCharsets.UTF_8);
if (-1 != wxResult.indexOf("errcode")) {
log.error("获取二维码接口返回错误:{}", wxResult);
throw new RenException("获取二维码失败");
}
}
//上传
QRCodeMultipartFileDTO qrCodeMultipartFile = new QRCodeMultipartFileDTO();
qrCodeMultipartFile.setBytes(buffer);
String originalFilename = entity.getNeighborHoodName().concat(".jpg");
qrCodeMultipartFile.setOriginalFilename(originalFilename);
Result<UploadImgResultDTO> uploadResult = ossFeignClient.uploadQrCode(qrCodeMultipartFile);
if (!uploadResult.success()) {
throw new RenException("调用oss服务上传活动居民信息录入码失败");
}
try {
fileItem.delete();
} catch (Exception e) {
String errormsg = ExceptionUtils.getErrorStackTrace(e);
log.error("上传小区二维码删除临时文件:{}", errormsg);
}
}
if (uploadResult == null || !uploadResult.success()) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "上传小区二维码失败", "上传小区二维码失败");
} else {
return uploadResult.getData().getUrl();
}
}
/**
* @describe: 如果编码未改动提交则最大数+1
@ -356,7 +350,7 @@ public class NeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao,I
neiList.forEach(nei->{
if(org.apache.commons.lang3.StringUtils.isBlank(nei.getQrcodeUrl())){
try {
nei.setQrcodeUrl(createNeiQrcodeUrl(nei.getId(),nei.getNeighborHoodName()));
nei.setQrcodeUrl(createNeiQrcodeUrl(nei));
} catch (Exception e) {
e.printStackTrace();
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"二维码生成失败<neiId>:"+nei.getId(),"二维码生成失败<neiId>:"+nei.getId());

2
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiCollectController.java

@ -178,7 +178,7 @@ public class IcResiCollectController {
@PostMapping("saveCollectInfo")
public Result saveCollectInfo(@RequestBody SaveCollectFormDTO formDTO) {
//效验数据
ValidatorUtils.validateEntity(formDTO, SaveCollectFormDTO.class);
ValidatorUtils.validateEntity(formDTO);
formDTO.setOrigin("internal");//固定为内部
return icResiCollectService.saveCollectInfo(formDTO);
}

Loading…
Cancel
Save