Browse Source

Merge remote-tracking branch 'origin/dev_qr_code' into dev_qr_code

release
yinzuomei 3 years ago
parent
commit
8f4579081b
  1. 8
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java
  2. 1
      epmet-gateway/src/main/resources/bootstrap.yml
  3. 29
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CreateQrCodeFormDTO.java
  4. 6
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodFormDTO.java
  5. 81
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java
  6. 9
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java
  7. 11
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java
  8. 24
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

8
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java

@ -102,7 +102,7 @@ public class BarcodeUtils {
Graphics2D g = outImage.createGraphics();
g.drawImage(image, 0, 0, imageW, imageH, null);
g.setColor(QRCOLOR);
g.setFont(new Font("微软雅黑", Font.BOLD, FONTSIZE));
// g.setFont(new Font("微软雅黑", Font.BOLD, FONTSIZE));
g.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
g.setBackground(Color.white);
// 获取文字数量 按照字节展示
@ -153,7 +153,7 @@ public class BarcodeUtils {
private static String outStringByByte(String str, int len) throws IOException {
byte[] btf = str.getBytes("gbk");
byte[] btf = str.getBytes("GBK");
int count = 0;
for (int j = len - 1; j >= 0; j--) {
@ -165,9 +165,9 @@ public class BarcodeUtils {
}
if (count % 2 == 0) {
return new String(btf, 0, len, "gbk");
return new String(btf, 0, len, "GBK");
} else {
return new String(btf, 0, len - 1, "gbk");
return new String(btf, 0, len - 1, "GBK");
}
}

1
epmet-gateway/src/main/resources/bootstrap.yml

@ -500,6 +500,7 @@ epmet:
- /epmet/point/mqCallback/**
- /tduck-api/**
#查询楼栋,单元,房屋
- /gov/org/icneighborhood/open/list
- /gov/org/icbuilding/buildingoption
- /gov/org/icbuildingunit/unitoption
- /gov/org/ichouse/houseoption

29
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CreateQrCodeFormDTO.java

@ -0,0 +1,29 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.Group;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* @Author zxc
* @DateTime 2022/3/18 15:43
* @DESC
*/
@Data
public class CreateQrCodeFormDTO implements Serializable {
private static final long serialVersionUID = -6801094057381407439L;
public interface CreateQrCodeForm{}
@NotBlank(message = "id不能为空",groups = CreateQrCodeForm.class)
private String id;
/**
* community:社区neighborHood小区
*/
@NotBlank(message = "type不能为空",groups = CreateQrCodeForm.class)
private String type;
}

6
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodFormDTO.java

@ -17,17 +17,17 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
@Data
public class IcNeighborHoodFormDTO implements Serializable {
public class IcNeighborHoodFormDTO extends PageFormDTO {
private static final long serialVersionUID = 1L;
@ -102,4 +102,4 @@ public class IcNeighborHoodFormDTO implements Serializable {
}
}

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

@ -21,13 +21,20 @@ import com.alibaba.fastjson.JSONObject;
import com.epmet.commons.rocketmq.messages.OrgOrStaffMQMsg;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.RequirePermission;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.enums.EnvEnum;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.BarcodeUtils;
import com.epmet.commons.tools.utils.Result;
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;
@ -35,6 +42,7 @@ import com.epmet.feign.EpmetMessageOpenFeignClient;
import com.epmet.send.SendMqMsgUtil;
import com.epmet.service.AgencyService;
import com.epmet.service.CustomerAgencyService;
import com.epmet.service.IcNeighborHoodService;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
@ -46,9 +54,16 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.imageio.stream.ImageOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.*;
import java.net.URLEncoder;
import java.nio.file.FileSystems;
import java.nio.file.Path;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -69,6 +84,8 @@ public class AgencyController {
private CustomerAgencyService customerAgencyService;
@Autowired
private EpmetMessageOpenFeignClient epmetMessageOpenFeignClient;
@Autowired
private IcNeighborHoodService neighborHoodService;
/**
* @param formDTO
@ -370,4 +387,66 @@ public class AgencyController {
return new Result<List<SonOrgResultDTO>>().ok(agencyService.getSonAgencyId(orgId,type));
}
/**
* Desc: 生成某类型下的二维码
* @param formDTO
* @author zxc
* @date 2022/3/2 10:32 上午
*/
@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("api/", StrConstant.EPMETY_STR)
.concat("epmet-oper-gov/#/caiji/")
.concat(id).concat("?")
.concat("name=").concat(name).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) {
e.printStackTrace();
}
}
}

9
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java

@ -35,6 +35,7 @@ import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.form.IcNeighborHoodFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
@ -77,6 +78,12 @@ public class IcNeighborHoodController {
return new Result<PageData<IcNeighborHoodDTO>>().ok(page);
}
@PostMapping("open/list")
public Result<PageData<IcNeighborHoodDTO>> openList(@RequestBody IcNeighborHoodFormDTO params){
PageData<IcNeighborHoodDTO> page = icNeighborHoodService.openPage(params);
return new Result<PageData<IcNeighborHoodDTO>>().ok(page);
}
@GetMapping("{id}")
public Result<IcNeighborHoodDTO> get(@PathVariable("id") String id){
IcNeighborHoodDTO data = icNeighborHoodService.get(id);
@ -188,7 +195,7 @@ public class IcNeighborHoodController {
//url组成:数字社区地址?小区id&用户id
//String url = "https://demo.tduckapp.com/s/7314b64b3a26455ab793fb8c640856b6?id="+id;
String url = EnvEnum.getCurrentEnv().getUrl().replace("api/",StrConstant.EPMETY_STR)
.concat("epmet-oper-gov/#/")
.concat("epmet-oper-gov/#/caiji/")
.concat(id)
.concat(StrConstant.AND_MARK).concat("userId=").concat(tokenDto.getUserId());
BufferedImage image = BarcodeUtils.drawQRImage(neighborhoodName, url);

11
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java

@ -23,12 +23,12 @@ import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.IcNeighborHoodFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.entity.IcNeighborHoodEntity;
import com.epmet.entity.IcNeighborHoodPropertyEntity;
import com.epmet.entity.IcPropertyManagementEntity;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
@ -148,4 +148,11 @@ public interface IcNeighborHoodService extends BaseService<IcNeighborHoodEntity>
void neighborHoodPropertyInsert(List<IcNeighborHoodPropertyEntity> entities);
<T> String orgGeneralImport(Collection<?> errorRows, Class<T> tClass) throws IOException;
}
/**
* desc:开发获取小区列表 分页或不分页
* @param params
* @return
*/
PageData<IcNeighborHoodDTO> openPage(IcNeighborHoodFormDTO params);
}

24
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java

@ -48,6 +48,7 @@ import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcNeighborHoodDao;
import com.epmet.dao.IcPropertyManagementDao;
import com.epmet.dto.*;
import com.epmet.dto.form.IcNeighborHoodFormDTO;
import com.epmet.dto.form.ImportInfoFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
@ -61,6 +62,8 @@ import com.epmet.model.ImportNeighborHoodInfoListener;
import com.epmet.model.NeighborHoodInfoModel;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.*;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.ListUtils;
@ -680,4 +683,25 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
return uploadResult.getData().getUrl();
}
@Override
public PageData<IcNeighborHoodDTO> openPage(IcNeighborHoodFormDTO params) {
LambdaQueryWrapper<IcNeighborHoodEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcNeighborHoodEntity::getAgencyId,params.getAgencyId());
PageData<IcNeighborHoodDTO> result = null;
List<IcNeighborHoodDTO> list = null;
if (params.isPage()){
Page<IcNeighborHoodEntity> objects = PageHelper.startPage(params.getPageNo(), params.getPageSize()).doSelectPage(() -> {
baseDao.selectList(wrapper);
});
list = ConvertUtils.sourceToTarget(objects.getResult(),IcNeighborHoodDTO.class);
result = new PageData<>(list,objects.getTotal());
return result;
}
List<IcNeighborHoodEntity> listEntity = baseDao.selectList(wrapper);
list = ConvertUtils.sourceToTarget(listEntity,IcNeighborHoodDTO.class);
result = new PageData<>(list,list.size());
return result;
}
}

Loading…
Cancel
Save