diff --git a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java b/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java index 555643e9e1..1751ef4bc7 100644 --- a/epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/BarcodeUtils.java +++ b/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"); } } diff --git a/epmet-gateway/src/main/resources/bootstrap.yml b/epmet-gateway/src/main/resources/bootstrap.yml index a5a7127cdd..a17a8f9e26 100644 --- a/epmet-gateway/src/main/resources/bootstrap.yml +++ b/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 diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CreateQrCodeFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/CreateQrCodeFormDTO.java new file mode 100644 index 0000000000..b209fccbf0 --- /dev/null +++ b/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; +} diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodFormDTO.java index fbeefeadf5..32eabb2ea6 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcNeighborHoodFormDTO.java +++ b/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 { -} \ No newline at end of file +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java index 26591a9c60..6588637233 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/AgencyController.java +++ b/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>().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(); + } + } + } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java index 663e48ba6f..03bdf6050e 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcNeighborHoodController.java +++ b/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>().ok(page); } + @PostMapping("open/list") + public Result> openList(@RequestBody IcNeighborHoodFormDTO params){ + PageData page = icNeighborHoodService.openPage(params); + return new Result>().ok(page); + } + @GetMapping("{id}") public Result 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); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java index 1f32607a65..3dcfaba0da 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/IcNeighborHoodService.java +++ b/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 void neighborHoodPropertyInsert(List entities); String orgGeneralImport(Collection errorRows, Class tClass) throws IOException; -} \ No newline at end of file + + /** + * desc:开发获取小区列表 分页或不分页 + * @param params + * @return + */ + PageData openPage(IcNeighborHoodFormDTO params); +} diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java index f2b50748eb..331552e4a3 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java +++ b/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 openPage(IcNeighborHoodFormDTO params) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(IcNeighborHoodEntity::getAgencyId,params.getAgencyId()); + PageData result = null; + List list = null; + if (params.isPage()){ + Page 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 listEntity = baseDao.selectList(wrapper); + list = ConvertUtils.sourceToTarget(listEntity,IcNeighborHoodDTO.class); + result = new PageData<>(list,list.size()); + return result; + } + }