From 7ddf1d66acf2c87abbc934ff400f845be4144bc2 Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 23 Apr 2023 14:56:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E7=81=B5=E5=B1=B1=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=3D=E5=8E=9F=E4=BA=A7=E5=93=81=E9=87=8D?= =?UTF-8?q?=E7=82=B9=E5=8D=B1=E5=8C=96=E5=93=81=E4=BC=81=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../epmet/dto/IcDangerousChemicalsDTO.java | 55 +++++++++-- .../IcDangerousChemicalsAddEditFormDTO.java | 75 +++++++++++--- .../form/IcDangerousChemicalsListFormDTO.java | 52 ++++++++-- .../IcDangerousChemicalsListResultDTO.java | 45 ++++++++- .../IcDangerousChemicalsController.java | 50 ++++++++-- .../epmet/dao/IcDangerousChemicalsDao.java | 3 +- .../entity/IcDangerousChemicalsEntity.java | 58 +++++++++-- .../impl/IcDangerousChemicalsServiceImpl.java | 98 ++++++++++--------- .../mapper/IcDangerousChemicalsDao.xml | 88 ++++++++++------- 9 files changed, 392 insertions(+), 132 deletions(-) diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcDangerousChemicalsDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcDangerousChemicalsDTO.java index 8afffa5726..92e3ecf439 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcDangerousChemicalsDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcDangerousChemicalsDTO.java @@ -1,8 +1,9 @@ package com.epmet.dto; +import lombok.Data; + import java.io.Serializable; import java.util.Date; -import lombok.Data; /** @@ -21,6 +22,11 @@ public class IcDangerousChemicalsDTO implements Serializable { */ private String id; + /** + * 灵山:所属网格 + */ + private String gridId; + /** * 客户Id */ @@ -36,6 +42,11 @@ public class IcDangerousChemicalsDTO implements Serializable { */ private String agencyIdPath; + /** + * 灵山:GRID_ID的全路径;包含grid_id + */ + private String orgIdPath; + /** * 来源【新增:add 导入:import 】 */ @@ -62,19 +73,19 @@ public class IcDangerousChemicalsDTO implements Serializable { private String dangerType; /** - * 负责人姓名 + * 负责人姓名;灵山项目中此列叫联系人 */ - private String principalName; + private String principalName; /** - * 负责人电话 + * 负责人电话;灵山项目中此列叫联系电话 */ - private String principalMobile; + private String principalMobile; /** - * 经营地址 + * 经营地址;灵山项目中此列叫企业地址 */ - private String address; + private String address; /** * 经度 @@ -91,6 +102,36 @@ public class IcDangerousChemicalsDTO implements Serializable { */ private String remark; + /** + * 灵山:是否重点安全企业;1是;0不是;必填 + */ + private Boolean securityFlag; + + /** + * 灵山:安全负责人姓名 + */ + private String securityPrincipalName; + + /** + * 灵山:手机号 + */ + private String securityPrincipalMobile; + + /** + * 灵山:包企领导 + */ + private String bqLd; + + /** + * 灵山:包企干部 + */ + private String bqGb; + + /** + * 灵山:企业介绍 + */ + private String companyProfile; + /** * 删除标识 */ diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java index c67cb48fb2..8a0747d5f1 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsAddEditFormDTO.java @@ -1,12 +1,11 @@ package com.epmet.dto.form; -import com.epmet.commons.tools.validator.group.AddGroup; import com.epmet.commons.tools.validator.group.CustomerClientShowGroup; -import com.epmet.commons.tools.validator.group.UpdateGroup; import lombok.Data; import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import java.io.Serializable; /** @@ -21,22 +20,36 @@ public class IcDangerousChemicalsAddEditFormDTO implements Serializable { public interface Del extends CustomerClientShowGroup { } + public interface LingShanAddGroup extends CustomerClientShowGroup { + } + + public interface LingShanEditGroup extends CustomerClientShowGroup { + } + + /** + * 灵山:所属网格 + */ + @NotBlank(message = "所属网格不能为空", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) + private String gridId; + /** * 场所Id */ - @NotBlank(message = "场所Id不能为空", groups = {UpdateGroup.class, Del.class}) + @NotBlank(message = "企业Id不能为空", groups = {LingShanEditGroup.class, Del.class}) private String icDangerousChemicalsId; /** * 企业名称 */ - @NotBlank(message = "企业名称不能为空", groups = {AddGroup.class}) - @Length(max = 50, message = "场所名称不能超过50位", groups = AddGroup.class) + @NotBlank(message = "企业名称不能为空", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) + @Length(max = 35, message = "企业名称最多输入35字", groups = LingShanAddGroup.class) private String name; + /** * 企业类型值 */ - @NotBlank(message = "企业类型不能为空", groups = {AddGroup.class}) + @NotBlank(message = "企业类型不能为空", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) private String category; + /** * 周边安全距离 */ @@ -46,36 +59,70 @@ public class IcDangerousChemicalsAddEditFormDTO implements Serializable { */ private String dangerType; /** - * 负责人 + * 负责人姓名;灵山项目中此列叫联系人 */ private String principalName; + /** - * 联系电话 + * 负责人电话;灵山项目中此列叫联系电话 */ private String principalMobile; + /** * 经度 */ - @NotBlank(message = "经度不能为空", groups = {AddGroup.class}) + @NotBlank(message = "请完善经度信息", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) private String longitude; /** * 维度 */ - @NotBlank(message = "维度不能为空", groups = {AddGroup.class}) + @NotBlank(message = "请完善纬度信息", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) private String latitude; + /** - * 地址 + * 经营地址;灵山项目中此列叫企业地址 */ - @NotBlank(message = "地址不能为空", groups = {AddGroup.class}) - @Length(max = 50, message = "地址不能超过50位", groups = AddGroup.class) + @NotBlank(message = "企业地址不能为空", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) + @Length(max = 200, message = "企业地址最多输入200字", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) private String address; + /** * 备注 */ private String remark; + /** + * 灵山:是否重点安全企业;1是;0不是;必填 + */ + @NotNull(message = "是否重点安全企业不能为空", groups = {LingShanAddGroup.class, LingShanEditGroup.class}) + private Boolean securityFlag; + + /** + * 灵山:安全负责人姓名 + */ + private String securityPrincipalName; + + /** + * 灵山:手机号 + */ + private String securityPrincipalMobile; + + /** + * 灵山:包企领导 + */ + private String bqLd; + + /** + * 灵山:包企干部 + */ + private String bqGb; + + /** + * 灵山:企业介绍 + */ + private String companyProfile; + private String customerId; private String userId; - } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java index b0b7e589f4..3c03625cd8 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcDangerousChemicalsListFormDTO.java @@ -1,5 +1,6 @@ package com.epmet.dto.form; +import com.epmet.commons.tools.dto.form.PageFormDTO; import lombok.Data; import java.io.Serializable; @@ -9,34 +10,67 @@ import java.io.Serializable; * @Author sun */ @Data -public class IcDangerousChemicalsListFormDTO implements Serializable { +public class IcDangerousChemicalsListFormDTO extends PageFormDTO implements Serializable { private static final long serialVersionUID = 9156247659994638103L; /** - * 场所名称 + * 组织或者网格id + */ + private String orgId; + /** + * 组织:agency + * 网格:grid + */ + private String orgType; + + /** + * 灵山:GRID_ID的全路径;包含grid_id + * 接口内部赋值,用于sql + */ + private String orgIdPath; + + /** + * 企业名称 */ private String name; + /** - * 场所分类,字典表值 + * 企业类型,字典表值 */ private String category; + /** * 危化品种类字典值 + * 灵山界面暂无此列 */ private String dangerType; + /** - * 页码 + * 企业地址 + * 经营地址;灵山项目中此列叫企业地址 */ - private Integer pageNo = 1; + private String address; + + /** + * 联系人 + * 负责人姓名;灵山项目中此列叫联系人 + */ + private String principalName; + /** - * 每页显示数量 + * 灵山:安全负责人姓名 */ - private Integer pageSize = 20; + private String securityPrincipalName; - private Boolean isPage = true; private String icDangerousChemicalsId; + + /** + * tokenDto.customerId + */ private String customerId; + /** + * tokenDto.userId + */ private String staffId; - private String agencyId; } diff --git a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcDangerousChemicalsListResultDTO.java b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcDangerousChemicalsListResultDTO.java index bf00d9205e..5d11141ab9 100644 --- a/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcDangerousChemicalsListResultDTO.java +++ b/epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcDangerousChemicalsListResultDTO.java @@ -16,6 +16,14 @@ public class IcDangerousChemicalsListResultDTO implements Serializable { * 企业Id */ private String icDangerousChemicalsId; + /** + * 灵山:所属网格 + */ + private String gridId; + /** + * xxx社区-网格名称 + */ + private String gridName; /** * 组织Id */ @@ -53,13 +61,15 @@ public class IcDangerousChemicalsListResultDTO implements Serializable { */ private String dangerTypeName; /** - * 负责人 + * 负责人姓名;灵山项目中此列叫联系人 */ private String principalName; + /** - * 联系电话 + * 负责人电话;灵山项目中此列叫联系电话 */ private String principalMobile; + /** * 经度 */ @@ -69,7 +79,7 @@ public class IcDangerousChemicalsListResultDTO implements Serializable { */ private String latitude; /** - * 地址 + * 经营地址;灵山项目中此列叫企业地址 */ private String address; /** @@ -77,4 +87,33 @@ public class IcDangerousChemicalsListResultDTO implements Serializable { */ private String remark; + /** + * 灵山:是否重点安全企业;1是;0不是;必填 + */ + private Boolean securityFlag; + + /** + * 灵山:安全负责人姓名 + */ + private String securityPrincipalName; + + /** + * 灵山:手机号 + */ + private String securityPrincipalMobile; + + /** + * 灵山:包企领导 + */ + private String bqLd; + + /** + * 灵山:包企干部 + */ + private String bqGb; + + /** + * 灵山:企业介绍 + */ + private String companyProfile; } diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java index d69c856fb1..522bd55c3a 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java @@ -10,7 +10,6 @@ import com.alibaba.fastjson.JSON; import com.epmet.commons.tools.annotation.LoginUser; import com.epmet.commons.tools.aop.NoRepeatSubmit; import com.epmet.commons.tools.constant.NumConstant; -import com.epmet.commons.tools.constant.ServiceConstant; import com.epmet.commons.tools.exception.EpmetErrorCode; import com.epmet.commons.tools.exception.EpmetException; import com.epmet.commons.tools.exception.ExceptionUtils; @@ -19,9 +18,6 @@ import com.epmet.commons.tools.security.dto.TokenDto; import com.epmet.commons.tools.utils.*; import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter; import com.epmet.commons.tools.validator.ValidatorUtils; -import com.epmet.commons.tools.validator.group.AddGroup; -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.IcDangerousChemicalsDTO; import com.epmet.dto.form.IcDangerousChemicalsAddEditFormDTO; @@ -32,7 +28,6 @@ import com.epmet.dto.result.ImportTaskCommonResultDTO; import com.epmet.excel.IcDangerousChemicalsExcel; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.service.IcDangerousChemicalsService; -import com.epmet.utils.ImportTaskUtils; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.io.IOUtils; @@ -72,6 +67,12 @@ public class IcDangerousChemicalsController { @Autowired private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient; + /** + * 重点危化品企业 列表分页 + * @param tokenDto + * @param formDTO + * @return + */ @RequestMapping("list") public Result> list(@LoginUser TokenDto tokenDto, @RequestBody IcDangerousChemicalsListFormDTO formDTO) { formDTO.setCustomerId(tokenDto.getCustomerId()); @@ -85,26 +86,44 @@ public class IcDangerousChemicalsController { return new Result().ok(data); } + /** + * 重点危化品企业 新增 + * @param tokenDto + * @param dto + * @return + */ @NoRepeatSubmit @PostMapping("add") public Result save(@LoginUser TokenDto tokenDto, @RequestBody IcDangerousChemicalsAddEditFormDTO dto) { - ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class); + ValidatorUtils.validateEntity(dto, IcDangerousChemicalsAddEditFormDTO.LingShanAddGroup.class); dto.setCustomerId(tokenDto.getCustomerId()); dto.setUserId(tokenDto.getUserId()); icDangerousChemicalsService.save(dto); return new Result(); } + /** + * 重点危化品企业 编辑 + * @param tokenDto + * @param formDTO + * @return + */ @NoRepeatSubmit @PostMapping("edit") public Result update(@LoginUser TokenDto tokenDto, @RequestBody IcDangerousChemicalsAddEditFormDTO formDTO) { - ValidatorUtils.validateEntity(formDTO, UpdateGroup.class, DefaultGroup.class); + ValidatorUtils.validateEntity(formDTO, IcDangerousChemicalsAddEditFormDTO.LingShanEditGroup.class); formDTO.setCustomerId(tokenDto.getCustomerId()); formDTO.setUserId(tokenDto.getUserId()); icDangerousChemicalsService.update(formDTO); return new Result(); } + /** + * 重点危化品企业 删除 + * @param tokenDto + * @param formDTO + * @return + */ @PostMapping("del") public Result delete(@LoginUser TokenDto tokenDto, @RequestBody IcDangerousChemicalsAddEditFormDTO formDTO) { ValidatorUtils.validateEntity(formDTO, IcDangerousChemicalsAddEditFormDTO.Del.class); @@ -114,11 +133,21 @@ public class IcDangerousChemicalsController { return new Result(); } + /** + * 重点危化品企业 查看详情 + * @param formDTO + * @return + */ @RequestMapping("detail") public Result detail(@RequestBody IcDangerousChemicalsListFormDTO formDTO) { return new Result().ok(icDangerousChemicalsService.detail(formDTO)); } + /** + * 重点危化品企业 下载导入模板 + * @param response + * @throws IOException + */ @RequestMapping(value = "download", method = {RequestMethod.GET, RequestMethod.POST}) public void downloadTemplate(HttpServletResponse response) throws IOException { response.setCharacterEncoding("UTF-8"); @@ -137,6 +166,13 @@ public class IcDangerousChemicalsController { } } + /** + * 重点危化品企业 导出 + * @param tokenDto + * @param formDTO + * @param response + * @throws IOException + */ @PostMapping("export") public void export(@LoginUser TokenDto tokenDto, @RequestBody IcDangerousChemicalsListFormDTO formDTO, HttpServletResponse response) throws IOException { formDTO.setCustomerId(tokenDto.getCustomerId()); diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcDangerousChemicalsDao.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcDangerousChemicalsDao.java index 83adfa87b8..1cc152c5f5 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcDangerousChemicalsDao.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcDangerousChemicalsDao.java @@ -20,9 +20,8 @@ public interface IcDangerousChemicalsDao extends BaseDao selectDangerousChemicalsList(IcDangerousChemicalsListFormDTO formDTO); - void del(IcDangerousChemicalsEntity entity); + void del(@Param("id") String id,@Param("updatedBy") String updatedBy); void importInsert(@Param("entityList") List entityList); - void delByAgencyAndName(IcDangerousChemicalsEntity entity); } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java index 413cba21d6..edf0054d58 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcDangerousChemicalsEntity.java @@ -24,6 +24,11 @@ public class IcDangerousChemicalsEntity extends BaseEpmetEntity { */ private String customerId; + /** + * 灵山:所属网格 + */ + private String gridId; + /** * 所属组织机构Id */ @@ -34,6 +39,11 @@ public class IcDangerousChemicalsEntity extends BaseEpmetEntity { */ private String agencyIdPath; + /** + * 灵山:GRID_ID的全路径;包含grid_id + */ + private String orgIdPath; + /** * 来源【新增:add 导入:import 】 */ @@ -59,19 +69,19 @@ public class IcDangerousChemicalsEntity extends BaseEpmetEntity { */ private String dangerType; - /** - * 负责人姓名 - */ + /** + * 负责人姓名;灵山项目中此列叫联系人 + */ private String principalName; - /** - * 负责人电话 - */ + /** + * 负责人电话;灵山项目中此列叫联系电话 + */ private String principalMobile; - /** - * 经营地址 - */ + /** + * 经营地址;灵山项目中此列叫企业地址 + */ private String address; /** @@ -89,6 +99,36 @@ public class IcDangerousChemicalsEntity extends BaseEpmetEntity { */ private String remark; + /** + * 灵山:是否重点安全企业;1是;0不是;必填 + */ + private Boolean securityFlag; + + /** + * 灵山:安全负责人姓名 + */ + private String securityPrincipalName; + + /** + * 灵山:手机号 + */ + private String securityPrincipalMobile; + + /** + * 灵山:包企领导 + */ + private String bqLd; + + /** + * 灵山:包企干部 + */ + private String bqGb; + + /** + * 灵山:企业介绍 + */ + private String companyProfile; + @TableField(exist = false) private String dangerTypeName; diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java index c62bad0456..e8fa1a32ed 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcDangerousChemicalsServiceImpl.java @@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.epmet.commons.mybatis.service.impl.BaseServiceImpl; import com.epmet.commons.tools.constant.FieldConstant; import com.epmet.commons.tools.constant.NumConstant; +import com.epmet.commons.tools.constant.StrConstant; import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult; import com.epmet.commons.tools.enums.DictTypeEnum; +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; @@ -16,27 +18,27 @@ import com.epmet.commons.tools.redis.common.CustomerOrgRedis; import com.epmet.commons.tools.redis.common.CustomerStaffRedis; import com.epmet.commons.tools.redis.common.bean.AgencyInfoCache; import com.epmet.commons.tools.security.dto.TokenDto; -import com.epmet.commons.tools.utils.ConvertUtils; -import com.epmet.commons.tools.utils.FileUtils; -import com.epmet.commons.tools.utils.Result; +import com.epmet.commons.tools.utils.*; import com.epmet.constants.ImportTaskConstants; import com.epmet.dao.IcDangerousChemicalsDao; +import com.epmet.dto.CustomerAgencyDTO; +import com.epmet.dto.CustomerGridDTO; import com.epmet.dto.IcDangerousChemicalsDTO; import com.epmet.dto.form.IcDangerousChemicalsAddEditFormDTO; import com.epmet.dto.form.IcDangerousChemicalsListFormDTO; import com.epmet.dto.form.ImportTaskCommonFormDTO; -import com.epmet.dto.result.IcCityManagementListResultDTO; import com.epmet.dto.result.IcCoverageCategoryDictListResultDTO; import com.epmet.dto.result.IcDangerousChemicalsListResultDTO; import com.epmet.dto.result.UploadImgResultDTO; import com.epmet.entity.IcDangerousChemicalsEntity; -import com.epmet.entity.IcSuperiorResourceEntity; import com.epmet.feign.EpmetAdminOpenFeignClient; import com.epmet.feign.EpmetCommonServiceOpenFeignClient; import com.epmet.feign.OssFeignClient; import com.epmet.model.DangerousChemicalsImportListener; import com.epmet.model.DangerousChemicalsModel; import com.epmet.service.CoverageService; +import com.epmet.service.CustomerAgencyService; +import com.epmet.service.CustomerGridService; import com.epmet.service.IcDangerousChemicalsService; import com.epmet.utils.ImportTaskUtils; import com.github.pagehelper.PageHelper; @@ -88,12 +90,20 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl list(IcDangerousChemicalsListFormDTO formDTO) { - CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); - if (null == staffInfo) { - throw new EpmetException("获取工作人员信息失败"); + if(StringUtils.isBlank(formDTO.getOrgId())||StringUtils.isBlank(formDTO.getOrgType())){ + CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getStaffId()); + if (null == staffInfo) { + throw new EpmetException("获取工作人员信息失败"); + } + //查询当前组织及下级数据 + formDTO.setOrgId(staffInfo.getAgencyId()); + formDTO.setOrgType(OrgTypeEnum.AGENCY.getCode()); + } + if(OrgTypeEnum.AGENCY.getCode().equals(formDTO.getOrgType())){ + CustomerAgencyDTO agencyDTO=SpringContextUtils.getBean(CustomerAgencyService.class).get(formDTO.getOrgId()); + formDTO.setOrgIdPath(PidUtils.convertPid2OrgIdPath(agencyDTO.getId(),agencyDTO.getPids())); } - //查询当前组织及下级数据 - formDTO.setAgencyId(staffInfo.getAgencyId()); + //列表/导出查询 PageHelper.startPage(formDTO.getPageNo(), formDTO.getPageSize(), formDTO.getIsPage()); List list = baseDao.selectDangerousChemicalsList(formDTO); @@ -138,60 +148,56 @@ public class IcDangerousChemicalsServiceImpl extends BaseServiceImpl tWrapper = new LambdaQueryWrapper<>(); - tWrapper.eq(IcDangerousChemicalsEntity::getAgencyId, staffInfo.getAgencyId()); - tWrapper.eq(IcDangerousChemicalsEntity::getName, formDTO.getName()); - List entityList = baseDao.selectList(tWrapper); - if (!CollectionUtils.isEmpty(entityList)) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "当前组织下已存在相同名称的场所"); - } + //1.获取网格信息 + CustomerGridDTO customerGridDTO=SpringContextUtils.getBean(CustomerGridService.class).get(formDTO.getGridId()); + // 2.同一网格下,企业名称唯一 + checkNameUnqiue(formDTO.getGridId(),formDTO.getName(), StrConstant.EPMETY_STR,customerGridDTO.getGridName()); //3.新增服务组织数据 IcDangerousChemicalsEntity entity = ConvertUtils.sourceToTarget(formDTO, IcDangerousChemicalsEntity.class); entity.setSourceType("add"); - entity.setAgencyId(staffInfo.getAgencyId()); - entity.setAgencyIdPath(StringUtils.isEmpty(staffInfo.getAgencyPIds()) ? staffInfo.getAgencyId() : staffInfo.getAgencyPIds() + ":" + staffInfo.getAgencyId()); + entity.setAgencyId(customerGridDTO.getPid()); + entity.setAgencyIdPath(customerGridDTO.getPids()); + entity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(customerGridDTO.getId(),customerGridDTO.getPids())); insert(entity); } + /** + * 同一网格下,企业名称唯一 + * @param gridId + * @param name + * @param icDangerousChemicalsId + */ + private void checkNameUnqiue(String gridId, String name, String icDangerousChemicalsId,String gridName) { + LambdaQueryWrapper tWrapper = new LambdaQueryWrapper<>(); + tWrapper.eq(IcDangerousChemicalsEntity::getGridId, gridId); + tWrapper.eq(IcDangerousChemicalsEntity::getName, name) + .ne(StringUtils.isNotBlank(icDangerousChemicalsId),IcDangerousChemicalsEntity::getId,icDangerousChemicalsId); + if (baseDao.selectCount(tWrapper) > NumConstant.ZERO) { + String msg = String.format("%下已存在%s", gridName, name); + throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), msg, msg); + } + } + @Override @Transactional(rollbackFor = Exception.class) public void update(IcDangerousChemicalsAddEditFormDTO formDTO) { - //1.获取当前工作人员缓存信息 - CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId()); - if (null == staffInfo) { - throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId())); - } - //2.校验同组织下服务组织名称不能重复 - LambdaQueryWrapper tWrapper = new LambdaQueryWrapper<>(); - tWrapper.eq(IcDangerousChemicalsEntity::getAgencyId, staffInfo.getAgencyId()); - tWrapper.ne(IcDangerousChemicalsEntity::getId, formDTO.getIcDangerousChemicalsId()); - tWrapper.eq(IcDangerousChemicalsEntity::getName, formDTO.getName()); - List entityList = baseDao.selectList(tWrapper); - if (!CollectionUtils.isEmpty(entityList)) { - throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "当前组织下已存在相同名称的服务组织"); - } + //1.获取网格信息 + CustomerGridDTO customerGridDTO=SpringContextUtils.getBean(CustomerGridService.class).get(formDTO.getGridId()); + // 2.同一网格下,企业名称唯一 + checkNameUnqiue(formDTO.getGridId(),formDTO.getName(), formDTO.getIcDangerousChemicalsId(),customerGridDTO.getGridName()); //3.更新服务组织数据 IcDangerousChemicalsEntity entity = ConvertUtils.sourceToTarget(formDTO, IcDangerousChemicalsEntity.class); entity.setId(formDTO.getIcDangerousChemicalsId()); + entity.setAgencyId(customerGridDTO.getPid()); + entity.setAgencyIdPath(customerGridDTO.getPids()); + entity.setOrgIdPath(PidUtils.convertPid2OrgIdPath(customerGridDTO.getId(),customerGridDTO.getPids())); updateById(entity); } @Override @Transactional(rollbackFor = Exception.class) public void delete(IcDangerousChemicalsAddEditFormDTO formDTO) { - IcDangerousChemicalsEntity entity = baseDao.selectById(formDTO.getIcDangerousChemicalsId()); - //先删除本组织先可能存在的名称相同的已经是无效的历史数据,为了表中的唯一索引不失效 - baseDao.delByAgencyAndName(entity); - //再把当前数据置为无效数据 - entity.setId(formDTO.getIcDangerousChemicalsId()); - entity.setUpdatedBy(formDTO.getUserId()); - baseDao.del(entity); + baseDao.del(formDTO.getIcDangerousChemicalsId(),formDTO.getUserId()); } @Override diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcDangerousChemicalsDao.xml b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcDangerousChemicalsDao.xml index 99d3138558..4a37272196 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcDangerousChemicalsDao.xml +++ b/epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcDangerousChemicalsDao.xml @@ -67,48 +67,75 @@ updated_time = NOW() - SELECT - id icDangerousChemicalsId, - agency_id agencyId, - source_type sourceType, - `name` name, - category category, - safe_distance safeDistance, - CONCAT(safe_distance,'公里') safeDistanceName, - danger_type dangerType, - principal_name principalName, - principal_mobile principalMobile, - address address, - longitude longitude, - latitude latitude, - remark remark + dc.id icDangerousChemicalsId, + dc.grid_id gridId, + concat(ORGANIZATION_NAME,'-',cg.GRID_NAME)as gridName, + dc.agency_id agencyId, + dc.source_type sourceType, + dc.`name` name, + dc.category category, + dc.safe_distance safeDistance, + CONCAT(dc.safe_distance,'公里') safeDistanceName, + dc.danger_type dangerType, + dc.principal_name principalName, + dc.principal_mobile principalMobile, + dc.address address, + dc.longitude longitude, + dc.latitude latitude, + dc.remark remark, + dc.SECURITY_FLAG securityFlag, + dc.SECURITY_PRINCIPAL_NAME securityPrincipalName, + dc.BQ_LD bqLd, + dc.BQ_GB bqGb, + dc.COMPANY_PROFILE companyProfile FROM - ic_dangerous_chemicals + ic_dangerous_chemicals dc + left join customer_grid cg + on(dc.grid_id=cg.id) + left join customer_agency ca + on(cg.pid=ca.id) WHERE - del_flag = '0' + dc.del_flag = '0' - AND id = #{icDangerousChemicalsId} + AND dc.id = #{icDangerousChemicalsId} - AND customer_id = #{customerId} + AND dc.customer_id = #{customerId} - - AND agency_id_path LIKE CONCAT('%',#{agencyId},'%') + + + AND dc.org_id_path like concat(#{orgIdPath},'%') + + + + + AND dc.grid_id=#{orgId} + - AND name LIKE CONCAT('%', #{name}, '%') + AND dc.name LIKE CONCAT('%', #{name}, '%') - AND category = #{category} + AND dc.category = #{category} - AND danger_type = #{dangerType} + AND dc.danger_type = #{dangerType} + + + AND dc.ADDRESS LIKE CONCAT('%',#{address},'%') + + + AND dc.PRINCIPAL_NAME LIKE CONCAT('%',#{principalName},'%') + + + AND dc.SECURITY_PRINCIPAL_NAME LIKE CONCAT('%',#{securityPrincipalName},'%') - ORDER BY created_time DESC + ORDER BY dc.created_time DESC - + UPDATE ic_dangerous_chemicals SET del_flag = '1', updated_by = #{updatedBy}, @@ -118,14 +145,5 @@ AND del_flag = '0' - - DELETE - FROM - ic_dangerous_chemicals - WHERE - del_flag != '0' - AND agency_id = #{agencyId} - AND `name` = #{name} - \ No newline at end of file From 9f1833d9bb33e6aea3225aa5a29522296f2389da Mon Sep 17 00:00:00 2001 From: yinzuomei <576302893@qq.com> Date: Sun, 23 Apr 2023 15:13:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E7=81=B5=E5=B1=B1=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E6=A1=A3=E6=A1=88=3D=E5=8E=9F=E4=BA=A7=E5=93=81=E9=87=8D?= =?UTF-8?q?=E7=82=B9=E5=8D=B1=E5=8C=96=E5=93=81=E4=BC=81=E4=B8=9A=EF=BC=9B?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=EF=BC=8C=E5=AF=BC=E5=85=A5=E6=A8=A1=E6=9D=BF?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IcDangerousChemicalsController.java | 9 +++-- .../excel/IcDangerousChemicalsExcel.java | 32 +++++++++++------- ...lingshan_dangerous_chemicals_template.xlsx | Bin 0 -> 9288 bytes 3 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 epmet-module/gov-org/gov-org-server/src/main/resources/excel/lingshan_dangerous_chemicals_template.xlsx diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java index 522bd55c3a..1c8bcfadf1 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/IcDangerousChemicalsController.java @@ -153,9 +153,11 @@ public class IcDangerousChemicalsController { response.setCharacterEncoding("UTF-8"); response.addHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "Content-Disposition"); response.setHeader(HttpHeaders.CONTENT_TYPE, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("重点危化管理导入模板", "UTF-8") + ".xlsx"); + // response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("重点危化管理导入模板", "UTF-8") + ".xlsx"); + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode("企业档案导入模板", "UTF-8") + ".xlsx"); - InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/dangerous_chemicals_template.xlsx"); + // InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/dangerous_chemicals_template.xlsx"); + InputStream is = this.getClass().getClassLoader().getResourceAsStream("excel/lingshan_dangerous_chemicals_template.xlsx"); try { ServletOutputStream os = response.getOutputStream(); IOUtils.copy(is, os); @@ -182,7 +184,8 @@ public class IcDangerousChemicalsController { formDTO.setPageNo(NumConstant.ONE); formDTO.setPageSize(NumConstant.TEN_THOUSAND); try { - String fileName = "重点危化管理" + DateUtils.format(new Date()) + ".xlsx"; + // String fileName = "重点危化管理" + DateUtils.format(new Date()) + ".xlsx"; + String fileName = "企业档案" + DateUtils.format(new Date()) + ".xlsx"; // 头的策略 WriteCellStyle headWriteCellStyle = new WriteCellStyle(); // 背景设置为红色 diff --git a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java index d7b612e504..a6db250b8f 100644 --- a/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java +++ b/epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/excel/IcDangerousChemicalsExcel.java @@ -13,27 +13,31 @@ import lombok.Data; @Data public class IcDangerousChemicalsExcel { + @ExcelProperty(value = "所属组织") + @ColumnWidth(25) + private String gridName; + @ExcelProperty(value = "企业名称") @ColumnWidth(25) private String name; - @ExcelProperty(value = "企业类型") + @ExcelProperty(value = "企业类别") @ColumnWidth(20) private String categoryName; - @ExcelProperty(value = "周边安全距离") - @ColumnWidth(20) - private String safeDistanceName; + // @ExcelProperty(value = "周边安全距离") + // @ColumnWidth(20) + // private String safeDistanceName; + // + // @ExcelProperty(value = "危化品种类") + // @ColumnWidth(20) + // private String dangerTypeName; - @ExcelProperty(value = "危化品种类") - @ColumnWidth(20) - private String dangerTypeName; - - @ExcelProperty(value = "经营地址") + @ExcelProperty(value = "企业地址") @ColumnWidth(25) private String address; - @ExcelProperty(value = "负责人") + @ExcelProperty(value = "联系人") @ColumnWidth(20) private String principalName; @@ -41,8 +45,12 @@ public class IcDangerousChemicalsExcel { @ColumnWidth(20) private String principalMobile; - @ExcelProperty(value = "备注") + @ExcelProperty(value = "安全负责人") + @ColumnWidth(25) + private String securityPrincipalName; + + @ExcelProperty(value = "安全负责电话人") @ColumnWidth(25) - private String remark; + private String securityPrincipalMobile; } \ No newline at end of file diff --git a/epmet-module/gov-org/gov-org-server/src/main/resources/excel/lingshan_dangerous_chemicals_template.xlsx b/epmet-module/gov-org/gov-org-server/src/main/resources/excel/lingshan_dangerous_chemicals_template.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2b2490aeb4fa50475abe9ef147a4296ee42a21ce GIT binary patch literal 9288 zcmaJ{1z1$w)}|YzrG^~3TRKFfrKG#02Zu(Hl&+y01?iNOP6-j|4(T4cCH~>_-s`9L z`|p09IcMg~inHH!_B!iX?^abrM8bf(AHgcilK1C-4|LcU3y`@g806&4sR|P#gk3=U zORQ0Fx||Ch4vr524i5M4Vx~?`93Bq#8IX1bL~g<-=l*xNl^|YrT6G>~{}2&WJy!rP zXr@gGKXzm2ik-uS<^t961f+S5#Y-?$_zCQ8ytmeJjFtsTO|4!GsAb5Hdnt=fVyWn$ zCDg2w85PBZ&ZNw2XGfi{kLJR0cJ8rMiWp6X5K6?b>JqtW6@gq6BpdXyTG@qVhdlJ< z39D7H0_&rX+j;N-_NkV^SOREyf#B5^OdH$unv3rvBSlf11{`%92$*kn4N4QbJaRv= z5U(CDZLQqCty&V1K%Aa8l!FE=vVYT4wH8Ca5-<|aUDZR`By*loD9>%5n)^I5v@?Tz zvV3!S2tDQCSYo@{DoyI#RNX=3-a=H{MQQZ!!izNQ$n7TU@O&;8?F08Ls7>r~hw`Iv zez?4h$1S(ZpSH9Ge_T2qBL9x=25;cFE(~207`k|WN7oz#w!DYeJNBbWCl_vzJ8*&K zD051_h*(#i1%6wG9_TM=pXlvChtF7vZ6j#p3xPz|6O;!oay!Ked_bV_JiKXb{jtAl z-M|6fz>EK;KuY(Wt{1*f5z=QFQ8t?L%Adj^nUIZ>zRMbsOgU~PCqz3w34`Ogt{)Gn zbx-Vvyr!_>FUetMC6^c&d15;;S_bh&Cf!Ek_}UTQtLPVfW4JlmxZ1Hgv4={%XlH1U z_aWl}U-W$!Nx)2!WRc#3JrYKUMMFN~)(L)9yPtle88fL6^AJlDc=B|H&>x$;k$Tk`I(G|s)Il>ufw|AbU0Sm7Q^M7xVLDl z%tf8qONXl{^p207)=6*5=K^1BY+=#Eqa!3m82ZGrX_cd$94b?tGc@)UUJf|;G z$|dlcv%A~Fk$pZ-!^^&e{1m6SY^T0}FzYD|yH#Ld@?dunp0e>HkM&ZVv+`c8!?=uT zaZ1MgH2SOqx=q>HI_B5K{*^@t_|#fG^x1*LOlK?fw0JZnCTk4ecHGhOG?JyL(}th7 zGS@}9Rur3hacjMxnH_sBlk%+dHC~*sRruUsQs9`H?nBpGr5hxl9)j1y7x^(hcn#j4 zoW*8SX3h43-B?c^NXQ}tF`dq7h&52Zxk$qnH{7}I-$lHK_Mh_%A`Ds&`@b^GKMUae z6mSQD?VPPGEnWW1Mx4beH=!^qRcLTyG*mkRfNuoAQsK`R2dEe|(+a6LAeAu_WN zsu}?BaD8|luDw=yFhXWlhDnWPi%Dp&RL9=e@C2T1=rN}l5%P#pSnXzO;cV+L&1uDR zWR>lJVA|G{%k_3hP@^EXds(5T5|A#?kV=RT{Yh8sG@AGA^pe{HA%!>~tpU&_(6Lau zapi#oiIucbkx=doJZ31_`}&Ekwqwml`P^z{ayAHz8Z_qFOKRUl6BHC^iwT{}*M9gt zBuIQW*C8qXIVf30SB{a^po?#~9#39qxXpM#w@ATGa5!%FNvs8~UEhnyWuQdi?vhG? z@mFc)_+(o_!jDNBcCypwS2d4TDoi*1EI!K^af~={rAs?KjNtXQ>tsh)Yp#s5Oi9cA zf*t4oSmS13|y#qXT?5EjoW=9%}qCo^S`8w)RA*ZUAQa(Z?2!8^BDh zP@IZPzD4_~-=cAa+~CuKjkBvq1#b*BrH#UNlPjkU5bJ6i&0h!l2S{DGn^`rG3vt)? z6>fApExNhK5X|fn;;=O;+=3tp}GYM zS0{o%mOQhC18-JV+=Pk$jS48A+?Ve7jiHl&50xQ%;H}5y)sI%6OK29=cTmds&7_;_ z`SH;}U4OX|`+m#i&R`=uTwC7}G^t!2kcb;J)U7THsJ!We~X_ZZm9w z>+Ci|EOzL4Xi;m$ml@pfWfa0F3JqQ*ygWP>JAW(Gk;`z;nwp+R8kcz3y8j60W{Duq*JvESIXkyCQqTwJA-=-h{Gt(M{H31affQAvOvCzjns{UbJ_*%?^{|rr&bG zHgw>tYYZPxj6u&qRq<$4qpGgO*ia)`r_&{@BV3cetvXj zmiX1$$>GZAQ;Cfhwob%&*}SFV{nm>gv(K7aGriBZ`?MXKxDH$IPNqSvZ?;f6#PxW* zE>A}#G9|n(2R3|e54zyLuUOl6JO#FQG=@HF5@GYJ*=n2mdYIgr@|j7tt5TBt!tK*u z{}jSPI^A{$)Lg{l{E=J;ria5>+p=)Pr4oM6SHa~j1WIn%b5eJd#h}#wkOS*P*}cBY zuU+#}n^XMm4|BC_e^g;r$9*zzGq)dZQdVP83)El}JB?80b}QKvr_nNqmTOBfA=sK{ zTo9-I78B7s#quF{7+#*5)A^y4Tn$lL&Z`CSoU-TV2OlE?vHc1HuF*7DBPNHGvb)y6 zf%vv4*SLLCPr#2h{6cpy(Nm(hER7_(q(9j^zSJp)oRCvf?Nw6^dz#VJ12vKcA9p2( z?tZipl$Braz>z0Qn~MHSs6gmhm*UbMo!tC*%)J*;K``$JWxH0xAhCbryL5(JOTPj} z-o4&6{;wrhfNxt!rlma8yNO1OKrxM`W736wx1R4SUG<(gT3ucQdlF2;Vtk4q^C_Yo z_U&frR&DD$pYox!v!mI`wOqmgh2l<=H_H$H>w zLZxDaq677u0$ACeP9H*N`A9u)HG!L}g~%?*myCv)Z0V6Y_5@bZ zxN?6P#CdAUbx=SZ!YkuE&CC8=&2Y5TYyvA>paQ=?oZmBGoVII-V*n>h@w{lY_Mu)K zScRz(38^U}D`zJ&hlXSs8*f2IzC20McY{xcq59Kw>7(t7 zZ-phMO10Rrl!-SK05&(BZ!a+s$tB;y20j)%m?d(p(o&;nB|kB^duMpLr)-z=TrCI!J-6pP z$Z%WhBGoE$@Hu7G@7(NicBBwi`5;MfTVW^^k)2aKzFqNZ6Ki+L%4zlDKv@C})eR|s zNy^oOP}mI=5{P2-ym*{!+z)z{0A=^#t3Vl6-9n+0u+@%Ojg@ZktU`S_9wx1~gCxea zmUx7{_C>JVpm1J&L9$0;YH_gTHb)J&`Ju4d6kmKH;YT0`2CR!%AiqS3&d zcGE;XXWv@`+080h)zY*Y(z_|-_osG~#3D9dYb9Q=$#Ob+@9A&9*gnUMC>+^z1f3#g zA?s?;eA)bRHgN!0tA)bfX%fD7Ttt444fj0b^Wf)S%EII|!X1mZ1@R2jC-!|&wwjZ>s&(&`jw_gSCoF=3Ie4Vzw zF!^7aC5#s0Wk&}F#Z!ckCAy|CSuxrBbxh=Xeac#OXZO6nYP8pTrPr z@dP8ig*-TYq=5V!nBsXZWt~+(_6=}}6y&#Y7DI#zXrTz;;Q_0K8qJO=kJ?Y{ls4Gf z2HDc;pKT44eRqxm6ikzUVk-u#tnxq7mvHpDBqRU2!r(EdPF||j&*$PgeHB+(J<5$K zopfA-(~|1dZ*RQ_#wK_Xs>5rXmeFjM+;yqP7Dr&rUOdX&Jt@56^s!|`?Oi>~4fjMU zvX5eS>UM+CQy;~NColO)%Ra9&6!}a$s>_K)irH=1(By^H)R_~Hv70)uQz~iWw^&A- z#M2uLRL}|%B!>gWV~t`rjYIDY&R~Z~vslwACjR0`2EoKKV5*0wWoRxnl+VD?0Fox3 ztgX&NqjK2z?!BH@FQH zmPq;cf^dS(qW0Z=%tLx!v@sE7#&Vr*g)@r>t*=0s}{Zo(oFGUrF!;= zBOhX`2ak0+?0-OWWowg!!?y{LuVbEEhOdm^2s`p_tkwXxfH12n zc<8Bdk> z38m2|SI+umg4jknEk#RdoJ%h3gUh0NHs;Kbyvi4%s76_Xr8Zj-YxwF+P2OPo9jy$B zH*8UK3cytkn>k9rzmO3ApqMQkzX1(yR1N65?XMw$nn=qob3HbxhY~Mag$JTwc$Kyq zl1g|BdtXzcp5FGJnvjd5v+;?ra@|a>9FAtaX+7)IL7`Z-IH+CGB`rPUw|q?Mb9i~O z@6OmN0+8_Zxb1s7YWyY-&IH)abfolA#YitoFhW%$e~>C-Uo4CscR~q)hD z8@*}PXJY8^rjavqp6YISV}t5VTRoasN?aHDrx)~*N)OeDI>vT9p6=MQuH2=6p2+s{ zoyS@8>ylWQ)4{5Jj}08`a_qtdzwP`gGUge!F!6Fv`Y2AGy>oA&Tn4 z=<|bG;9+?H56v~kfGA6r@?eXokH^_j=Xsv9-ji)P(~Rq5&W-$iMwTbrzSH>D8r%r3 zft4OMk-BAyHr$sNC)aV`StZ3-fa;-5jKVwnCw*Bxt)5iEUsiKk8T@IzH=hN3MM|_* zl##(GRJYHMmO!>qepn`4VVNH35KfL^5M@P z95XjL7GMAeROi`tLgxH(`9f8T_J9Sca!gYpKpPax^3lPSsl{o)F3h$6*TQNV#Jlkn=1T(_7K zp8bGc4oTJJ&Q+@XIFY+Z=;!AG!Ijmh5maJ|dk^J5$fLi0v+;s6Q(PW43mbKeTv|*T z`d$QlQE%)*EA&eAyCr~U3%qhFss_|#AOwgAM^Bv}zvzrU-Fwx1%6u2W~M5j!Z}IDtYQ&MURpYfl~49i~0Nb@!T_-Gfqh zC|9%YUa+4q;F8vw9vx5M8h!VBW=Yrp{nGeKMA_MWa6~|_CSxM#y~rtcRZCT)nxL>q zV`HN3sBK1;r1)bAANNxo{`EHqphdS%6Oxmh0gfgU!jm74lPPz2qE)ut5&@`@1^_Q7 zZMlrx?(Zg(GemoV$~nt=)}e5= zHU(Q+Xt;oF9AErZoH{_BDRfGbd_MPgN2{tMXvBp84bd_sA8=Kh6IffBSo}M#4U7KOVSJ+y=pzbxV3qU*qFU*o}?SUX~Lh6fE-85uKS@R zAOl*O;QEd$N)G)wQ@ik^E-b=`HTp>IvM${Y7ZdQFy<~3~LoHsv8fskfuKJ{`D91dH zMO3(2XbOpQBf@b}1B!zM-aEp=ryg^H4+x`mUQsSw6JSN^26abPs1fCmU%HYm4Dj`0 zW8ZF~V_MZL9_v->AK4^ZEsaZ7Q*Gq4d-CCNVyo>l?p1TDt@S>9F*vQ{5}d8ATvadu z0lneMutJ>nj7DkZQ$z{vt{c9fp(7JWHFam<5GMw2oO*n_ya^>?qma7h;r7g+Iv=gK zsBZ%)w4M%{T#K%d|6cu9)qQMWhG9Gp`#kv7?==H~?C$ITNQm;YPA;sVeYxvkCilcz z{o#TM6=~loWMzbIA-+8_c4Gw|;af44V(zH)^hp)US&-IFoYpGl>zIi#zAVdlUz^ex zE924gI#}bJo(4?!sS?HZ3fr$NZKrtLaw%L>^xb`8b-Lb%YP%CE3_0r!%Rdo5{eGLi>T#Pk9xV&5c2ui^gxHXI5JRb#NF{hyuoSC8D9?qL6YhcP0U|B>Oi zmn@APROsTu?cVp_$6aqxb|=D{cHyMmRkrZ;>CYC3fwHEti7{Rj+L7mc6c07493 zs}J!6i!jI83~yTSv7Z>cP1XpT zTQg{V$(GV%ph6W!|8C$?a&&Z~qa8A=U)?V!97vzNa|h(<=~_+n6z4aV10S&$yZ`@K z{;Q?=PjIdsWRpN)FgC#8B!it{3FD{OJ=O8=$NAsr+QOdc?)`w~fMM^KBaz&)8Ajdj zCQDzznX~#>o1rS|r`2WkzSn){l4O9D71+AZ*grd8zd!bX!PcBh)k25~i{naQ45bBU z{{iQ_5Ql@>aCqzpxeC_({aUIi-9*K)YDDIj=oarxDUE6vCQU%h;fN?(n%t*}PxAC0 zOaL4rz2Y_og>O!M!Apf_3z9QG7*&H`#;o2on?J9?`JVk_kNY42O*v9|Q$ncE1K2Gv z-it!KrW7J&9PDX86x5?)!287;AbuSvniuulUmVeia06!k}}8 zmd+3Qyc$lX5vC?fmW9A&#IdtBzLUgE|AVtkW)lP{zlbz>Vd!P+-E}jTEUR4@z0BCc zc!}|;4!nw2?tFSGRs#%1iS#eQ4MGsqmLbP3zO^GE_`{dOM&|gYR)RDNhBsCN_ zB9RuN(c-f0tL}(S^n9IvYSUNHBH%D5&~4qlt#&UmJ5*1Ko0z*9Ls8(<5tzbTQYEOU z^?B6P$!KAsBpIe6p5{<(iDZHwkcI(UBJ<8dk!lHi!I4vYWwwkESC_>5fGkmWUFqVB zlf4YmX(nxk+^$j&t`w6!TrB^1=Gk5WMR@ZmWCG=OUXoZ$O2wtncLUVw45zz}bkN^( znSXx#t)jD<`Sc40^xNVFyY!5A(bmFg3#7J{t?9V^*j(TmMO6_Vf$*<4+s|D9e?|rt z95{G5YS=N3@*m^$)4)HIeD^8m=eXZc@PqtU0{Y$QpDE~G=ciLDiht|;wPgO6v->sq zbKE<-AAj5E@Vmc1w>sPl|MbWBceQ_QeE1WhKdJm*+HYZx^naZGo7n$T{Z9t^mpV3# z@BF3yA3pkjP5Pc^{W