Browse Source

Merge branch 'dev_resi_export' of http://git.elinkit.com.cn:7070/r/epmet-cloud into dev_import_edit

 Conflicts:
	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java
	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java
	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java
	epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java
	epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
	epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
	epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
	epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
dev
zxc 4 years ago
parent
commit
d19cca0057
  1. 9
      epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.15__add_item_typequery.sql
  2. 44
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/annotation/MaskResponse.java
  3. 36
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/MaskResponseAspect.java
  4. 69
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java
  5. 58
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportTemplateSaveFormDTO.java
  6. 1
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java
  7. 183
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java
  8. 389
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/AuthCodeUtil.java
  9. 122
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java
  10. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/FreezeAndFilter.java
  11. 19
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/ExportGroup.java
  12. 1
      epmet-gateway/pom.xml
  13. 4
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  14. 6
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java
  15. 10
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java
  16. 13
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java
  17. 15
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java
  18. 29
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/HouseChartFormDTO.java
  19. 10
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java
  20. 57
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java
  21. 1
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseListResultDTO.java
  22. 19
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBuildingListResultDTO.java
  23. 74
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java
  24. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/aspect/RequestLogAspect.java
  25. 39
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java
  26. 10
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java
  27. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java
  28. 10
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java
  29. 6
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java
  30. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java
  31. 14
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java
  32. 3
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java
  33. 176
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java
  34. 40
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
  35. 2
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcNeighborHoodServiceImpl.java
  36. 2
      epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.17__edit_building_and_house.sql
  37. BIN
      epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx
  38. BIN
      epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx
  39. 6
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml
  40. 34
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml
  41. 18
      epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml
  42. 60
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcExportTemplateDTO.java
  43. 33
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcFormItemGroupDTO.java
  44. 39
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/EditIFormItemFormDTO.java
  45. 38
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateQueryFormDTO.java
  46. 84
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcFormItemGroupLisFormDTO.java
  47. 23
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResDTO.java
  48. 9
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java
  49. 2
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemResult.java
  50. 69
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java
  51. 67
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java
  52. 4
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/SubTableJoinDTO.java
  53. 19
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/TemplateDetailResultDTO.java
  54. 18
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java
  55. 11
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java
  56. 6
      epmet-module/oper-customize/oper-customize-server/pom.xml
  57. 96
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcExportTemplateController.java
  58. 13
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormController.java
  59. 39
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java
  60. 28
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemGroupController.java
  61. 16
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcExportTemplateConfigDao.java
  62. 38
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcExportTemplateDao.java
  63. 2
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormDao.java
  64. 51
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java
  65. 1
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemOptionsDao.java
  66. 8
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormQueryBuilderDao.java
  67. 56
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcExportTemplateConfigEntity.java
  68. 51
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcExportTemplateEntity.java
  69. 20
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcFormQueryBuilderEntity.java
  70. 21
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcExportTemplateConfigService.java
  71. 104
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcExportTemplateService.java
  72. 17
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemGroupService.java
  73. 29
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java
  74. 38
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateConfigServiceImpl.java
  75. 322
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java
  76. 34
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemGroupServiceImpl.java
  77. 158
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java
  78. 3
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormServiceImpl.java
  79. 13
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.21__addcol_item_build.sql
  80. 8
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.22__update_search_col.sql
  81. 18
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.23__update_group_sort.sql
  82. 6
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.24__add_validtype_forbuild.sql
  83. 48
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.25__add_export_temp.sql
  84. 24
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateConfigDao.xml
  85. 88
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml
  86. 5
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormDao.xml
  87. 129
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml
  88. 7
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemOptionsDao.xml
  89. 21
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormQueryBuilderDao.xml
  90. 8
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcTripReportRecordDTO.java
  91. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVeteransDTO.java
  92. 31
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ExportResiUserFormDTO.java
  93. 17
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java
  94. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java
  95. 9
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SearchByNameFormDTO.java
  96. 10
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiWarnFormDTO.java
  97. 33
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java
  98. 1
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnUserResultDTO.java
  99. 5
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StaffBasicInfoResultDTO.java
  100. 49
      epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserChartResultDTO.java

9
epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.15__add_item_typequery.sql

@ -0,0 +1,9 @@
INSERT INTO `epmet_admin`.`sys_dict_type` (`id`, `dict_type`, `dict_name`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518396655261097986', 'item_type_query', '居民信息组件查询方式', '', 18, 0, 0, '1', '2022-04-25 09:09:08', '1', '2022-04-25 09:09:45');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518420223504064513', 1518396655261097986, 'equal', 'cascader', '0', '级联组件', 8, 0, 0, '1', '2022-04-25 10:42:47', '1', '2022-04-25 10:42:47');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518398370672713730', 1518396655261097986, 'list_equal', 'checkbox', '0', '多选框', 6, 0, 0, '1', '2022-04-25 09:15:57', '1', '2022-04-25 09:15:57');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397686728531969', 1518396655261097986, 'daterange', 'datepicker', '0', '日期', 3, 0, 0, '1', '2022-04-25 09:13:14', '1', '2022-04-25 09:13:14');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518398756393492482', 1518396655261097986, 'daterange', 'daterange', '0', '时间范围组件eg:参战时间', 7, 0, 0, '1', '2022-04-25 09:17:29', '1', '2022-04-25 09:17:29');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397589986910209', 1518396655261097986, 'like', 'input', '0', '文本输入框', 2, 0, 0, '1', '2022-04-25 09:12:51', '1', '2022-04-25 09:12:51');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518398274627346434', 1518396655261097986, 'equal', 'radio', '0', '单选框', 5, 0, 0, '1', '2022-04-25 09:15:34', '1', '2022-04-25 09:15:34');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397514623655938', 1518396655261097986, 'equal', 'select', '0', '下拉框', 1, 0, 0, '1', '2022-04-25 09:12:33', '1', '2022-04-25 09:12:33');
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397787941281794', 1518396655261097986, 'like', 'textarea', '0', '文本域', 4, 0, 0, '1', '2022-04-25 09:13:38', '1', '2022-04-25 09:13:38');

44
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/annotation/MaskResponse.java

@ -0,0 +1,44 @@
package com.epmet.commons.tools.annotation;
import com.epmet.commons.tools.enums.RequirePermissionEnum;
import javassist.runtime.Inner;
import java.lang.annotation.*;
import java.util.function.Function;
/**
* 标记一个接口它的返回值中的某些字段需要打掩码
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MaskResponse {
/**
* 掩码类型
*/
String MASK_TYPE_ID_CARD = "ID_CARD";
String MASK_TYPE_MOBILE = "MOBILE";
///**
// * 默认的一些字段,如果没有手动指定,就会使用默认的。如果手动指定了,就不再使用默认的
// */
//String[] defaultFieldnames = {"idCard","mobile","phone"};
//
///**
// * 默认字段对应的掩码类型
// */
//String[] defaultFieldsMaskType = { MASK_TYPE_ID_CARD, MASK_TYPE_MOBILE, MASK_TYPE_MOBILE };
/**
* 要打码的字段列表会递归的着这些字段
* @return
*/
String[] fieldNames() default {"idCard","mobile","phone"};
/**
* 要打码的类型
* @return
*/
String[] fieldsMaskType() default { MASK_TYPE_ID_CARD, MASK_TYPE_MOBILE, MASK_TYPE_MOBILE };
}

36
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/aspect/MaskResponseAspect.java

@ -0,0 +1,36 @@
package com.epmet.commons.tools.aspect;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.processor.MaskProcessor;
import com.epmet.commons.tools.utils.Result;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
@Aspect
@Component
@Order(0)
public class MaskResponseAspect {
@AfterReturning(pointcut = "@annotation(com.epmet.commons.tools.annotation.MaskResponse)", returning = "result")
public Object proceed(JoinPoint point, Result result) throws Throwable {
MethodSignature signature = (MethodSignature) point.getSignature();
MaskResponse maskResponseAnno = signature.getMethod().getAnnotation(MaskResponse.class);
String[] fieldNames = maskResponseAnno.fieldNames();
String[] fieldsMaskType = maskResponseAnno.fieldsMaskType();
if (fieldNames.length != fieldsMaskType.length) {
String msg = "掩码配置错误";
throw new EpmetException(EpmetErrorCode.SERVER_ERROR.getCode(), msg, msg);
}
new MaskProcessor(fieldNames, fieldsMaskType).mask(result);
return null;
}
}

69
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java

@ -0,0 +1,69 @@
package com.epmet.commons.tools.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
public class IcExportItemListFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
@NotEmpty(message = "请至少添加一个导出项")
private List<IcExportItemListFormDTO> children;
/**
* 父id
*/
private String pid;
/**
* ic_form_item.id
*/
@NotBlank(message = "itemId不能为空",groups = AddGroup.class)
private String itemId;
/**
* 表头宽度
*/
private Integer width;
/**
* 项标签
*/
@NotBlank(message = "名称不能为空",groups = AddGroup.class)
private String label;
/**
* 排序
*/
private Integer sort;
/**
* 表名
*/
private String tableName;
/**
* 列名
*/
private String columnName;
/**
* 只有远程获取的才有值
*/
private String optionSourceValue;
}

58
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportTemplateSaveFormDTO.java

@ -0,0 +1,58 @@
package com.epmet.commons.tools.dto.form;
import com.epmet.commons.tools.validator.group.AddGroup;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.io.Serializable;
import java.util.List;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
public class IcExportTemplateSaveFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 是否保存为模板 :true :false
*/
private Boolean isSaveTemp = false;
/**
* 表单CODE从字典获取
*/
@NotBlank(message = "表单CODE不能为空",groups = AddGroup.class)
private String formCode;
/**
* 模板名称
*/
@Length(max = 20, message = "模板名称最多为20个字", groups = { AddGroup.class })
private String name;
/**
* 0:动态1:文件
*/
private Integer type;
/**
* 排序
*/
private Integer sort;
/**
* 父id
*/
@NotEmpty(message = "请至少添加一个导出项")
private List<IcExportItemListFormDTO> itemList;
}

1
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/enums/DictTypeEnum.java

@ -22,6 +22,7 @@ public enum DictTypeEnum {
AGE_GROUP("age_group", "年龄范围", 11),
PATROL_WORK_TYPE("patrol_work_type", "例行工作分类", 13),
GRID_TYPE("grid_type", "网格类型", 12),
ITEM_TYPE_QUERY("item_type_query","居民信息组件查询方式",14),
;
private final String code;

183
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/processor/MaskProcessor.java

@ -0,0 +1,183 @@
package com.epmet.commons.tools.processor;
import cn.hutool.core.util.StrUtil;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.exception.ExceptionUtils;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.Result;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;
@Slf4j
public class MaskProcessor {
public static final String EPMET_PACKAGE_PREFIX = "com.epmet";
private List<String> fieldNames;
private List<String> fieldsMaskType;
public MaskProcessor(String[] fields, String[] fieldsMaskType) {
if (fields != null && fields.length > 0) {
this.fieldNames = Arrays.asList(fields);
this.fieldsMaskType = Arrays.asList(fieldsMaskType);
}
}
/**
* 为dto中的属性打掩码
* @param object
*/
public void mask(Object object) {
if (object == null) {
return;
}
if (object instanceof Result) {
mask(((Result<?>) object).getData());
return;
} else if (object instanceof PageData) {
mask(((PageData<?>) object).getList());
return;
} else if (object instanceof List) {
((List)object).forEach(e -> mask(e));
return;
} else if (object instanceof Map) {
maskMap((Map) object);
return;
} else if (object.getClass().getName().startsWith(EPMET_PACKAGE_PREFIX)) {
// 自定义bean,走反射
maskEpmetBean(object);
return;
}
}
/**
* 为map打码只打value中的码
* - 如果value是epmet的dto那么去反射它
* - 如果value是字符串那么直接给他打码
* - 如果value是其他类型跳过
* @param map
*/
private void maskMap(Map<Object, Object> map) {
if (CollectionUtils.isEmpty(map)) {
return;
}
for (Map.Entry<Object, Object> entry : map.entrySet()) {
Object value = entry.getValue();
Object key = entry.getKey();
if (value != null && value.getClass().getName().startsWith(EPMET_PACKAGE_PREFIX)) {
// 是epmet的对象
maskEpmetBean(value);
continue;
} else if (value instanceof String) {
int index = fieldNames.indexOf(key);
if (index != -1) {
String maskResult = maskString((String) value, fieldsMaskType.get(index));
entry.setValue(maskResult);
}
continue;
}
}
}
/**
* 反射
* @param object
*/
private void maskEpmetBean(Object object) {
Field[] declaredFields = object.getClass().getDeclaredFields();
for (Field currentField : declaredFields) {
currentField.setAccessible(true);
try {
String fieldName = currentField.getName();
Object value = currentField.get(object);
// 是epmet的类,继续下钻
if (currentField.getClass().getName().startsWith(EPMET_PACKAGE_PREFIX)) {
maskEpmetBean(value);
continue;
}
// 是字符串
String fieldValue;
if (value instanceof String && StringUtils.isNotBlank(fieldValue = (String) value)) {
int fieldIndexInAnnoAttrs = fieldNames.indexOf(fieldName);
if (fieldIndexInAnnoAttrs != -1) {
String product = maskString(fieldValue, fieldsMaskType.get(fieldIndexInAnnoAttrs));
currentField.set(object, product);
}
continue;
}
// 非字符串,非epmet类的其他类型
mask(value);
} catch (IllegalAccessException e) {
log.error("【mask一些字段报错】{}", ExceptionUtils.getErrorStackTrace(e));
}
}
}
/**
* 把字符串变更为掩码
* @param originString
* @return
*/
public String maskString(String originString, String maskType) {
if (MaskResponse.MASK_TYPE_ID_CARD.equals(maskType)) {
return maskIdCard(originString);
} else if (MaskResponse.MASK_TYPE_MOBILE.equals(maskType)) {
return maskMobile(originString);
} else {
return originString;
}
}
/**
* 将明文字符串打码变为掩码保留前6后面打码
* @param originString
* @return
*/
private String maskIdCard(String originString) {
// 仅将6位之后的全都打码
int length = originString.length();
if (length <= 6) {
return originString;
}
String maskStr = StrUtil.repeatByLength("*", length - 6);
return originString.replaceAll("^(\\d{6})[a-zA-Z0-9]*$", new StringBuilder("$1").append(maskStr).toString());
}
/**
* 将明文字符串打码变为掩码保留前3后4中间打码
* 187****3461
* @param originString
* @return
*/
private String maskMobile(String originString) {
int length = originString.length();
if (length <= 7) {
return originString;
}
String maskStr = StrUtil.repeatByLength("*", length - 7);
return originString.replaceAll("^(1\\d{2})\\d*(\\d{4})$", new StringBuilder("$1").append(maskStr).append("$2").toString());
}
public static void main(String[] args) {
String[] idc = {"idCard"};
String[] idct = {MaskResponse.MASK_TYPE_ID_CARD};
String r = new MaskProcessor(idc, idct).maskString("333333333333333333", MaskResponse.MASK_TYPE_ID_CARD);
System.out.println(r);
}
}

389
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/AuthCodeUtil.java

@ -0,0 +1,389 @@
package com.epmet.commons.tools.utils;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.*;
/**
* desc: 市北大数据局的工具
*
* @return
* @author LiuJanJun
* @date 2022/4/22 5:19 下午
*/
@Slf4j
public class AuthCodeUtil {
public enum DiscuzAuthcodeMode {
Encode, Decode
}
/**
* <summary>
* 从字符串的指定位置截取指定长度的子字符串￿
* </summary>
* <param name="str">原字符串</param>
* <param name="startIndex">子字符串的起始位置</param>
* <param name="length">子字符串的长度</param>
* <returns>子字符串</returns>
*/
public static String CutString(String str, int startIndex, int length) {
if (startIndex >= 0) {
if (length < 0) {
length = length * -1;
if (startIndex - length < 0) {
length = startIndex;
startIndex = 0;
} else {
startIndex = startIndex - length;
}
}
if (startIndex > str.length()) {
return "";
}
} else {
if (length < 0) {
return "";
} else {
if (length + startIndex > 0) {
length = length + startIndex;
startIndex = 0;
} else {
return "";
}
}
}
if (str.length() - startIndex < length) {
length = str.length() - startIndex;
}
return str.substring(startIndex, startIndex + length);
}
/**
* <summary>
* 从字符串的指定位置开始截取到字符串结尾的了符串
* </summary>
* <param name="str">原字符串</param>
* <param name="startIndex">子字符串的起始位置</param>
* <returns>子字符串</returns>
*/
public static String CutString(String str, int startIndex) {
return CutString(str, startIndex, str.length());
}
/**
* <summary>
* 返回文件是否存在
* </summary>
* <param name="filename">文件名</param>
* <returns>是否存在</returns>
*/
public static boolean FileExists(String filename) {
File f = new File(filename);
return f.exists();
}
/**
* <summary>
* MD5函数
* </summary>
* <param name="str">原始字符串</param>
* <returns>MD5结果</returns>
*/
public static String MD5(String str) {
StringBuffer sb = new StringBuffer();
String part = null;
try {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] md5 = md.digest(str.getBytes());
for (int i = 0; i < md5.length; i++) {
part = Integer.toHexString(md5[i] & 0xFF);
if (part.length() == 1) {
part = "0" + part;
}
sb.append(part);
}
} catch (NoSuchAlgorithmException ex) {
}
return sb.toString();
}
/**
* <summary>
* 字段串是否为Null或为""()
* </summary>
* <param name="str"></param>
* <returns></returns>
*/
public static boolean StrIsNullOrEmpty(String str) {
// if NET1
if (str == null || str.trim().equals("")) {
return true;
}
return false;
}
/**
* <summary>
* 用于 RC4 处理密码
* </summary>
* <param name="pass">密码字串</param>
* <param name="kLen">密钥长度一般为 256</param>
* <returns></returns>
*/
static private byte[] GetKey(byte[] pass, int kLen) {
byte[] mBox = new byte[kLen];
for (int i = 0; i < kLen; i++) {
mBox[i] = (byte) i;
}
int j = 0;
for (int i = 0; i < kLen; i++) {
j = (j + (int) ((mBox[i] + 256) % 256) + pass[i % pass.length])
% kLen;
byte temp = mBox[i];
mBox[i] = mBox[j];
mBox[j] = temp;
}
return mBox;
}
/**
* <summary>
* 生成随机字符
* </summary>
* <param name="lens">随机字符长度</param>
* <returns>随机字符</returns>
*/
public static String RandomString(int lens) {
char[] CharArray = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k',
'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int clens = CharArray.length;
String sCode = "";
Random random = new Random();
for (int i = 0; i < lens; i++) {
sCode += CharArray[Math.abs(random.nextInt(clens))];
}
return sCode;
}
/**
* <summary>
* 使用 Discuz authcode 方法对字符串加密
* </summary>
* <param name="source">原始字符串</param>
* <param name="key">密钥</param>
* <param name="expiry">加密字串有效时间单位是秒</param>
* <returns>加密结果</returns>
*/
public static String authcodeEncode(String source, String key, int expiry) {
return authcode(source, key, DiscuzAuthcodeMode.Encode, expiry);
}
/**
* <summary>
* 使用 Discuz authcode 方法对字符串加密
* </summary>
* <param name="source">原始字符串</param>
* <param name="key">密钥</param>
* <returns>加密结果</returns>
*/
public static String authcodeEncode(String source, String key) {
return authcode(source, key, DiscuzAuthcodeMode.Encode, 0);
}
/**
* <summary>
* 使用 Discuz authcode 方法对字符串解密
* </summary>
* <param name="source">原始字符串</param>
* <param name="key">密钥</param>
* <returns>解密结果</returns>
*/
public static String authcodeDecode(String source, String key) {
return authcode(source, key, DiscuzAuthcodeMode.Decode, 0);
}
/**
* <summary>
* 使用 变形的 rc4 编码方法对字符串进行加密或者解密
* </summary>
* <param name="source">原始字符串</param>
* <param name="key">密钥</param>
* <param name="operation">操作 加密还是解密</param>
* <param name="expiry">加密字串过期时间</param>
* <returns>加密或者解密后的字符串</returns>
*/
private static String authcode(String source, String key,
DiscuzAuthcodeMode operation, int expiry) {
try {
if (source == null || key == null) {
return "";
}
int ckey_length = 4;
String keya, keyb, keyc, cryptkey, result;
key = MD5(key);
keya = MD5(CutString(key, 0, 16));
keyb = MD5(CutString(key, 16, 16));
keyc = ckey_length > 0 ? (operation == DiscuzAuthcodeMode.Decode ? CutString(
source, 0, ckey_length) : RandomString(ckey_length))
: "";
cryptkey = keya + MD5(keya + keyc);
if (operation == DiscuzAuthcodeMode.Decode) {
byte[] temp;
temp = Base64.getDecoder().decode(CutString(source, ckey_length));
result = new String(RC4(temp, cryptkey));
if (CutString(result, 10, 16).equals(
CutString(MD5(CutString(result, 26) + keyb), 0, 16))) {
return CutString(result, 26);
} else {
temp = Base64.getDecoder().decode(CutString(source + "=", ckey_length));
result = new String(RC4(temp, cryptkey));
if (CutString(result, 10, 16)
.equals(CutString(
MD5(CutString(result, 26) + keyb), 0, 16))) {
return CutString(result, 26);
} else {
temp = Base64.getDecoder().decode(CutString(source + "==",
ckey_length));
result = new String(RC4(temp, cryptkey));
if (CutString(result, 10, 16).equals(
CutString(MD5(CutString(result, 26) + keyb), 0,
16))) {
return CutString(result, 26);
} else {
return "2";
}
}
}
} else {
source = "0000000000" + CutString(MD5(source + keyb), 0, 16)
+ source;
byte[] temp = RC4(source.getBytes("GBK"), cryptkey);
return keyc + Base64.getEncoder().encode(temp);
}
} catch (Exception e) {
return "";
}
}
/**
* <summary>
* RC4 原始算法
* </summary>
* <param name="input">原始字串数组</param>
* <param name="pass">密钥</param>
* <returns>处理后的字串数组</returns>
*/
private static byte[] RC4(byte[] input, String pass) {
if (input == null || pass == null)
return null;
byte[] output = new byte[input.length];
byte[] mBox = GetKey(pass.getBytes(), 256);
// 加密
int i = 0;
int j = 0;
for (int offset = 0; offset < input.length; offset++) {
i = (i + 1) % mBox.length;
j = (j + (int) ((mBox[i] + 256) % 256)) % mBox.length;
byte temp = mBox[i];
mBox[i] = mBox[j];
mBox[j] = temp;
byte a = input[offset];
// byte b = mBox[(mBox[i] + mBox[j] % mBox.Length) % mBox.Length];
// mBox[j] 一定比 mBox.Length 小,不需要在取模
byte b = mBox[(toInt(mBox[i]) + toInt(mBox[j])) % mBox.length];
output[offset] = (byte) ((int) a ^ (int) toInt(b));
}
return output;
}
public static int toInt(byte b) {
return (int) ((b + 256) % 256);
}
public long getUnixTimestamp() {
Calendar cal = Calendar.getInstance();
return cal.getTimeInMillis() / 1000;
}
public static void main(String[] args) throws IOException {
getStr();
//readFile02("/Users/liujianjun/Downloads/abc.txt");
}
/**
* 读取一个文本 一行一行读取
*
* @param path
* @return
* @throws IOException
*/
private static void readFile02(String path) throws IOException {
// 使用一个字符串集合来存储文本中的路径 ,也可用String []数组
List<String> list = new ArrayList<String>();
FileInputStream fis = new FileInputStream(path);
// 防止路径乱码 如果utf-8 乱码 改GBK eclipse里创建的txt 用UTF-8,在电脑上自己创建的txt 用GBK
InputStreamReader isr = new InputStreamReader(fis, StandardCharsets.UTF_8);
BufferedReader br = new BufferedReader(isr);
String line = "";
String result = null;
while ((line = br.readLine()) != null) {
String key = "TvFwHe6tGA";
result = AuthCodeUtil.authcodeDecode(line, key);
System.out.println(result);
}
br.close();
isr.close();
fis.close();
System.out.println("==========end");
}
private static void getStr(){
String tel = "4fb1lYySlVqMUaf/LnlBEM1nDZgCKnX+Q52azUGgSLCV0hioBvLFFZoJS1Vu";
tel = "a1孙1增勤";
String result = AuthCodeUtil.authcodeDecode(tel, "TvFwHe6tGA");
System.out.println(result);
}
}

122
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java

@ -0,0 +1,122 @@
package com.epmet.commons.tools.utils.poi.excel.handler;
import com.alibaba.excel.metadata.Head;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.write.handler.CellWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;
import java.util.List;
/**
* desc:单元格合并策略
*
* @author liujianjun
*/
public class ExcelFillCellMergeStrategy implements CellWriteHandler {
/**
* 需要合并的列 下标
*/
private int[] mergeColumnIndex;
/**
* 从下标n行开始合并
*/
private int mergeRowIndex;
public ExcelFillCellMergeStrategy() {
}
public ExcelFillCellMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex) {
this.mergeRowIndex = mergeRowIndex;
this.mergeColumnIndex = mergeColumnIndex;
}
@Override
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) {
}
@Override
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
// 隐藏id列
writeSheetHolder.getSheet().setColumnHidden(0, true);
}
@Override
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> list, Cell cell, Head head, Integer integer, Boolean aBoolean) {
int curRowIndex = cell.getRowIndex();
int curColIndex = cell.getColumnIndex();
if (curRowIndex <= mergeRowIndex) {
return;
}
//如果不指定 合并的列则全部列进行 合并判断
if (mergeColumnIndex == null) {
mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex);
} else {
//合并指定的列号
for (int columnIndex : mergeColumnIndex) {
if (curColIndex == columnIndex) {
mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex);
break;
}
}
}
}
/**
* 当前单元格向上合并
*
* @param writeSheetHolder
* @param cell 当前单元格
* @param curRowIndex 当前行
* @param curColIndex 当前列
*/
private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) {
// 当前行的第一个Cell
Cell curFirstCell = cell.getSheet().getRow(curRowIndex).getCell(0);
Object curFirstData = curFirstCell.getCellType() == CellType.STRING ? curFirstCell.getStringCellValue() : curFirstCell.getNumericCellValue();
// 上一行的第一个Cell
Cell preFirstCell = cell.getSheet().getRow(curRowIndex - 1).getCell(0);
Object preFirstData = preFirstCell.getCellType() == CellType.STRING ? preFirstCell.getStringCellValue() : preFirstCell.getNumericCellValue();
if (curFirstData.equals(preFirstData)) {
Object curData = cell.getCellType() == CellType.STRING ? cell.getStringCellValue() : cell.getNumericCellValue();
Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex);
Object preData = preCell.getCellType() == CellType.STRING ? preCell.getStringCellValue() : preCell.getNumericCellValue();
// 将当前单元格数据与上一个单元格数据比较
Boolean dataBool = preData.equals(curData);
//此处需要注意:因为我是按照序号确定是否需要合并的,所以获取每一行第一列数据和上一行第一列数据进行比较,如果相等合并
Boolean bool = cell.getRow().getCell(0).getStringCellValue().equals(cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue());
if (!dataBool || !bool) {
return;
}
Sheet sheet = writeSheetHolder.getSheet();
List<CellRangeAddress> mergeRegions = sheet.getMergedRegions();
boolean isMerged = false;
for (int i = 0; i < mergeRegions.size() && !isMerged; i++) {
CellRangeAddress cellRangeAddr = mergeRegions.get(i);
// 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元
if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) {
sheet.removeMergedRegion(i);
cellRangeAddr.setLastRow(curRowIndex);
sheet.addMergedRegion(cellRangeAddr);
isMerged = true;
}
}
// 若上一个单元格未被合并,则新增合并单元
if (!isMerged) {
CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex);
sheet.addMergedRegion(cellRangeAddress);
}
}
}
}

2
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/FreezeAndFilter.java → epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/FreezeAndFilter.java

@ -1,4 +1,4 @@
package com.epmet.commons.tools.utils.poi.excel;
package com.epmet.commons.tools.utils.poi.excel.handler;
/**
* desc:easyExcel 冻结标题

19
epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/validator/group/ExportGroup.java

@ -0,0 +1,19 @@
/**
* Copyright (c) 2018 人人开源 All rights reserved.
*
* https://www.renren.io
*
* 版权所有侵权必究
*/
package com.epmet.commons.tools.validator.group;
/**
* 导出 Group
*
* @author Mark sunlightcs@gmail.com
* @since 1.0.0
*/
public interface ExportGroup {
}

1
epmet-gateway/pom.xml

@ -287,6 +287,7 @@
<gateway.routes.epmet-demo-server.uri>lb://epmet-demo-server</gateway.routes.epmet-demo-server.uri>
<!-- 10、运营端客户定制化服务 -->
<gateway.routes.oper-customize-server.uri>lb://oper-customize-server</gateway.routes.oper-customize-server.uri>
<!-- <gateway.routes.oper-customize-server.uri>http://localhost:8089</gateway.routes.oper-customize-server.uri>-->
<!-- 11、运营端客户定制化服务 -->
<gateway.routes.oper-crm-server.uri>lb://oper-crm-server</gateway.routes.oper-crm-server.uri>
<!--<gateway.routes.oper-crm-server.uri>http://localhost:8090</gateway.routes.oper-crm-server.uri>-->

4
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java

@ -1,6 +1,7 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ActInfoDTO;
import com.epmet.dto.VolunteerInfoDTO;
@ -103,4 +104,7 @@ public interface EpmetHeartOpenFeignClient {
*/
@GetMapping("/heart/serviceitem/initCustomer/{customerId}")
Result customerInit(@PathVariable(value = "customerId") String customerId);
@PostMapping("/heart/icresidemanddict/demandoption")
Result<List<OptionResultDTO>> getDemandOptions();
}

6
epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java

@ -1,6 +1,7 @@
package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.ActInfoDTO;
@ -102,4 +103,9 @@ public class EpmetHeartOpenFeignClientFallback implements EpmetHeartOpenFeignCli
public Result customerInit(String customerId) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "customerInit", customerId);
}
@Override
public Result<List<OptionResultDTO>> getDemandOptions() {
return ModuleUtils.feignConError(ServiceConstant.EPMET_HEART_SERVER, "getDemandOptions", null);
}
}

10
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcBuildingDTO.java

@ -85,6 +85,16 @@ public class IcBuildingDTO implements Serializable {
*/
private Integer totalHouseNum;
/**
* 楼长姓名
*/
private String buildingLeaderName;
/**
* 楼长电话
*/
private String buildingLeaderMobile;
/**
* 中心点位经度
*/

13
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java

@ -17,9 +17,10 @@
package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
import lombok.Data;
/**
@ -57,12 +58,12 @@ public class IcHouseDTO implements Serializable {
* 所属楼栋id
*/
private String buildingId;
private String buildingName;
/**
* 所属单元id
*/
private String buildingUnitId;
private String unitName;
/**
* 房屋名字后台插入时生成
*/
@ -77,17 +78,17 @@ public class IcHouseDTO implements Serializable {
* 房屋类型这里存储字典value就可以
*/
private String houseType;
private String houseTypeName;
/**
* 存储字典value
*/
private String purpose;
private String purposeName;
/**
* 1出租0未出租
*/
private Integer rentFlag;
private String rentName;
/**
* 房主姓名
*/

15
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/ImportGeneralDTO.java

@ -45,6 +45,16 @@ public class ImportGeneralDTO implements Serializable {
private String buildingName;
private String buildingId;
/**
* 楼长姓名
*/
private String buildingLeaderName;
/**
* 楼长电话
*/
private String buildingLeaderMobile;
/**
* 房屋类型
*/
@ -157,4 +167,9 @@ public class ImportGeneralDTO implements Serializable {
* 小区重复状态
*/
private Boolean neighborHoodExistStatus = false;
/**
* 排序
*/
private Integer sort;
}

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

@ -0,0 +1,29 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
/**
* @author sun
* @dscription 人房房屋总数饼图-接口入参
*/
@Data
public class HouseChartFormDTO implements Serializable {
private static final long serialVersionUID = 405799151478155056L;
/**
* 组织网格小区Id
*/
private String orgId;
/**
* 组织网格小区类型 agency grid village
*/
private String orgType;
//token这信息
private String customerId;
private String userId;
}

10
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/form/IcBulidingAddFormDTO.java

@ -123,6 +123,16 @@ public class IcBulidingAddFormDTO implements Serializable {
private String latitude;
/**
* 楼长姓名
*/
private String buildingLeaderName;
/**
* 楼长电话
*/
private String buildingLeaderMobile;

57
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseChartResultDTO.java

@ -0,0 +1,57 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* @author sun
* @dscription 人房房屋总数饼图-接口返参
*/
@Data
public class HouseChartResultDTO implements Serializable {
/**
* 组织网格小区Id
*/
private String orgId;
/**
* 组织网格小区类型 agency grid village
*/
private String orgType;
/**
* 房屋总数
*/
private Integer houseTotal = 0;
/**
* 房屋自住总数
*/
private Integer zzHouseTotal = 0;
/**
* 房屋自住总数占比保留两位小数带百分号的
*/
private Double zzHouseRatio = 0.0;
/**
* 房屋常住总数
*/
private Integer czHouseTotal = 0;
/**
* 房屋常住总数占比保留两位小数带百分号的
*/
private Double czHouseRatio = 0.0;
/**
* 房屋闲置总数
*/
private Integer xzHouseTotal = 0;
/**
* 房屋闲置总数占比保留两位小数带百分号的
*/
private Double xzHouseRatio = 0.0;
@JsonIgnore
private Integer num;
//1:出租 0:自住 2:闲置
@JsonIgnore
private Integer rentFlag;
}

1
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/HouseListResultDTO.java

@ -18,6 +18,7 @@ public class HouseListResultDTO implements Serializable {
private static final long serialVersionUID = 2063032844842070847L;
private String houseId;
private String houseName;
private String rentFlag;
private List<CategoryListBean> categoryList;
@NoArgsConstructor

19
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/IcBuildingListResultDTO.java

@ -17,7 +17,16 @@ public class IcBuildingListResultDTO extends PageFormDTO {
private static final long serialVersionUID = -8277921228438123299L;
private String gridName;
/**
* 设计的房屋总数就是这个楼上实际有几个
*/
private Integer totalHouseNum;
/**
* 实际录入房屋总数
*/
private Integer realTotalHouseNum;
private String latitude;
private String agencyId;
private Integer sort;
@ -32,4 +41,14 @@ public class IcBuildingListResultDTO extends PageFormDTO {
private Integer totalUnitNum;
private String longitude;
private String buildingType;
/**
* 楼长姓名
*/
private String buildingLeaderName;
/**
* 楼长电话
*/
private String buildingLeaderMobile;
}

74
epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/result/SubUserHouseListResultDTO.java

@ -0,0 +1,74 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @author sun
* @dscription 人房下级人房概览列表-接口返参
*/
@Data
public class SubUserHouseListResultDTO implements Serializable {
/**
* 组织网格小区Id
*/
private String orgId;
/**
* 组织网格小区名称
*/
private String orgName;
/**
* 组织网格小区类型 agency grid village
*/
private String orgType;
/**
* 房屋总数
*/
private Integer houseTotal = 0;
/**
* 房屋自住总数
*/
private Integer zzHouseTotal = 0;
/**
* 房屋自住总数占比保留两位小数带百分号的
*/
private Double zzHouseRatio = 0.0;
/**
* 房屋常住总数
*/
private Integer czHouseTotal = 0;
/**
* 房屋常住总数占比保留两位小数带百分号的
*/
private Double czHouseRatio = 0.0;
/**
* 房屋闲置总数
*/
private Integer xzHouseTotal = 0;
/**
* 房屋闲置总数占比保留两位小数带百分号的
*/
private Double xzHouseRatio = 0.0;
/**
* 居民总数
*/
private Integer userTotal = 0;
/**
* 常住人口总数
*/
private Integer czUserTotal = 0;
/**
* 常住人口占比保留两位小数带百分号的
*/
private Double czUserRatio = 0.0;
/**
* 流动人口总数
*/
private Integer ldUserTotal = 0;
/**
* 流动人口占比保留两位小数带百分号的
*/
private Double ldUserRatio = 0.0;
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/aspect/RequestLogAspect.java

@ -17,7 +17,7 @@ import javax.servlet.http.HttpServletRequest;
*/
@Aspect
@Component
@Order(0)
@Order(1)
public class RequestLogAspect extends BaseRequestLogAspect {
@Override

39
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/controller/HouseController.java

@ -19,6 +19,7 @@ package com.epmet.controller;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.ServiceConstant;
@ -31,10 +32,7 @@ import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.form.*;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.IcHouseListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.LoginUserDetailsResultDTO;
import com.epmet.dto.result.*;
import com.epmet.feign.EpmetCommonServiceOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.service.HouseService;
@ -47,7 +45,10 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
/**
@ -69,9 +70,10 @@ public class HouseController implements ResultDataResolver {
@Autowired
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@PostMapping("houselist")
public Result<PageData<IcHouseListResultDTO>> houseList(@LoginUser TokenDto loginUser, @RequestBody IcHouseListFormDTO formDTO) {
@MaskResponse(fieldNames = {"ownerIdCard", "ownerPhone"},
fieldsMaskType = { MaskResponse.MASK_TYPE_ID_CARD, MaskResponse.MASK_TYPE_MOBILE })
public Result<PageData<IcHouseListResultDTO>> houseList(@RequestBody IcHouseListFormDTO formDTO) {
//效验数据
LoginUserDetailsResultDTO loginUserDetail = getLoginUserDetailsResultDTO(loginUser, "【查询房屋】查询当前staff所在组织信息失败");
formDTO.setAgencyId(loginUserDetail.getAgencyId());
@ -269,4 +271,27 @@ public class HouseController implements ResultDataResolver {
}
return new Result<HouseInfoDTO>().ok(houseService.getHouseInfoDTO(tokenDto.getCustomerId(), houseId));
}
/**
* @Author sun
* @Description 人房房屋总数饼图
**/
@PostMapping("housechart")
public Result<HouseChartResultDTO> houseChart(@LoginUser TokenDto tokenDto, @RequestBody HouseChartFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<HouseChartResultDTO>().ok(houseService.houseChart(formDTO));
}
/**
* @Author sun
* @Description 人房下级人房概览列表
**/
@PostMapping("subuserhouselist")
public Result<List<SubUserHouseListResultDTO>> subUserHouseList(@LoginUser TokenDto tokenDto, @RequestBody HouseChartFormDTO formDTO) {
formDTO.setCustomerId(tokenDto.getCustomerId());
formDTO.setUserId(tokenDto.getUserId());
return new Result<List<SubUserHouseListResultDTO>>().ok(houseService.subUserHouseList(formDTO));
}
}

10
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcHouseDao.java

@ -3,10 +3,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.IcHouseListFormDTO;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.HousesNameResultDTO;
import com.epmet.dto.result.IcHouseListResultDTO;
import com.epmet.dto.result.NeighborHoodManageDelResultDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcHouseEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -91,4 +88,9 @@ public interface IcHouseDao extends BaseDao<IcHouseEntity> {
*/
void houseUpdateHouseName(@Param("buildingId")String buildingId);
/**
* @Author sun
* @Description 人房房屋总数饼图
**/
List<HouseChartResultDTO> houseChart(@Param("orgId") String orgId, @Param("orgType") String orgType);
}

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/dao/IcNeighborHoodDao.java

@ -20,6 +20,7 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.NeighborHoodAndManagementDTO;
import com.epmet.dto.IcNeighborHoodDTO;
import com.epmet.dto.form.IcNeighborHoodListFormDTO;
import com.epmet.dto.result.IcNeighborHoodResultDTO;
import com.epmet.entity.IcHouseEntity;
@ -77,4 +78,5 @@ public interface IcNeighborHoodDao extends BaseDao<IcNeighborHoodEntity> {
*/
void neighborHoodPropertyUpdate(@Param("list")List<NeighborHoodAndManagementDTO> updateNeighborHoodAndManagement);
List<IcNeighborHoodDTO> selectNeighborList(@Param("gridId")String gridId);
}

10
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/entity/IcBuildingEntity.java

@ -80,6 +80,16 @@ public class IcBuildingEntity extends BaseEpmetEntity {
*/
private Integer totalHouseNum;
/**
* 楼长姓名
*/
private String buildingLeaderName;
/**
* 楼长电话
*/
private String buildingLeaderMobile;
/**
* 中心点位经度
*/

6
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/BuildingInfoModel.java

@ -36,6 +36,12 @@ public class BuildingInfoModel {
@ExcelProperty(value = "户数")
private Integer totalHouseNum;
@ExcelProperty(value = "楼长姓名")
private String buildingLeaderName;
@ExcelProperty(value = "楼长电话")
private String buildingLeaderMobile;
@ExcelIgnore
private Integer num;

2
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/model/ImportHouseInfoListener.java

@ -34,6 +34,8 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import static com.epmet.constant.ImportErrorMsgConstants.*;

14
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/HouseService.java

@ -23,6 +23,8 @@ import com.epmet.dto.form.*;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.IcHouseListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
@ -75,4 +77,16 @@ public interface HouseService {
void allDelete(NeighborHoodManageDelFormDTO formDTO);
HouseInfoDTO getHouseInfoDTO(String customerId,String houseId);
/**
* @Author sun
* @Description 人房房屋总数饼图
**/
HouseChartResultDTO houseChart(HouseChartFormDTO formDTO);
/**
* @Author sun
* @Description 人房下级人房概览列表
**/
List<SubUserHouseListResultDTO> subUserHouseList(HouseChartFormDTO formDTO);
}

3
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/BuildingServiceImpl.java

@ -430,14 +430,11 @@ public class BuildingServiceImpl implements BuildingService {
if (null != count && count > 0) {
throw new RenException(EpmetErrorCode.BUILDING_NAME_EXITED.getCode(), EpmetErrorCode.BUILDING_NAME_EXITED.getMsg());
}
IcBuildingDTO icBuilding = icBuildingService.get(formDTO.getBuildingId());
if (!icBuilding.getNeighborHoodId().equals(formDTO.getNeighborHoodId())) {
//更新对应房屋小区id
List<IcHouseEntity> icHouseEntities = icHouseDao.selectList(new QueryWrapper<IcHouseEntity>().lambda().eq(IcHouseEntity::getBuildingId, formDTO.getBuildingId()));
if (!CollectionUtils.isEmpty(icHouseEntities)) {
//
throw new RenException(EpmetErrorCode.ORG_EDIT_FAILED.getCode(), "楼栋单元下存在房屋,无法更新");
}
}

176
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/HouseServiceImpl.java

@ -6,6 +6,7 @@ import com.alibaba.excel.ExcelReader;
import com.alibaba.excel.read.metadata.ReadSheet;
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.OrgTypeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
import com.epmet.commons.tools.exception.EpmetException;
@ -13,20 +14,16 @@ import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
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.utils.ConvertUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.constant.CustomerGridConstant;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcBuildingDao;
import com.epmet.dao.IcBuildingUnitDao;
import com.epmet.dao.IcHouseDao;
import com.epmet.dao.IcNeighborHoodDao;
import com.epmet.dto.CustomerAgencyDTO;
import com.epmet.dto.IcBuildingDTO;
import com.epmet.dto.IcBuildingUnitDTO;
import com.epmet.dto.IcHouseDTO;
import com.epmet.dao.*;
import com.epmet.dto.*;
import com.epmet.dto.form.*;
import com.epmet.dto.result.*;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.IcHouseListResultDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
@ -54,8 +51,11 @@ import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.text.NumberFormat;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
@Slf4j
@ -90,9 +90,12 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
private EpmetCommonServiceOpenFeignClient epmetCommonServiceOpenFeignClient;
@Autowired
private ExecutorService executorService;
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private CustomerAgencyDao customerAgencyDao;
@Autowired
private CustomerGridDao customerGridDao;
@Override
@ -356,4 +359,159 @@ public class HouseServiceImpl implements HouseService, ResultDataResolver {
}
return houseInfo;
}
/**
* @Author sun
* @Description 人房房屋总数饼图
**/
@Override
public HouseChartResultDTO houseChart(HouseChartFormDTO formDTO) {
HouseChartResultDTO resultDTO = new HouseChartResultDTO();
//计算百分比使用,保留小数点后两位
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMaximumFractionDigits(NumConstant.TWO);
//1.判断入参是否有值,没有值则赋值当前工作人员缓存中所属组织信息
if (StringUtils.isEmpty(formDTO.getOrgId())) {
//2.获取工作人员缓存信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId()));
}
formDTO.setOrgId(staffInfo.getAgencyId());
formDTO.setOrgType("agency");
}
//2.根据入参值查询对应的房屋统计数据
List<HouseChartResultDTO> list = icHouseDao.houseChart(formDTO.getOrgId(), formDTO.getOrgType());
//3.汇总数据
AtomicInteger houseTotal = new AtomicInteger();
list.forEach(l -> {
houseTotal.addAndGet(l.getNum());
if (l.getRentFlag() == 0) {
resultDTO.setZzHouseTotal(l.getNum());
} else if (l.getRentFlag() == 1) {
resultDTO.setCzHouseTotal(l.getNum());
} else {
resultDTO.setXzHouseTotal(l.getNum());
}
});
resultDTO.setHouseTotal(houseTotal.get());
resultDTO.setZzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getZzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getZzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100)));
resultDTO.setCzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getCzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getCzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100)));
resultDTO.setXzHouseRatio(Double.valueOf((resultDTO.getHouseTotal() == 0 || resultDTO.getXzHouseTotal() > resultDTO.getHouseTotal()) ? "0" : numberFormat.format(((float) resultDTO.getXzHouseTotal() / (float) resultDTO.getHouseTotal()) * 100)));
resultDTO.setOrgId(formDTO.getOrgId());
resultDTO.setOrgType(formDTO.getOrgType());
return resultDTO;
}
/**
* @Author sun
* @Description 人房下级人房概览列表
**/
@Override
public List<SubUserHouseListResultDTO> subUserHouseList(HouseChartFormDTO formDTO) {
List<SubUserHouseListResultDTO> resultList = new ArrayList<>();
//1.判断入参没值的赋值当前工作人员缓存所属组织信息
if (StringUtils.isEmpty(formDTO.getOrgId())) {
//获取工作人员缓存信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(formDTO.getCustomerId(), formDTO.getUserId());
if (null == staffInfo) {
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", formDTO.getUserId()));
}
formDTO.setOrgId(staffInfo.getAgencyId());
formDTO.setOrgType("agency");
}
if ("village".equals(formDTO.getOrgType())) {
return new ArrayList<>();
}
//2.根据入参值查询直属下级列表(组织、网格、小区列表)
List<String> idList = new ArrayList<>();
Map<String, String> map = new HashMap<>();
String orgType = "";
if ("agency".equals(formDTO.getOrgType())) {
//获取组织缓存,判断组织级别
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(formDTO.getOrgId());
if (null == agencyInfo) {
throw new RenException(String.format("查询组织信息失败%s", formDTO.getOrgId()));
}
//直属下级网格列表
if ("community".equals(agencyInfo.getLevel())) {
orgType = "grid";
List<GridListResultDTO> list = customerGridDao.selectGridList(formDTO.getOrgId());
idList = list.stream().map(GridListResultDTO::getGridId).collect(Collectors.toList());
map = list.stream().collect(Collectors.toMap(GridListResultDTO::getGridId, GridListResultDTO::getGridName, (k1, k2) -> k1));
} else {
//直属下级组织列表
orgType = "agency";
List<AgencyListResultDTO> list = customerAgencyDao.selectAgencyList(formDTO.getOrgId());
idList = list.stream().map(AgencyListResultDTO::getAgencyId).collect(Collectors.toList());
map = list.stream().collect(Collectors.toMap(AgencyListResultDTO::getAgencyId, AgencyListResultDTO::getAgencyName, (k1, k2) -> k1));
}
} else if ("grid".equals(formDTO.getOrgType())) {
//网格直属小区列表
orgType = "village";
List<IcNeighborHoodDTO> list = icNeighborHoodDao.selectNeighborList(formDTO.getOrgId());
idList = list.stream().map(IcNeighborHoodDTO::getId).collect(Collectors.toList());
map = list.stream().collect(Collectors.toMap(IcNeighborHoodDTO::getId, IcNeighborHoodDTO::getNeighborHoodName, (k1, k2) -> k1));
}
//3.分别查询直属下级列表的房屋、居民统计数据
resultList = houseUserChartList(idList, map, orgType);
return resultList;
}
/**
* @Author sun
* @Description 人房房屋居民统计列表数据
**/
private List<SubUserHouseListResultDTO> houseUserChartList(List<String> idList, Map<String, String> map, String orgType) {
List<SubUserHouseListResultDTO> list = new ArrayList<>();
//1.直属下级列表的房屋数据
List<HouseChartResultDTO> houseList = new ArrayList<>();
HouseChartFormDTO houseDTO = new HouseChartFormDTO();
houseDTO.setOrgType(orgType);
for (String id : idList) {
houseDTO.setOrgId(id);
houseList.add(houseChart(houseDTO));
}
//2.直属下级列表的居民数据
UserChartFormDTO userDTO = new UserChartFormDTO();
userDTO.setOrgType(orgType);
userDTO.setIdList(idList);
Result<List<UserChartResultDTO>> userResult = epmetUserOpenFeignClient.userChartList(userDTO);
if (!userResult.success()) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取居民人房统计数据失败" + userResult.getInternalMsg(), userResult.getMsg());
}
//3.汇总封装数据
SubUserHouseListResultDTO dto = null;
for (String id : idList) {
dto = new SubUserHouseListResultDTO();
dto.setOrgId(id);
dto.setOrgName(map.get(id));
dto.setOrgType(orgType);
for (HouseChartResultDTO h : houseList) {
if (h.getOrgId().equals(id)) {
dto.setHouseTotal(h.getHouseTotal());
dto.setZzHouseTotal(h.getZzHouseTotal());
dto.setZzHouseRatio(h.getZzHouseRatio());
dto.setCzHouseTotal(h.getCzHouseTotal());
dto.setCzHouseRatio(h.getCzHouseRatio());
dto.setXzHouseTotal(h.getXzHouseTotal());
dto.setXzHouseRatio(h.getXzHouseRatio());
}
}
for (UserChartResultDTO u : userResult.getData()) {
if (u.getOrgId().equals(id)) {
dto.setUserTotal(u.getUserTotal());
dto.setCzUserTotal(u.getCzUserTotal());
dto.setCzUserRatio(u.getCzUserRatio());
dto.setLdUserTotal(u.getLdUserTotal());
dto.setLdUserRatio(u.getLdUserRatio());
}
}
list.add(dto);
}
return list;
}
}

40
epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
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.OptionResultDTO;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
@ -18,11 +19,17 @@ import com.epmet.dto.IcResiCategoryStatsConfigDTO;
import com.epmet.dto.IcResiUserDTO;
import com.epmet.dto.ImportGeneralDTO;
import com.epmet.dto.form.HouseFormDTO;
import com.epmet.dto.result.HouseInfoDTO;
import com.epmet.dto.result.HouseListResultDTO;
import com.epmet.dto.result.HousesNameResultDTO;
import com.epmet.entity.IcHouseEntity;
import com.epmet.enums.HousePurposeEnums;
import com.epmet.enums.HouseRentFlagEnums;
import com.epmet.enums.HouseTypeEnums;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.feign.EpmetUserOpenFeignClient;
import com.epmet.feign.OperCustomizeOpenFeignClient;
import com.epmet.redis.IcHouseRedis;
import com.epmet.service.IcHouseService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
@ -47,6 +54,10 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient;
@Resource
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Resource
private EpmetAdminOpenFeignClient epmetAdminOpenFeignClient;
@Resource
private IcHouseRedis icHouseRedis;
@Override
@ -77,7 +88,21 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
@Override
public IcHouseDTO get(String id) {
IcHouseEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, IcHouseDTO.class);
IcHouseDTO dto = ConvertUtils.sourceToTarget(entity, IcHouseDTO.class);
dto.setHouseTypeName(HouseTypeEnums.getTypeValue(dto.getHouseType()));
dto.setRentName(HouseRentFlagEnums.getTypeValue(dto.getRentFlag()));
dto.setPurposeName(HousePurposeEnums.getTypeValue(dto.getPurpose()));
HouseInfoDTO houseInfo = icHouseRedis.getHouseInfo(id, dto.getCustomerId());
if (null != houseInfo) {
dto.setBuildingName(houseInfo.getNeighborHoodName().concat(houseInfo.getBuildingName()));
dto.setUnitName(houseInfo.getUnitName());
} else {
dto.setBuildingName(StrConstant.EPMETY_STR);
dto.setUnitName(StrConstant.EPMETY_STR);
}
return dto;
}
@Override
@ -188,6 +213,19 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
HouseListResultDTO dto = new HouseListResultDTO();
dto.setHouseId(item.getId());
dto.setHouseName(item.getHouseName());
switch (item.getRentFlag()){
case NumConstant.ZERO:
dto.setRentFlag("自住");
break;
case NumConstant.ONE:
dto.setRentFlag("出租");
break;
case NumConstant.TWO:
dto.setRentFlag("闲置");
break;
default:
break;
}
List<HouseListResultDTO.CategoryListBean> categories = new ArrayList<>();
if (null != countMap && CollectionUtils.isNotEmpty(categoryList)) {
for (IcResiCategoryStatsConfigDTO category : categoryList) {

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

@ -608,6 +608,8 @@ public class IcNeighborHoodServiceImpl extends BaseServiceImpl<IcNeighborHoodDao
buildingEntity.setTotalUnitNum(info.getTotalUnitNum());
buildingEntity.setTotalFloorNum(info.getTotalFloorNum());
buildingEntity.setTotalHouseNum(info.getTotalHouseNum());
buildingEntity.setBuildingLeaderName(info.getBuildingLeaderName());
buildingEntity.setBuildingLeaderMobile(info.getBuildingLeaderMobile());
icBuildingService.insert(buildingEntity);
if (null != info.getTotalUnitNum() && info.getTotalUnitNum() > NumConstant.ZERO) {
//设置楼宇单元

2
epmet-module/gov-org/gov-org-server/src/main/resources/db/migration/V0.0.17__edit_building_and_house.sql

@ -0,0 +1,2 @@
alter table ic_building add COLUMN BUILDING_LEADER_NAME VARCHAR(11) comment '楼长姓名' AFTER TOTAL_HOUSE_NUM;
alter table ic_building add COLUMN BUILDING_LEADER_MOBILE VARCHAR(11) comment '楼长电话' AFTER BUILDING_LEADER_NAME;

BIN
epmet-module/gov-org/gov-org-server/src/main/resources/excel/building_template.xlsx

Binary file not shown.

BIN
epmet-module/gov-org/gov-org-server/src/main/resources/excel/house_template.xlsx

Binary file not shown.

6
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcBuildingDao.xml

@ -93,9 +93,11 @@
a.SORT as sort,
a.LONGITUDE as longitude,
a.LATITUDE as latitude,
a.TYPE as buildingTypeKey
a.TYPE as buildingTypeKey,
(SELECT COUNT(1) FROM ic_house WHERE DEL_FLAG = '0' AND BUILDING_ID = a.ID) AS realTotalHouseNum,
a.BUILDING_LEADER_NAME,
a.BUILDING_LEADER_MOBILE
from ic_building a
LEFT JOIN ic_neighbor_hood b on a.NEIGHBOR_HOOD_ID = b.ID and b.DEL_FLAG='0'
left join customer_agency c on b.AGENCY_ID = c.ID and c.DEL_FLAG='0'
left join customer_grid d on b.GRID_ID = d.ID and d.DEL_FLAG='0'

34
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcHouseDao.xml

@ -300,4 +300,38 @@
)
GROUP BY h.OWNER_ID_CARD
</select>
<select id="houseChart" resultType="com.epmet.dto.result.HouseChartResultDTO">
SELECT
COUNT(id) num,
rent_flag rentFlag
FROM
ic_house
WHERE del_flag = '0'
<choose>
<when test='orgType == "agency"'>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and (agency_id = #{orgId} OR agency_pids LIKE CONCAT('%', #{orgId}, '%'))
)
</when>
<when test='orgType == "grid"'>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and grid_id = #{orgId}
)
</when>
<otherwise>
AND neighbor_hood_id IN (
select id from ic_neighbor_hood
where del_flag = '0'
and id = #{orgId}
)
</otherwise>
</choose>
GROUP BY rent_flag
</select>
</mapper>

18
epmet-module/gov-org/gov-org-server/src/main/resources/mapper/IcNeighborHoodDao.xml

@ -266,4 +266,22 @@
</foreach>
)
</select>
<select id="selectNeighborList" resultType="com.epmet.dto.IcNeighborHoodDTO">
SELECT
id,
customer_id,
neighbor_hood_name,
agency_id,
parent_agency_id,
agency_pids,
grid_id,
address,
remark
FROM
ic_neighbor_hood
WHERE
del_flag = '0'
AND grid_id = #{gridId}
</select>
</mapper>

60
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcExportTemplateDTO.java

@ -0,0 +1,60 @@
package com.epmet.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
public class IcExportTemplateDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 客户id
*/
private String customerId;
/**
* 所属机关IDcustomer_agency.id
*/
private String agencyId;
/**
* 所有上级组织机构ID(以英文:隔开)包含本身id
*/
private String pids;
/**
* 表单CODE从字典获取
*/
private String formCode;
/**
* 模板名称
*/
private String name;
/**
* 排序
*/
private Integer sort;
private Integer isSelf;
private String createdBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date createdTime;
}

33
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcFormItemGroupDTO.java

@ -20,7 +20,6 @@ package com.epmet.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
@ -79,34 +78,4 @@ public class IcFormItemGroupDTO implements Serializable {
*/
private Boolean display;
/**
* 0未删除1已删除
*/
private Integer delFlag;
/**
* 乐观锁
*/
private Integer revision;
/**
* 创建人
*/
private String createdBy;
/**
* 创建时间
*/
private Date createdTime;
/**
* 更新人
*/
private String updatedBy;
/**
* 更新时间
*/
private Date updatedTime;
}
}

39
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/EditIFormItemFormDTO.java

@ -0,0 +1,39 @@
package com.epmet.dto.form;
import com.epmet.dto.result.OptionDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.List;
@Data
public class EditIFormItemFormDTO implements Serializable {
/**
* 客户id
* 可空为空时修改所有客户符合条件的记录
*/
private String customerId;
/**
* ic_form_item.id
*/
private String formItemId;
/**
* 组件名称对应的是ic_form_item.label
*/
@NotBlank(message = "label不能为空")
private String label;
/**
* 组件类型
*/
private String itemType;
/**
* ic_form_item_options
*/
private List<OptionDTO> options;
}

38
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcExportTemplateQueryFormDTO.java

@ -0,0 +1,38 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.validator.group.ExportGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
public class IcExportTemplateQueryFormDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 模板主键
*/
private String tempId;
/**
* 客户id
*/
@NotBlank(message = "客户Id不能为空",groups = ExportGroup.class)
private String customerId;
/**
* 页面上的导出配置参数
*/
private IcExportTemplateSaveFormDTO exportConfig;
}

84
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/form/IcFormItemGroupLisFormDTO.java

@ -0,0 +1,84 @@
/**
* Copyright 2018 人人开源 https://www.renren.io
* <p>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
* <p>
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* <p>
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import com.epmet.commons.tools.validator.group.QueryGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 表单项分组查询条件
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-26
*/
@Data
public class IcFormItemGroupLisFormDTO extends PageFormDTO {
private static final long serialVersionUID = 1L;
/**
* 分组id
*/
private String id;
/**
* 客户ID
*/
@NotBlank(message = "客户Id不能为空", groups = QueryGroup.class)
private String customerId;
/**
* 表单ID
*/
private String formId;
/**
* 表单编码
*/
@NotBlank(message = "表单编码不能为空", groups = QueryGroup.class)
private String formCode;
/**
* 对应的子表名称
*/
private String tableName;
/**
* 是否支持添加一行1支持默认0不支持
*/
private Boolean supportAdd;
/**
* 名称
*/
private String label;
/**
* 排序
*/
private Integer sort;
/**
* 1展示0不展示默认1
*/
private Boolean display;
}

23
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResDTO.java

@ -0,0 +1,23 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class ConditionResDTO implements Serializable {
/**
* 分组ID,'默认NONE'
*/
private String itemGroupId;
/**
* 分组名称
* 基础信息教育信息....
*/
private String groupName;
private List<ConditionResultDTO> queryItemList;
}

9
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java

@ -14,7 +14,7 @@ import java.util.List;
public class ConditionResultDTO implements Serializable {
private static final long serialVersionUID = -2021200288758478252L;
/**
* 父项ID
* ID
*/
private String itemId;
@ -88,6 +88,13 @@ public class ConditionResultDTO implements Serializable {
*/
private String queryType;
private String funType;
private List<OptionDTO> options;
/**
* 这个表 是否支持添加 即是否是多对一 eg:居民需求是多个对一个
*/
private boolean supportAdd;
}

2
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemResult.java

@ -16,7 +16,7 @@ public class FormItemResult implements Serializable {
private static final long serialVersionUID = 7443085469505238040L;
/**
* 父项ID
* ID
*/
private String itemId;

69
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java

@ -0,0 +1,69 @@
package com.epmet.dto.result;
import com.epmet.commons.tools.constant.NumConstant;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.CollectionUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义表单导出模板配置项 for 导出时使用
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
public class IcCustomExportResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 表头
*/
private List<List<String>> headers = new ArrayList<>();
private Integer headerRow;
/**
* sql中要返回的 列名 顺序跟表头顺序一致
*/
private List<SqlColumn> showSqlColumns;
/**
* sql中要返回的关联的列 (与显示的要去重)
*/
private List<SqlColumn> hiddenSqlColumns;
@NoArgsConstructor
@AllArgsConstructor
@Data
public static class SqlColumn {
private String itemId;
private String tableName;
private Boolean manyToOne;
private String columnName;
private String optionSourceType;
}
/**
* desc:获取有几行头
* @return
*/
public Integer getHeaderRow() {
if (CollectionUtils.isEmpty(headers)){
return NumConstant.ZERO;
}
return headers.stream().mapToInt(List::size).max().orElse(0);
}
}

67
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java

@ -0,0 +1,67 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* 自定义表单导出模板配置项 for 导出时使用
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
public class IcExportTemplateForExportResultDTO implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键
*/
private String id;
/**
* 父id
*/
private String pid;
/**
* 表头宽度
*/
private Integer width;
/**
* 项标签
*/
private String label;
/**
* 排序
*/
private Integer sort;
/**
* itemId
*/
private String itemId;
/**
* 表名
*/
private String tableName;
/**
* 列名
*/
private String columnName;
private String optionSourceValue;
private String optionSourceType;
/**
* 是否支持添加 即是否是多对一 eg:居民需求是多个对一个
*/
private boolean supportAdd;
}

4
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/SubTableJoinDTO.java

@ -10,4 +10,8 @@ public class SubTableJoinDTO implements Serializable {
private static final long serialVersionUID = 8243764437194993736L;
private String tableName;
private String joinTableSql;
/**
* 是否支持添加一行1支持默认0不支持
*/
private Boolean supportAdd;
}

19
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/TemplateDetailResultDTO.java

@ -0,0 +1,19 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Description
* @Author zhaoqifeng
* @Date 2022/4/25 16:25
*/
@Data
public class TemplateDetailResultDTO implements Serializable {
private static final long serialVersionUID = 8954669603105326916L;
private String id;
private String label;
private List<TemplateDetailResultDTO> children;
}

18
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java

@ -1,6 +1,7 @@
package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerFootBarDTO;
import com.epmet.dto.IcFormItemOptionsDTO;
@ -25,7 +26,7 @@ import java.util.Set;
* @author yinzuomei@elink-cn.com
* @date 2020/6/4 13:16
*/
// @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallbackFactory = OperCustomizeOpenFeignClientFallbackFactory.class,url = "http://localhost:8089")
// @FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallbackFactory = OperCustomizeOpenFeignClientFallbackFactory.class,url = "http://localhost:8089")
@FeignClient(name = ServiceConstant.OPER_CUSTOMIZE_SERVER, fallbackFactory = OperCustomizeOpenFeignClientFallbackFactory.class)
public interface OperCustomizeOpenFeignClient {
@ -161,4 +162,19 @@ public interface OperCustomizeOpenFeignClient {
*/
@PostMapping("/oper/customize/icformitem/resi-category-items/list")
Result<List<ResiCategoryItemResultDTO>> listResiCategoryItems(@RequestParam("customer-id") String customerId);
/**
* 查询要导出的表头和sql返回结果的列的 用于导出
* @param param
* @return
*/
@PostMapping("/oper/customize/icExportTemplate/getExcelHeaderAndSqlColumnForExport")
Result<IcCustomExportResultDTO> getExcelHeaderAndSqlColumnForExport(@RequestBody IcExportTemplateQueryFormDTO param);
/**
* @author sun
* @Description 居民信息自定义模板导出--保存模板
*/
@PostMapping("/oper/customize/icExportTemplate/save")
Result<List<IcExportTemplateForExportResultDTO>> save(@RequestBody IcExportTemplateSaveFormDTO formDTO);
}

11
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java

@ -1,6 +1,7 @@
package com.epmet.feign.fallback;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.CustomerFootBarDTO;
@ -124,4 +125,14 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe
public Result<List<ResiCategoryItemResultDTO>> listResiCategoryItems(String customerId) {
return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "listResiCategoryItems", customerId);
}
@Override
public Result<IcCustomExportResultDTO> getExcelHeaderAndSqlColumnForExport(IcExportTemplateQueryFormDTO param) {
return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "getExcelHeaderAndSqlColumnForExport", param);
}
@Override
public Result<List<IcExportTemplateForExportResultDTO>> save(IcExportTemplateSaveFormDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.OPER_CUSTOMIZE_SERVER, "save", formDTO);
}
}

6
epmet-module/oper-customize/oper-customize-server/pom.xml

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

96
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcExportTemplateController.java

@ -0,0 +1,96 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.ExportGroup;
import com.epmet.dto.IcExportTemplateDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.result.IcCustomExportResultDTO;
import com.epmet.dto.result.IcExportTemplateForExportResultDTO;
import com.epmet.dto.result.TemplateDetailResultDTO;
import com.epmet.service.IcExportTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@RestController
@RequestMapping("icExportTemplate")
public class IcExportTemplateController {
@Autowired
private IcExportTemplateService icExportTemplateService;
@RequestMapping("page")
public Result<PageData<IcExportTemplateDTO>> page(@RequestParam Map<String, Object> params) {
PageData<IcExportTemplateDTO> page = icExportTemplateService.page(params);
return new Result<PageData<IcExportTemplateDTO>>().ok(page);
}
@RequestMapping(value = "{id}", method = {RequestMethod.POST, RequestMethod.GET})
public Result<IcExportTemplateDTO> get(@PathVariable("id") String id) {
IcExportTemplateDTO data = icExportTemplateService.get(id);
return new Result<IcExportTemplateDTO>().ok(data);
}
@NoRepeatSubmit
@PostMapping("save")
public Result<List<IcExportTemplateForExportResultDTO>> save(@RequestBody IcExportTemplateSaveFormDTO formDTO) {
return new Result<List<IcExportTemplateForExportResultDTO>>().ok(icExportTemplateService.save(formDTO));
}
@PostMapping("delete")
public Result delete(@LoginUser TokenDto tokenDto, @RequestBody String[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
icExportTemplateService.delete(tokenDto.getUserId(), ids);
return new Result();
}
/**
* desc:查询要导出的表头和sql返回结果的列的 用于导出
*
* @param param
* @return
*/
@PostMapping("getExcelHeaderAndSqlColumnForExport")
public Result<IcCustomExportResultDTO> getExcelHeaderAndSqlColumnForExport(@RequestBody IcExportTemplateQueryFormDTO param) {
ValidatorUtils.validateEntity(param, ExportGroup.class);
return new Result().ok(icExportTemplateService.getTemplateConfigForExport(param));
}
/**
* 获取模板列表
*
* @Param tokenDto
* @Return {@link Result< List< IcExportTemplateDTO>>}
* @Author zhaoqifeng
* @Date 2022/4/25 14:28
*/
@PostMapping("templateList")
public Result<List<IcExportTemplateDTO>> getTemplateList(@LoginUser TokenDto tokenDto, @RequestBody IcExportTemplateDTO formDTO) {
return new Result<List<IcExportTemplateDTO>>().ok(icExportTemplateService.getTemplateList(tokenDto, formDTO));
}
@PostMapping("templateDetail")
public Result<List<TemplateDetailResultDTO>> getTemplateDetail(@RequestBody IcExportTemplateDTO formDTO) {
return new Result<List<TemplateDetailResultDTO>>().ok(icExportTemplateService.getTemplateDetail(formDTO));
}
}

13
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormController.java

@ -102,6 +102,19 @@ public class IcFormController {
return new Result<List<ConditionResultDTO>>().ok(icFormItemService.queryConditionList(formDto));
}
/**
* 查询条件 分组显示
* @param tokenDto
* @param formDto
* @return
*/
@PostMapping("conditionlist-bygroup")
public Result<List<ConditionResDTO>> queryConditionListByGroup(@LoginUser TokenDto tokenDto, @RequestBody CustomerFormQueryDTO formDto){
formDto.setCustomerId(tokenDto.getCustomerId());
ValidatorUtils.validateEntity(formDto,CustomerFormQueryDTO.AddUserInternalGroup.class);
return new Result<List<ConditionResDTO>>().ok(icFormItemService.queryConditionListByGroup(formDto));
}
/**
* 居民信息列表_表头
* @param tokenDto

39
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java

@ -18,7 +18,10 @@
package com.epmet.controller;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.EditIFormItemFormDTO;
import com.epmet.dto.result.ColumnTableNameResultDTO;
import com.epmet.dto.result.FormItemResult;
import com.epmet.dto.result.ResiCategoryItemResultDTO;
import com.epmet.service.IcFormItemService;
import org.springframework.beans.factory.annotation.Autowired;
@ -60,4 +63,40 @@ public class IcFormItemController {
return new Result().ok(r);
}
/**
* 修改组件的类型
* 来源于需求
* 16所患大病所患慢病更改为下拉框选择慢病类型高血压类风湿心脏病肝硬化糖尿病其他大病类别恶性肿瘤肾功能衰竭肝硬化或急性肝坏死脑中风急性心机梗塞急性坏死性胰腺炎器官移植系统性红斑狼疮再生障碍性贫血其他
* 17人户状况更改为下拉框选择类别人户一致人在户不在户在人不在
* 18居住情况类别缺少针对夫妻两人居住的类别增加其他分类类别与子女同住空巢独居其他
* @param formDTO
* @return
*/
@PostMapping("edit-item-type")
public Result editItemType(@RequestBody EditIFormItemFormDTO formDTO ){
ValidatorUtils.validateEntity(formDTO);
icFormItemService.editItemType(formDTO);
return new Result();
}
/**
* 初始化默认的查询组件ic_form_item.SEARCH_DISPLAY='1'
* @return
*/
@PostMapping("init-query-builder")
public Result initQueryBuilder(@RequestParam("customerId")String customerId){
icFormItemService.initQueryBuilder(customerId);
return new Result();
}
/**
* 根据分组id 获取分组下的item
* @return
*/
@PostMapping("getItemList/{groupId}")
public Result<List<FormItemResult>> getItemListByGroupId(@RequestHeader String customerId, @PathVariable("groupId") String groupId){
List<FormItemResult> list = icFormItemService.getItemListByGroupId(customerId,groupId);
return new Result().ok(list);
}
}

28
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemGroupController.java

@ -17,23 +17,20 @@
package com.epmet.controller;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.commons.tools.validator.group.DefaultGroup;
import com.epmet.commons.tools.validator.group.QueryGroup;
import com.epmet.commons.tools.validator.group.UpdateGroup;
import com.epmet.dto.IcFormItemGroupDTO;
import com.epmet.excel.IcFormItemGroupExcel;
import com.epmet.dto.form.IcFormItemGroupLisFormDTO;
import com.epmet.service.IcFormItemGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
@ -45,14 +42,16 @@ import java.util.Map;
@RestController
@RequestMapping("icformitemgroup")
public class IcFormItemGroupController {
@Autowired
private IcFormItemGroupService icFormItemGroupService;
@GetMapping("page")
public Result<PageData<IcFormItemGroupDTO>> page(@RequestParam Map<String, Object> params){
PageData<IcFormItemGroupDTO> page = icFormItemGroupService.page(params);
return new Result<PageData<IcFormItemGroupDTO>>().ok(page);
@PostMapping("list")
public Result<List<IcFormItemGroupDTO>> page(@RequestHeader String customerId, @RequestBody IcFormItemGroupLisFormDTO param){
param.setCustomerId(customerId);
ValidatorUtils.validateEntity(param, QueryGroup.class);
List<IcFormItemGroupDTO> page = icFormItemGroupService.list(param);
return new Result<List<IcFormItemGroupDTO>>().ok(page);
}
@GetMapping("{id}")
@ -85,10 +84,5 @@ public class IcFormItemGroupController {
return new Result();
}
@GetMapping("export")
public void export(@RequestParam Map<String, Object> params, HttpServletResponse response) throws Exception {
List<IcFormItemGroupDTO> list = icFormItemGroupService.list(params);
ExcelUtils.exportExcelToTarget(response, null, list, IcFormItemGroupExcel.class);
}
}
}

16
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcExportTemplateConfigDao.java

@ -0,0 +1,16 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.IcExportTemplateConfigEntity;
import org.apache.ibatis.annotations.Mapper;
/**
* 自定义表单导出模板配置项
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Mapper
public interface IcExportTemplateConfigDao extends BaseDao<IcExportTemplateConfigEntity> {
}

38
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcExportTemplateDao.java

@ -0,0 +1,38 @@
package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.dto.IcExportTemplateDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.result.IcExportTemplateForExportResultDTO;
import com.epmet.dto.result.TemplateDetailResultDTO;
import com.epmet.entity.IcExportTemplateEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Mapper
public interface IcExportTemplateDao extends BaseDao<IcExportTemplateEntity> {
List<IcExportTemplateForExportResultDTO> getTemplateConfigForExport(IcExportTemplateQueryFormDTO param);
List<IcExportTemplateDTO> selectByAgencyId(@Param("agencyId") String agencyId);
/**
* 获取模板详情
*
* @Param tempId
* @Return {@link List< TemplateDetailResultDTO>}
* @Author zhaoqifeng
* @Date 2022/4/25 16:33
*/
List<TemplateDetailResultDTO> getTemplateDetail(@Param("tempId") String tempId);
List<TemplateDetailResultDTO> getChildrenTemplateDetail(@Param("pid") String pid);
}

2
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormDao.java

@ -47,7 +47,7 @@ public interface IcFormDao extends BaseDao<IcFormEntity> {
*/
CustomerFormResultDTO selectByCode(@Param("customerId") String customerId, @Param("formCode") String formCode);
List<FormItemResult> selectItemList(@Param("formId") String formId, @Param("dynamic") Boolean dynamic);
List<FormItemResult> selectItemList(@Param("itemGroupId")String itemGroupId,@Param("formId") String formId, @Param("dynamic") Boolean dynamic);
List<FormItemResult> selectItemListByGroupId(String groupId);
List<OptionDTO> selectListOption(String itemId);

51
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java

@ -37,6 +37,17 @@ public interface IcFormItemDao extends BaseDao<IcFormItemEntity> {
List<ConditionResultDTO> selectConditionList(@Param("customerId") String customerId, @Param("formCode") String formCode);
List<ConditionResultDTO> selectConditionListByGroupId(String groupId);
/**
* 查询组件列表
*
* @param customerId
* @param formCode
* @return
*/
List<ConditionResDTO> selectConditionListGroup(@Param("customerId") String customerId, @Param("formCode") String formCode, @Param("itemIdList") List<String> itemIdList);
List<TableHeaderResultDTO> queryTableHeaderList(@Param("customerId") String customerId, @Param("formCode") String formCode);
/**
@ -44,28 +55,54 @@ public interface IcFormItemDao extends BaseDao<IcFormItemEntity> {
*
* @param customerId
* @param formCode
* @return java.util.List<com.epmet.dto.result.IcFormResColumnDTO>
* @return java.util.List<com.epmet.dto.result.IcFormResColumnDTO>
* @author yinzuomei
* @date 2021/11/1 12:58 下午
*/
List<IcFormResColumnDTO> queryConditions(@Param("customerId") String customerId, @Param("formCode")String formCode);
List<IcFormResColumnDTO> queryConditions(@Param("customerId") String customerId, @Param("formCode") String formCode);
/**
* 构造出所有子表关联语句
*
* @param customerId
* @param formCode
* @return java.util.List<java.lang.String>
* @return java.util.List<java.lang.String>
* @author yinzuomei
* @date 2021/11/1 1:25 下午
*/
List<SubTableJoinDTO> querySubTables(@Param("customerId") String customerId, @Param("formCode")String formCode);
List<SubTableJoinDTO> querySubTables(@Param("customerId") String customerId, @Param("formCode") String formCode);
Set<String> queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode")String formCode);
Set<String> queryIcResiSubTables(@Param("customerId") String customerId, @Param("formCode") String formCode);
/**
* @Author sun
* @Description 居民信息新增查询各表必填字段
**/
List<ColumnTableNameResultDTO> getMustColumn(@Param("customerId")String customerId);
}
List<ColumnTableNameResultDTO> getMustColumn(@Param("customerId") String customerId);
/**
* desc:获取需要远程获取并带有关联item的参数的 item项
*
* @param customerId
* @param formCode
* @return
*/
List<ConditionResultDTO> getConditionRemoteItems(@Param("customerId") String customerId, @Param("formCode") String formCode);
/**
* desc:根据Id获取item对应的表名和item属性
*
* @param itemId
* @return
*/
ConditionResultDTO getConditionItem(@Param("itemId") String itemId);
/**
* desc:根据客户Id 和groupId 获取item配置项
*
* @param customerId
* @param groupId
* @return
*/
List<FormItemResult> getItemListByGroupId(@Param("customerId") String customerId, @Param("groupId") String groupId);
}

1
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemOptionsDao.java

@ -41,4 +41,5 @@ public interface IcFormItemOptionsDao extends BaseDao<IcFormItemOptionsEntity> {
*/
List<String> volunteerLabelByValues(@Param("volunteers") List<String> volunteers,@Param("customerId")String customerId);
int deleteByItemId(@Param("itemId") String itemId, @Param("customerId") String customerId);
}

8
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormQueryBuilderDao.java

@ -20,6 +20,9 @@ package com.epmet.dao;
import com.epmet.commons.mybatis.dao.BaseDao;
import com.epmet.entity.IcFormQueryBuilderEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 表单查询项
@ -29,5 +32,8 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface IcFormQueryBuilderDao extends BaseDao<IcFormQueryBuilderEntity> {
IcFormQueryBuilderEntity selectDefaultQueryItem(@Param("itemId") String itemId,@Param("itemType") String itemType, @Param("queryType")String queryType);
List<String> selectItemId(@Param("customerId") String customerId, @Param("formCode") String formCode);
}

56
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcExportTemplateConfigEntity.java

@ -0,0 +1,56 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 自定义表单导出模板配置项
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_export_template_config")
public class IcExportTemplateConfigEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 模板主键id
*/
private String tempId;
/**
* 项标签
*/
private String label;
/**
* 父id
*/
private String pid;
/**
* ic_form_item.id
*/
private String itemId;
/**
* 表头宽度
*/
private Integer width;
/**
* 排序
*/
private Integer sort;
}

51
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcExportTemplateEntity.java

@ -0,0 +1,51 @@
package com.epmet.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.epmet.commons.mybatis.entity.BaseEpmetEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("ic_export_template")
public class IcExportTemplateEntity extends BaseEpmetEntity {
private static final long serialVersionUID = 1L;
/**
* 客户id
*/
private String customerId;
/**
* 所属机关IDcustomer_agency.id
*/
private String agencyId;
/**
* 所有上级组织机构ID(以英文:隔开)包含本身id
*/
private String pids;
/**
* 表单CODE从字典获取
*/
private String formCode;
/**
* 模板名称
*/
private String name;
/**
* 排序
*/
private Integer sort;
}

20
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcFormQueryBuilderEntity.java

@ -45,6 +45,11 @@ public class IcFormQueryBuilderEntity extends BaseEpmetEntity {
*/
private String formItemId;
/**
* 项标签
*/
private String label;
/**
* ic_form.form_code举例resi_base_info
* @see com.epmet.commons.tools.enums.IcFormCodeEnum
@ -52,11 +57,26 @@ public class IcFormQueryBuilderEntity extends BaseEpmetEntity {
*/
private String formCode;
/**
* 组件类型
*/
private String itemType;
/**
* 查询类型: equal, like,daterange....
*/
private String queryType;
/**
* 值转换类型
*/
private String funType;
/**
* 手机号mobile; 身份证id_card只能输入数字:num
*/
private String validType;
/**
* 排序
*/

21
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcExportTemplateConfigService.java

@ -0,0 +1,21 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.entity.IcExportTemplateConfigEntity;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
public interface IcExportTemplateConfigService extends BaseService<IcExportTemplateConfigEntity> {
/**
* 删除模板配置
* @Param tempId
* @Return
* @Author zhaoqifeng
* @Date 2022/4/26 9:56
*/
void deleteByTempId(String tempId);
}

104
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcExportTemplateService.java

@ -0,0 +1,104 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.dto.IcExportTemplateDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.dto.result.IcCustomExportResultDTO;
import com.epmet.dto.result.IcExportTemplateForExportResultDTO;
import com.epmet.dto.result.TemplateDetailResultDTO;
import com.epmet.entity.IcExportTemplateEntity;
import java.util.List;
import java.util.Map;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
public interface IcExportTemplateService extends BaseService<IcExportTemplateEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IcExportTemplateDTO>
* @author generator
* @date 2022-04-21
*/
PageData<IcExportTemplateDTO> page(Map<String, Object> params);
/**
* 默认查询
*
* @param params
* @return java.util.List<IcExportTemplateDTO>
* @author generator
* @date 2022-04-21
*/
List<IcExportTemplateDTO> list(Map<String, Object> params);
/**
* 单条查询
*
* @param id
* @return IcExportTemplateDTO
* @author generator
* @date 2022-04-21
*/
IcExportTemplateDTO get(String id);
/**
* 默认保存
*
* @param formDTO
* @return void
* @author generator
* @date 2022-04-21
*/
List<IcExportTemplateForExportResultDTO> save(IcExportTemplateSaveFormDTO formDTO);
/**
* 批量删除
*
* @param ids
* @return void
* @author generator
* @date 2022-04-21
*/
void delete(String userId, String[] ids);
/**
* desc: 获取导出配置
*
* @param param
* @return java.util.List<com.epmet.dto.result.IcExportTemplateForExportResultDTO>
* @author LiuJanJun
* @date 2022/4/22 3:55 下午
*/
IcCustomExportResultDTO getTemplateConfigForExport(IcExportTemplateQueryFormDTO param);
/**
* 获取模板列表
*
* @Param tokenDto
* @Return {@link List< IcExportTemplateDTO>}
* @Author zhaoqifeng
* @Date 2022/4/25 14:29
*/
List<IcExportTemplateDTO> getTemplateList(TokenDto tokenDto, IcExportTemplateDTO formDTO);
/**
* 获取模板详情
*
* @Param formDTO
* @Return {@link List< TemplateDetailResultDTO>}
* @Author zhaoqifeng
* @Date 2022/4/25 16:29
*/
List<TemplateDetailResultDTO> getTemplateDetail(IcExportTemplateDTO formDTO);
}

17
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemGroupService.java

@ -18,12 +18,11 @@
package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.commons.tools.page.PageData;
import com.epmet.dto.IcFormItemGroupDTO;
import com.epmet.dto.form.IcFormItemGroupLisFormDTO;
import com.epmet.entity.IcFormItemGroupEntity;
import java.util.List;
import java.util.Map;
/**
* 表单项分组
@ -33,16 +32,6 @@ import java.util.Map;
*/
public interface IcFormItemGroupService extends BaseService<IcFormItemGroupEntity> {
/**
* 默认分页
*
* @param params
* @return PageData<IcFormItemGroupDTO>
* @author generator
* @date 2021-10-26
*/
PageData<IcFormItemGroupDTO> page(Map<String, Object> params);
/**
* 默认查询
*
@ -51,7 +40,7 @@ public interface IcFormItemGroupService extends BaseService<IcFormItemGroupEntit
* @author generator
* @date 2021-10-26
*/
List<IcFormItemGroupDTO> list(Map<String, Object> params);
List<IcFormItemGroupDTO> list(IcFormItemGroupLisFormDTO params);
/**
* 单条查询
@ -92,4 +81,4 @@ public interface IcFormItemGroupService extends BaseService<IcFormItemGroupEntit
* @date 2021-10-26
*/
void delete(String[] ids);
}
}

29
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java

@ -19,6 +19,7 @@ package com.epmet.service;
import com.epmet.commons.mybatis.service.BaseService;
import com.epmet.dto.form.CustomerFormQueryDTO;
import com.epmet.dto.form.EditIFormItemFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcFormItemEntity;
@ -42,6 +43,8 @@ public interface IcFormItemService extends BaseService<IcFormItemEntity> {
*/
List<ConditionResultDTO> queryConditionList(CustomerFormQueryDTO formDto);
List<ConditionResDTO> queryConditionListByGroup(CustomerFormQueryDTO formDto);
List<TableHeaderResultDTO> queryTableHeaderList(CustomerFormQueryDTO formDto);
List<IcFormResColumnDTO> queryConditions(String customerId,String formCode);
@ -62,4 +65,30 @@ public interface IcFormItemService extends BaseService<IcFormItemEntity> {
* @return
*/
List<ResiCategoryItemResultDTO> listResiCategoryItems(String customerId);
/**
* 修改组件的类型
* 来源于需求
* 16所患大病所患慢病更改为下拉框选择慢病类型高血压类风湿心脏病肝硬化糖尿病其他大病类别恶性肿瘤肾功能衰竭肝硬化或急性肝坏死脑中风急性心机梗塞急性坏死性胰腺炎器官移植系统性红斑狼疮再生障碍性贫血其他
* 17人户状况更改为下拉框选择类别人户一致人在户不在户在人不在
* 18居住情况类别缺少针对夫妻两人居住的类别增加其他分类类别与子女同住空巢独居其他
*
* @param formDTO
* @return
*/
void editItemType(EditIFormItemFormDTO formDTO);
/**
* 初始化默认的查询组件ic_form_item.SEARCH_DISPLAY='1'
* @param customerId
*/
void initQueryBuilder(String customerId);
/**
* desc:根据groupId 获取itemlist
* @param customerId
* @param groupId
* @return
*/
List<FormItemResult> getItemListByGroupId(String customerId, String groupId);
}

38
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateConfigServiceImpl.java

@ -0,0 +1,38 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.dao.IcExportTemplateConfigDao;
import com.epmet.entity.IcExportTemplateConfigEntity;
import com.epmet.service.IcExportTemplateConfigService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Slf4j
@Service
public class IcExportTemplateConfigServiceImpl extends BaseServiceImpl<IcExportTemplateConfigDao, IcExportTemplateConfigEntity> implements IcExportTemplateConfigService {
/**
* 删除模板配置
*
* @param tempId
* @Param tempId
* @Return
* @Author zhaoqifeng
* @Date 2022/4/26 9:56
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteByTempId(String tempId) {
LambdaQueryWrapper<IcExportTemplateConfigEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcExportTemplateConfigEntity::getTempId, tempId);
baseDao.delete(wrapper);
}
}

322
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java

@ -0,0 +1,322 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.AppClientConstant;
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.form.IcExportItemListFormDTO;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.exception.EpmetException;
import com.epmet.commons.tools.exception.RenException;
import com.epmet.commons.tools.page.PageData;
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.EpmetRequestHolder;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.AddGroup;
import com.epmet.dao.IcExportTemplateDao;
import com.epmet.dao.IcFormItemDao;
import com.epmet.dto.IcExportTemplateDTO;
import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.result.ConditionResultDTO;
import com.epmet.dto.result.IcCustomExportResultDTO;
import com.epmet.dto.result.IcExportTemplateForExportResultDTO;
import com.epmet.dto.result.TemplateDetailResultDTO;
import com.epmet.entity.IcExportTemplateConfigEntity;
import com.epmet.entity.IcExportTemplateEntity;
import com.epmet.service.IcExportTemplateConfigService;
import com.epmet.service.IcExportTemplateService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
/**
* 自定义表单导出模板
*
* @author generator generator@elink-cn.com
* @since v1.0.0 2022-04-21
*/
@Slf4j
@Service
public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplateDao, IcExportTemplateEntity> implements IcExportTemplateService {
@Autowired
private IcExportTemplateDao icExportTemplateDao;
@Autowired
private IcFormItemDao icFormItemDao;
@Autowired
private IcExportTemplateConfigService icExportTemplateConfigService;
@Override
public PageData<IcExportTemplateDTO> page(Map<String, Object> params) {
IPage<IcExportTemplateEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, IcExportTemplateDTO.class);
}
@Override
public List<IcExportTemplateDTO> list(Map<String, Object> params) {
List<IcExportTemplateEntity> entityList = baseDao.selectList(getWrapper(params));
return ConvertUtils.sourceToTarget(entityList, IcExportTemplateDTO.class);
}
private QueryWrapper<IcExportTemplateEntity> getWrapper(Map<String, Object> params) {
String id = (String) params.get(FieldConstant.ID_HUMP);
QueryWrapper<IcExportTemplateEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public IcExportTemplateDTO get(String id) {
IcExportTemplateEntity entity = baseDao.selectById(id);
return ConvertUtils.sourceToTarget(entity, IcExportTemplateDTO.class);
}
@Override
@Transactional(rollbackFor = Exception.class)
public List<IcExportTemplateForExportResultDTO> save(IcExportTemplateSaveFormDTO formDTO) {
//效验数据
ValidatorUtils.validateEntity(formDTO, AddGroup.class);
List<IcExportTemplateForExportResultDTO> resultList = new ArrayList<>();
IcExportTemplateEntity tempEntity = new IcExportTemplateEntity();
List<IcExportTemplateConfigEntity> itemList = new ArrayList<>();
String customerId = EpmetRequestHolder.getHeader(AppClientConstant.CUSTOMER_ID);
String staffId = EpmetRequestHolder.getHeader(AppClientConstant.USER_ID);
//1.获取工作人员所属组织缓存信息
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(customerId, staffId);
if (null == staffInfo) {
throw new EpmetException(String.format("查询工作人员%s缓存信息失败...", EpmetRequestHolder.getHeader(AppClientConstant.USER_ID)));
}
AgencyInfoCache agencyInfo = CustomerOrgRedis.getAgencyInfo(staffInfo.getAgencyId());
if (null == agencyInfo) {
throw new RenException(String.format("获取组织缓存信息失败%s", staffInfo.getAgencyId()));
}
//2.根据是否保存判断查询当前组织已存在模板的最大sort值
int sort = 1;
String tempId = "";
if (formDTO.getIsSaveTemp()) {
List<IcExportTemplateDTO> templist = baseDao.selectByAgencyId(agencyInfo.getId());
if (!CollectionUtils.isEmpty(templist)) {
sort = templist.get(NumConstant.ZERO).getSort() + NumConstant.ONE;
}
tempId = UUID.randomUUID().toString().replace("-", "");
tempEntity.setId(tempId);
tempEntity.setCustomerId(customerId);
tempEntity.setAgencyId(agencyInfo.getId());
tempEntity.setPids(StringUtils.isEmpty(agencyInfo.getPids()) ? agencyInfo.getId() : agencyInfo.getPids() + ":" + agencyInfo.getId());
tempEntity.setFormCode(formDTO.getFormCode());
tempEntity.setName(formDTO.getName());
/*tempEntity.setType();
tempEntity.setUrl();*/
tempEntity.setSort(sort);
}
//3.递归遍历组装待保存和待返回数据对象【目前业务表单项是两层,此方法支持多层】
packageData(formDTO.getItemList(), "0", customerId, tempId, resultList, itemList);
//4.执行数据保存
if (formDTO.getIsSaveTemp()) {
baseDao.insert(tempEntity);
icExportTemplateConfigService.insertBatch(itemList);
}
//5.返回组装数据对象
return resultList;
}
/**
* @Author sun
* @Description 递归处理可能存在的多层表单数据[目前业务上是两次]
**/
private void packageData(List<IcExportItemListFormDTO> dataList, String pid, String customerId, String tempId,
List<IcExportTemplateForExportResultDTO> resultList, List<IcExportTemplateConfigEntity> itemList) {
int num = 0;
//1.遍历一级表单项
for (IcExportItemListFormDTO dto : dataList) {
IcExportTemplateConfigEntity itemEntity = ConvertUtils.sourceToTarget(dto, IcExportTemplateConfigEntity.class);
itemEntity.setId(UUID.randomUUID().toString().replace("-", ""));
itemEntity.setPid(pid);
itemEntity.setCustomerId(customerId);
itemEntity.setTempId(tempId);
num += 1;
itemEntity.setSort(num);
itemList.add(itemEntity);
IcExportTemplateForExportResultDTO resultDTO = ConvertUtils.sourceToTarget(dto, IcExportTemplateForExportResultDTO.class);
resultDTO.setId(itemEntity.getId());
resultDTO.setPid(itemEntity.getPid());
resultDTO.setSort(itemEntity.getSort());
resultList.add(resultDTO);
//2.递归遍历子集表单项
if (!CollectionUtils.isEmpty(dto.getChildren())) {
packageData(dto.getChildren(), itemEntity.getId(), customerId, tempId, resultList, itemList);
}
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public void delete(String userId, String[] ids) {
// 逻辑删除(@TableLogic 注解)
List<String> idList = Arrays.asList(ids);
idList.forEach(id -> {
IcExportTemplateEntity entity = baseDao.selectById(id);
if (!userId.equals(entity.getCreatedBy())) {
throw new EpmetException("只能删除自己创建的模板");
}
});
baseDao.deleteBatchIds(idList);
idList.forEach(id -> {
icExportTemplateConfigService.deleteByTempId(id);
});
}
@Override
public IcCustomExportResultDTO getTemplateConfigForExport(IcExportTemplateQueryFormDTO param) {
String tempId = param.getTempId();
List<IcExportTemplateForExportResultDTO> list = null;
if (StringUtils.isNotBlank(tempId)){
list = icExportTemplateDao.getTemplateConfigForExport(param);
}else {
list = this.save(param.getExportConfig());
}
if (CollectionUtils.isEmpty(list)) {
return null;
}
//todo 删除多余的方法
// List<ConditionResultDTO> remoteItemList = icFormItemDao.getConditionRemoteItems(param.getCustomerId(), param.getFormCode());
Map<String, List<IcExportTemplateForExportResultDTO>> resultTemp = list.stream().collect(Collectors.groupingBy(IcExportTemplateForExportResultDTO::getPid, LinkedHashMap::new, Collectors.toList()));
List<List<String>> headerList = new ArrayList<>();
List<IcCustomExportResultDTO.SqlColumn> showSqlColumns = new ArrayList<>();
List<IcCustomExportResultDTO.SqlColumn> hiddenSqlColumns = new ArrayList<>();
Set<String> hasExistColumnSet = new HashSet<>();
resultTemp.get(NumConstant.ZERO_STR).forEach(root -> {
digui(resultTemp, root, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet);
});
//组织 关联item项的
if (hasExistColumnSet.size() > NumConstant.ZERO) {
Set<String> configItemIdSet = list.stream().map(IcExportTemplateForExportResultDTO::getItemId).collect(Collectors.toSet());
Set<String> conditionItemIdSet = new HashSet<>(hasExistColumnSet);
conditionItemIdSet.removeAll(configItemIdSet);
conditionItemIdSet.forEach(itemId -> {
ConditionResultDTO item = icFormItemDao.getConditionItem(itemId);
if (item == null || StringUtils.isBlank(item.getColumnName())) {
log.error("getTemplateConfigForExport item 不存在 id:{}", itemId);
return;
}
hiddenSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(item.getItemId(),item.getTableName(), item.isSupportAdd(),item.getColumnName(),item.getOptionSourceType()));
});
}
IcCustomExportResultDTO result = new IcCustomExportResultDTO();
result.setHeaders(headerList);
result.setShowSqlColumns(showSqlColumns);
result.setHiddenSqlColumns(hiddenSqlColumns);
return result;
}
/**
* 获取模板列表
*
* @param tokenDto
* @Param tokenDto
* @Return {@link List< IcExportTemplateDTO>}
* @Author zhaoqifeng
* @Date 2022/4/25 14:29
*/
@Override
public List<IcExportTemplateDTO> getTemplateList(TokenDto tokenDto, IcExportTemplateDTO formDTO) {
CustomerStaffInfoCacheResult staffInfo = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), tokenDto.getUserId());
if (null == staffInfo) {
throw new EpmetException("获取工作人员信息失败");
}
LambdaQueryWrapper<IcExportTemplateEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcExportTemplateEntity::getAgencyId, staffInfo.getAgencyId());
wrapper.eq(IcExportTemplateEntity::getFormCode, formDTO.getFormCode());
wrapper.orderByAsc(IcExportTemplateEntity::getSort);
List<IcExportTemplateEntity> list = baseDao.selectList(wrapper);
List<IcExportTemplateDTO> result = new ArrayList<>();
if (CollectionUtils.isNotEmpty(list)) {
result = list.stream().map(item -> {
IcExportTemplateDTO dto = new IcExportTemplateDTO();
dto.setId(item.getId());
dto.setName(item.getName());
dto.setCreatedTime(item.getCreatedTime());
CustomerStaffInfoCacheResult staff = CustomerStaffRedis.getStaffInfo(tokenDto.getCustomerId(), item.getCreatedBy());
if (null == staff) {
throw new EpmetException("获取工作人员信息失败");
}
dto.setCreatedBy(staff.getRealName());
if (tokenDto.getUserId().equals(item.getCreatedBy())) {
dto.setIsSelf(NumConstant.ONE);
} else {
dto.setIsSelf(NumConstant.ZERO);
}
return dto;
}).collect(Collectors.toList());
}
return result;
}
/**
* 获取模板详情
*
* @param formDTO
* @Param formDTO
* @Return {@link List< TemplateDetailResultDTO >}
* @Author zhaoqifeng
* @Date 2022/4/25 16:29
*/
@Override
public List<TemplateDetailResultDTO> getTemplateDetail(IcExportTemplateDTO formDTO) {
return baseDao.getTemplateDetail(formDTO.getId());
}
private void digui(Map<String, List<IcExportTemplateForExportResultDTO>> resultTemp, IcExportTemplateForExportResultDTO root, List<List<String>> headerList, List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, List<IcCustomExportResultDTO.SqlColumn> hiddenSqlColumns, Set<String> hasExistColumnSet) {
if (StringUtils.isNotBlank(root.getColumnName())) {
showSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(root.getItemId(),root.getTableName(),root.isSupportAdd(), root.getColumnName(),root.getOptionSourceType()));
if (StringUtils.isNotBlank(root.getOptionSourceValue())&&root.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)) {
String[] paramArr = root.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK);
//先remote中再添加 然后移除item中有的
hasExistColumnSet.addAll(Arrays.asList(paramArr));
}
}
List<IcExportTemplateForExportResultDTO> children = resultTemp.get(root.getId());
if (CollectionUtils.isEmpty(children)) {
return;
}
children.forEach(o -> {
List<String> headerGroupList = new ArrayList<>();
headerGroupList.add(root.getLabel());
headerGroupList.add(o.getLabel());
headerList.add(headerGroupList);
digui(resultTemp, o, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet);
});
}
}

34
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemGroupServiceImpl.java

@ -17,23 +17,19 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.epmet.commons.mybatis.service.impl.BaseServiceImpl;
import com.epmet.commons.tools.constant.FieldConstant;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.dao.IcFormItemGroupDao;
import com.epmet.dto.IcFormItemGroupDTO;
import com.epmet.dto.form.IcFormItemGroupLisFormDTO;
import com.epmet.entity.IcFormItemGroupEntity;
import com.epmet.service.IcFormItemGroupService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
* 表单项分组
@ -46,29 +42,15 @@ public class IcFormItemGroupServiceImpl extends BaseServiceImpl<IcFormItemGroupD
@Override
public PageData<IcFormItemGroupDTO> page(Map<String, Object> params) {
IPage<IcFormItemGroupEntity> page = baseDao.selectPage(
getPage(params, FieldConstant.CREATED_TIME, false),
getWrapper(params)
);
return getPageData(page, IcFormItemGroupDTO.class);
}
@Override
public List<IcFormItemGroupDTO> list(Map<String, Object> params) {
List<IcFormItemGroupEntity> entityList = baseDao.selectList(getWrapper(params));
public List<IcFormItemGroupDTO> list(IcFormItemGroupLisFormDTO params) {
LambdaQueryWrapper<IcFormItemGroupEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(IcFormItemGroupEntity::getCustomerId, params.getCustomerId())
.orderByAsc(IcFormItemGroupEntity::getSort);
List<IcFormItemGroupEntity> entityList = baseDao.selectList(wrapper);
return ConvertUtils.sourceToTarget(entityList, IcFormItemGroupDTO.class);
}
private QueryWrapper<IcFormItemGroupEntity> getWrapper(Map<String, Object> params){
String id = (String)params.get(FieldConstant.ID_HUMP);
QueryWrapper<IcFormItemGroupEntity> wrapper = new QueryWrapper<>();
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id);
return wrapper;
}
@Override
public IcFormItemGroupDTO get(String id) {
@ -97,4 +79,4 @@ public class IcFormItemGroupServiceImpl extends BaseServiceImpl<IcFormItemGroupD
baseDao.deleteBatchIds(Arrays.asList(ids));
}
}
}

158
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java

@ -18,18 +18,33 @@
package com.epmet.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.constant.StrConstant;
import com.epmet.commons.tools.enums.DictTypeEnum;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dao.IcFormItemDao;
import com.epmet.dao.IcFormItemOptionsDao;
import com.epmet.dao.IcFormQueryBuilderDao;
import com.epmet.dto.form.CustomerFormQueryDTO;
import com.epmet.dto.form.EditIFormItemFormDTO;
import com.epmet.dto.result.*;
import com.epmet.entity.IcFormItemEntity;
import com.epmet.entity.IcFormItemOptionsEntity;
import com.epmet.entity.IcFormQueryBuilderEntity;
import com.epmet.feign.EpmetAdminOpenFeignClient;
import com.epmet.service.IcFormItemService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
@ -39,8 +54,15 @@ import java.util.stream.Collectors;
* @author generator generator@elink-cn.com
* @since v1.0.0 2021-10-26
*/
@Slf4j
@Service
public class IcFormItemServiceImpl extends BaseServiceImpl<IcFormItemDao, IcFormItemEntity> implements IcFormItemService {
@Autowired
private IcFormItemOptionsDao icFormItemOptionsDao;
@Autowired
private IcFormQueryBuilderDao icFormQueryBuilderDao;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
/**
* 获取居民信息的查询条件组件列表
@ -56,6 +78,16 @@ public class IcFormItemServiceImpl extends BaseServiceImpl<IcFormItemDao, IcForm
return list;
}
@Override
public List<ConditionResDTO> queryConditionListByGroup(CustomerFormQueryDTO formDto) {
List<String> itemIdList=icFormQueryBuilderDao.selectItemId(formDto.getCustomerId(),formDto.getFormCode());
if(CollectionUtils.isEmpty(itemIdList)){
return new ArrayList<>();
}
List<ConditionResDTO> list=baseDao.selectConditionListGroup(formDto.getCustomerId(),formDto.getFormCode(),itemIdList);
return list;
}
/**
* 居民信息列表_表头
* @param formDto
@ -152,4 +184,130 @@ public class IcFormItemServiceImpl extends BaseServiceImpl<IcFormItemDao, IcForm
return d;
}).collect(Collectors.toList());
}
/**
* 修改组件的类型
* 来源于需求
* 16所患大病所患慢病更改为下拉框选择慢病类型高血压类风湿心脏病肝硬化糖尿病其他大病类别恶性肿瘤肾功能衰竭肝硬化或急性肝坏死脑中风急性心机梗塞急性坏死性胰腺炎器官移植系统性红斑狼疮再生障碍性贫血其他
* 17人户状况更改为下拉框选择类别人户一致人在户不在户在人不在
* 18居住情况类别缺少针对夫妻两人居住的类别增加其他分类类别与子女同住空巢独居其他
*
* @param formDTO
* @return
*/
@Override
public void editItemType(EditIFormItemFormDTO formDTO) {
LambdaQueryWrapper<IcFormItemEntity> queryWrapper = new QueryWrapper<IcFormItemEntity>().lambda()
.eq(StringUtils.isNotBlank(formDTO.getCustomerId()), IcFormItemEntity::getCustomerId, formDTO.getCustomerId())
.eq(StringUtils.isNotBlank(formDTO.getFormItemId()), IcFormItemEntity::getId, formDTO.getFormItemId())
.eq(IcFormItemEntity::getLabel, formDTO.getLabel());
List<IcFormItemEntity> list = baseDao.selectList(queryWrapper);
if (CollectionUtils.isEmpty(list)) {
return;
}
for (IcFormItemEntity entity : list) {
//修改组件类型
entity.setItemType(formDTO.getItemType());
baseDao.updateById(entity);
if (!CollectionUtils.isEmpty(formDTO.getOptions())) {
icFormItemOptionsDao.deleteByItemId(entity.getId(), entity.getCustomerId());
int sort = 1;
for (OptionDTO optionDTO : formDTO.getOptions()) {
IcFormItemOptionsEntity optionsEntity = new IcFormItemOptionsEntity();
optionsEntity.setCustomerId(entity.getCustomerId());
optionsEntity.setFormCode(entity.getFormCode());
optionsEntity.setFormId(entity.getFormId());
optionsEntity.setItemId(entity.getId());
optionsEntity.setOptionLabel(optionDTO.getLabel());
optionsEntity.setOptionValue(optionDTO.getValue());
optionsEntity.setSort(sort);
icFormItemOptionsDao.insert(optionsEntity);
sort++;
}
}
}
}
/**
* 初始化默认的查询组件ic_form_item.SEARCH_DISPLAY='1'
*
* @param customerId
*/
@Override
public void initQueryBuilder(String customerId) {
//查询所有的查询组件
LambdaQueryWrapper<IcFormItemEntity> queryWrapper = new QueryWrapper<IcFormItemEntity>().lambda()
.eq(StringUtils.isNotBlank(customerId), IcFormItemEntity::getCustomerId, customerId)
.isNotNull(IcFormItemEntity::getColumnName)
.eq(IcFormItemEntity::getSearchDisplay, NumConstant.ONE);
List<IcFormItemEntity> itemList = baseDao.selectList(queryWrapper);
if (CollectionUtils.isEmpty(itemList)) {
return;
}
for (IcFormItemEntity item : itemList) {
IcFormQueryBuilderEntity builderEntity = new IcFormQueryBuilderEntity();
builderEntity.setCustomerId(item.getCustomerId());
builderEntity.setFormItemId(item.getId());
builderEntity.setLabel(item.getLabel());
builderEntity.setFormCode(item.getFormCode());
builderEntity.setItemType(item.getItemType());
builderEntity.setQueryType(queryType(item.getItemType()));
builderEntity.setFunType(StrConstant.EPMETY_STR);
builderEntity.setSort(item.getSort());
builderEntity.setCreatedBy("init");
builderEntity.setUpdatedBy("init");
//item默认的查询组件已经有了,就不插入了
IcFormQueryBuilderEntity entity = icFormQueryBuilderDao.selectDefaultQueryItem(item.getId(), item.getItemType(), builderEntity.getQueryType());
if (null == entity) {
icFormQueryBuilderDao.insert(builderEntity);
}
}
}
@Override
public List<FormItemResult> getItemListByGroupId(String customerId, String groupId) {
return baseDao.getItemListByGroupId(customerId,groupId);
}
private String queryType(String itemType) {
/*switch (itemType) {
case "select":
queryType = "equal";
break;
case "input":
queryType = "like";
break;
case "datepicker":
queryType = "daterange";
break;
case "textarea":
queryType = "like";
break;
case "radio":
queryType = "equal";
break;
//多选的,查询时应该是 and (columnname like '%XXX%' or columnname like '%XXX%')
case "checkbox":
queryType = "list_equal";
break;
case "daterange":
queryType = "daterange";
break;
case "cascader":
queryType = "equal";
break;
default:
queryType = "like";
}*/
String queryType = "like";
Result<Map<String, String>> queryTypeMap = adminOpenFeignClient.dictMap(DictTypeEnum.ITEM_TYPE_QUERY.getCode());
if (queryTypeMap.success() && MapUtils.isNotEmpty(queryTypeMap.getData())) {
queryType = queryTypeMap.getData().get(itemType);
}
log.warn("itemType="+itemType+";queryType="+queryType);
return queryType;
}
}

3
epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormServiceImpl.java

@ -99,7 +99,8 @@ public class IcFormServiceImpl extends BaseServiceImpl<IcFormDao, IcFormEntity>
if (null == resultDTO) {
throw new RenException(EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getCode(), EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getMsg());
}
List<FormItemResult> itemList = baseDao.selectItemList(resultDTO.getFormId(), formDto.getDynamic());
String itemGroupId=formDto.getCustomerId().concat(StrConstant.UNDER_LINE).concat(NumConstant.ZERO_STR);
List<FormItemResult> itemList = baseDao.selectItemList(itemGroupId,resultDTO.getFormId(), formDto.getDynamic());
List<FormGroupDTO> groupList = baseDao.selectListGroup(resultDTO.getFormId());
resultDTO.setItemList(itemList);
resultDTO.setGroupList(groupList);

13
epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.21__addcol_item_build.sql

@ -0,0 +1,13 @@
alter table ic_form_query_builder add COLUMN ITEM_TYPE VARCHAR(32) NOT NULL COMMENT '组件类型' after FORM_CODE;
alter table ic_form_query_builder add COLUMN LABEL VARCHAR(32) NOT NULL COMMENT '项标签' after FORM_ITEM_ID;
alter table ic_form_query_builder add COLUMN FUN_TYPE VARCHAR(32) COMMENT '值转换类型' after QUERY_TYPE;
update ic_form_query_builder set item_type=(
select i.ITEM_TYPE from ic_form_item i where i.id=FORM_ITEM_ID
and i.CUSTOMER_ID=CUSTOMER_ID
)where DEL_FLAG='0';
update ic_form_query_builder set LABEL=(
select i.LABEL from ic_form_item i where i.id=FORM_ITEM_ID
and i.CUSTOMER_ID=CUSTOMER_ID
)where DEL_FLAG='0';

8
epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.22__update_search_col.sql

@ -0,0 +1,8 @@
update ic_form_item set SEARCH_DISPLAY='1',UPDATED_BY='YZM',UPDATED_TIME=NOW()
WHERE DEL_FLAG='0'
AND SEARCH_DISPLAY='0'
AND LABEL IN(
'文化程度','兴趣特长','残疾类别','残疾等级','所患大病','所患慢性病',
'是否参保','救助金额','人户状况','户籍所在地','居住情况','该居民有无赡养人',
'需求类别','参战时间','是否办理公益性岗位','志愿者类别','特殊人群类别'
);

18
epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.23__update_group_sort.sql

@ -0,0 +1,18 @@
update ic_form_item_group set SORT='0' where DEL_FLAG='0' and LABEL='基础信息';
update ic_form_item_group set SORT='1' where DEL_FLAG='0' and LABEL='教育信息';
update ic_form_item_group set SORT='2' where DEL_FLAG='0' and LABEL='兴趣爱好';
update ic_form_item_group set SORT='3' where DEL_FLAG='0' and LABEL='宗教信仰';
update ic_form_item_group set SORT='4' where DEL_FLAG='0' and LABEL='健康信息';
update ic_form_item_group set SORT='5' where DEL_FLAG='0' and LABEL='工作信息';
update ic_form_item_group set SORT='6' where DEL_FLAG='0' and LABEL='经济状况';
update ic_form_item_group set SORT='7' where DEL_FLAG='0' and LABEL='居住信息';
update ic_form_item_group set SORT='8' where DEL_FLAG='0' and LABEL='家庭信息';
update ic_form_item_group set SORT='9' where DEL_FLAG='0' and LABEL='党员信息';
update ic_form_item_group set SORT='10' where DEL_FLAG='0' and LABEL='保障房信息';
update ic_form_item_group set SORT='11' where DEL_FLAG='0' and LABEL='失业信息';
update ic_form_item_group set SORT='12' where DEL_FLAG='0' and LABEL='退役军人信息';
update ic_form_item_group set SORT='13' where DEL_FLAG='0' and LABEL='志愿者信息';
update ic_form_item_group set SORT='14' where DEL_FLAG='0' and LABEL='特殊人群信息';
update ic_form_item_group set SORT='15' where DEL_FLAG='0' and LABEL='统战人员';
update ic_form_item_group set SORT='16' where DEL_FLAG='0' and LABEL='老年人信息';
update ic_form_item_group set SORT='17' where DEL_FLAG='0' and LABEL='居民需求信息';

6
epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.24__add_validtype_forbuild.sql

@ -0,0 +1,6 @@
alter table ic_form_query_builder add COLUMN VALID_TYPE VARCHAR(32) COMMENT '手机号:mobile; 身份证:id_card;只能输入数字:num' after FUN_TYPE;
update ic_form_query_builder set VALID_TYPE=(
select i.VALID_TYPE from ic_form_item i where i.id=FORM_ITEM_ID
and i.CUSTOMER_ID=CUSTOMER_ID
)where DEL_FLAG='0';

48
epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.25__add_export_temp.sql

@ -0,0 +1,48 @@
CREATE TABLE `ic_export_template` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL DEFAULT '' COMMENT '客户id',
`AGENCY_ID` varchar(64) NOT NULL COMMENT '所属机关ID(customer_agency.id)',
`PIDS` varchar(1024) DEFAULT NULL COMMENT '所有上级组织机构ID(以英文:隔开)包含本身id',
`FORM_CODE` varchar(32) NOT NULL COMMENT '表ic_form中的CODE',
`NAME` varchar(64) NOT NULL DEFAULT '' COMMENT '模板名称',
`SORT` int(11) NOT NULL COMMENT '排序',
`DEL_FLAG` int(10) NOT NULL COMMENT '0未删除,1已删除',
`REVISION` int(10) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义表单导出模板';
CREATE TABLE `ic_export_template_config` (
`ID` varchar(64) NOT NULL COMMENT '主键',
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id',
`TEMP_ID` varchar(64) NOT NULL COMMENT '模板主键id',
`PID` varchar(64) NOT NULL DEFAULT '0' COMMENT '当前表的id',
`ITEM_ID` varchar(64) NOT NULL DEFAULT '' COMMENT 'ic_form_item.id',
`WIDTH` int(4) DEFAULT NULL COMMENT '表头宽度',
`LABEL` varchar(32) NOT NULL COMMENT '项标签',
`SORT` int(11) NOT NULL COMMENT '排序',
`DEL_FLAG` int(10) NOT NULL COMMENT '0未删除,1已删除',
`REVISION` int(10) NOT NULL COMMENT '乐观锁',
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人',
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间',
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人',
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`ID`) USING BTREE,
KEY `idx_temp_id` (`TEMP_ID`) USING BTREE COMMENT '模板主键Id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义表单导出模板配置项';
#add 基础信息group
INSERT INTO ic_form_item_group
SELECT DISTINCT CONCAT( CUSTOMER_ID, '_0' ) ID, CUSTOMER_ID, `FORM_ID`, `FORM_CODE`, `TABLE_NAME`, `SUPPORT_ADD`, '基础信息' AS `LABEL`, 0 AS `SORT`, 0 AS `DISPLAY`, `DEL_FLAG`, `REVISION`, 'ljj' AS `CREATED_BY`, NOW() CREATED_TIME, 'ljj' AS `UPDATED_BY`, NOW() AS UPDATED_TIME
FROM ic_form_item_group WHERE DEL_FLAG = '0'
GROUP BY customer_id;
#更新 0分组为0 groupId
UPDATE ic_form_item m set m.ITEM_GROUP_ID = CONCAT(m.CUSTOMER_ID,'_',m.ITEM_GROUP_ID) WHERE m.ITEM_GROUP_ID = '0';
#更新表名
UPDATE ic_form_item_group SET TABLE_NAME='ic_resi_user' where (TABLE_NAME='' or TABLE_NAME is null) and DEL_FLAG='0';

24
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateConfigDao.xml

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.IcExportTemplateConfigDao">
<resultMap type="com.epmet.entity.IcExportTemplateConfigEntity" id="icExportTemplateConfigMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="tempId" column="TEMP_ID"/>
<result property="pid" column="PID"/>
<result property="itemId" column="FORM_ITEM_ID"/>
<result property="width" column="WIDTH"/>
<result property="label" column="LABEL"/>
<result property="sort" column="SORT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
</mapper>

88
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml

@ -0,0 +1,88 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.epmet.dao.IcExportTemplateDao">
<resultMap type="com.epmet.entity.IcExportTemplateEntity" id="icExportTemplateMap">
<result property="id" column="ID"/>
<result property="customerId" column="CUSTOMER_ID"/>
<result property="formCode" column="FORM_CODE"/>
<result property="name" column="NAME"/>
<result property="sort" column="SORT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
<result property="createdBy" column="CREATED_BY"/>
<result property="createdTime" column="CREATED_TIME"/>
<result property="updatedBy" column="UPDATED_BY"/>
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="getTemplateConfigForExport" resultType="com.epmet.dto.result.IcExportTemplateForExportResultDTO">
SELECT
c.ID,
c.TEMP_ID,
c.LABEL,
c.PID,
c.sort,
ifi.ID AS itemId,
ifig.TABLE_NAME,
ifig.SUPPORT_ADD,
concat(ifi.COLUMN_NAME,if(ifi.COLUMN_NUM = 0,'',ifi.COLUMN_NUM)) columnName,
ifi.OPTION_SOURCE_TYPE,
ifi.OPTION_SOURCE_VALUE
FROM ic_export_template_config c
LEFT JOIN ic_form_item ifi ON c.ITEM_ID = ifi.ID
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE TEMP_ID = #{tempId} and c.CUSTOMER_ID = #{customerId} and c.DEL_FLAG = '0'
ORDER BY c.PID,c.SORT
</select>
<resultMap id="BaseResultMap" type="com.epmet.dto.result.TemplateDetailResultDTO">
<result column="id" property="id"/>
<result column="label" property="label"/>
</resultMap>
<resultMap id="NodeTreeResult" type="com.epmet.dto.result.TemplateDetailResultDTO"
extends="BaseResultMap">
<collection property="children" column="id" ofType="com.epmet.dto.result.TemplateDetailResultDTO"
javaType="java.util.ArrayList" select="getChildrenTemplateDetail">
</collection>
</resultMap>
<select id="getTemplateDetail" resultMap="NodeTreeResult">
select
ID AS id,
LABEL
from
ic_export_template_config
where DEL_FLAG = 0
and TEMP_ID = #{tempId}
order by SORT
</select>
<select id="getChildrenTemplateDetail" resultMap="NodeTreeResult">
select
ID,
LABEL
from
ic_export_template_config
where DEL_FLAG = 0
and PID = #{pid}
order by SORT
</select>
<select id="selectByAgencyId" resultType="com.epmet.dto.IcExportTemplateDTO">
SELECT
id,
customer_id,
agency_id,
pids,
form_code,
`name`,
sort
FROM
ic_export_template
WHERE
del_flag = '0'
AND agency_id = #{agencyId}
ORDER BY sort DESC
</select>
</mapper>

5
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormDao.xml

@ -111,7 +111,7 @@
<if test="dynamic != null">
AND fi.DYNAMIC = #{dynamic}
</if>
AND fi.ITEM_GROUP_ID = '0'
AND fi.ITEM_GROUP_ID = #{itemGroupId}
ORDER BY
fi.SORT ASC
</select>
@ -232,7 +232,8 @@
fi.LIST_DISPLAY,
fi.DATA_ANALYSE,
fi.COLUMN_NAME,
fi.COLUMN_NUM
fi.COLUMN_NUM,
fi.MULTI_SELECT
FROM ic_form_item fi
left join ic_form_item_group g on (fi.ITEM_GROUP_ID = g.ID and fi.DEL_FLAG = 0 and g.DEL_FLAG = 0)
left join ic_form_item pitem on (pitem.DEL_FLAG = 0 and fi.PARENT_ITEM_ID = pitem.ID)

129
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml

@ -19,6 +19,8 @@
<result property="sort" column="SORT"/>
<result property="placeholder" column="PLACEHOLDER"/>
<result property="columnName" column="COLUMN_NAME"/>
<result property="queryType" column="QUERY_TYPE"/>
<result property="funType" column="FUN_TYPE"/>
<collection property="options" ofType="com.epmet.dto.result.OptionDTO"
column="item_id" select="com.epmet.dao.IcFormDao.selectListOption">
<result property="label" column="label"/>
@ -48,7 +50,8 @@
b.SORT,
IFNULL(i.PLACEHOLDER,'') as PLACEHOLDER,
IFNULL(i.COLUMN_NAME,'')as COLUMN_NAME,
b.QUERY_TYPE
b.QUERY_TYPE,
b.FUN_TYPE
FROM ic_form_query_builder b
inner join ic_form_item i on(i.id=b.FORM_ITEM_ID and i.DEL_FLAG='0')
LEFT JOIN ic_form_item_group g ON ( i.ITEM_GROUP_ID = g.id )
@ -59,6 +62,38 @@
ORDER BY b.SORT asc
</select>
<select id="selectConditionListByGroupId" parameterType="java.lang.String" resultMap="ConditionResultDTOMap">
SELECT
b.FORM_ITEM_ID AS item_id,
(
case when g.table_name is null then 'ic_resi_user'
when g.table_name ='' then 'ic_resi_user'
else g.table_name
end
)AS TABLE_NAME,
i.PARENT_ITEM_ID,
b.LABEL,
b.ITEM_TYPE,
i.ITEM_GROUP_ID,
i.REQUIRED,
IFNULL(b.VALID_TYPE,'')as VALID_TYPE,
IFNULL(i.DEFAULT_VALUE,'') as DEFAULT_VALUE,
IFNULL(i.OPTION_SOURCE_TYPE,'') as OPTION_SOURCE_TYPE,
IFNULL(i.OPTION_SOURCE_VALUE,'') as OPTION_SOURCE_VALUE,
b.SORT,
IFNULL(i.PLACEHOLDER,'') as PLACEHOLDER,
IFNULL(i.COLUMN_NAME,'')as COLUMN_NAME,
b.QUERY_TYPE,
b.FUN_TYPE
FROM ic_form_query_builder b
inner join ic_form_item i on(i.id=b.FORM_ITEM_ID and i.DEL_FLAG='0')
LEFT JOIN ic_form_item_group g ON ( i.ITEM_GROUP_ID = g.id )
WHERE
b.DEL_FLAG = '0'
AND i.ITEM_GROUP_ID=#{groupId}
ORDER BY b.SORT asc
</select>
<resultMap id="TableHeaderResultDTOMap" type="com.epmet.dto.result.TableHeaderResultDTO">
@ -100,7 +135,7 @@
temp.LABEL
from (
SELECT
ifnull(g.TABLE_NAME,'ic_resi_user') AS table_name,
IF(LENGTH(g.TABLE_NAME)>0,g.TABLE_NAME,'ic_resi_user') AS table_name,
#( CASE WHEN M.ITEM_GROUP_ID = '0' THEN 'ic_resi_user' ELSE g.TABLE_NAME END ) AS table_name,
m.COLUMN_NAME AS columnName,
m.LABEL
@ -119,16 +154,17 @@
<select id="querySubTables" parameterType="map" resultType="com.epmet.dto.result.SubTableJoinDTO">
select
temp.TABLE_NAME as tableName,
CONCAT('left join ',temp.TABLE_NAME, ' on ( ic_resi_user.ID=',temp.TABLE_NAME,'.IC_RESI_USER and ',temp.TABLE_NAME,'.del_flag="0" )') as joinTableSql
CONCAT('left join ',temp.TABLE_NAME, ' on ( ic_resi_user.ID=',temp.TABLE_NAME,'.IC_RESI_USER and ',temp.TABLE_NAME,'.del_flag="0" )') as joinTableSql,
SUPPORT_ADD as supportAdd
from (
SELECT DISTINCT
m.TABLE_NAME
m.TABLE_NAME,
m.SUPPORT_ADD
FROM
ic_form_item_group m
WHERE
m.DEL_FLAG = '0'
AND m.TABLE_NAME IS NOT NULL
AND m.TABLE_NAME != ''
AND m.TABLE_NAME != 'ic_resi_user'
AND m.CUSTOMER_ID = #{customerId}
AND m.FORM_CODE = #{formCode}
)temp
@ -141,8 +177,7 @@
ic_form_item_group m
WHERE
m.DEL_FLAG = '0'
AND m.TABLE_NAME IS NOT NULL
AND m.TABLE_NAME != ''
AND m.TABLE_NAME != 'ic_resi_user'
AND m.CUSTOMER_ID = #{customerId}
AND m.FORM_CODE = #{formCode}
</select>
@ -163,4 +198,82 @@
AND a.customer_id = #{customerId}
</select>
<resultMap id="ConditionResDTOMap" type="com.epmet.dto.result.ConditionResDTO">
<id property="itemGroupId" column="ITEM_GROUP_ID"></id>
<result property="groupName" column="LABEL"/>
<collection property="queryItemList" ofType="com.epmet.dto.result.ConditionResultDTO"
column="ITEM_GROUP_ID" select="com.epmet.dao.IcFormItemDao.selectConditionListByGroupId">
</collection>
</resultMap>
<select id="selectConditionListGroup" parameterType="map" resultMap="ConditionResDTOMap">
SELECT DISTINCT
i.ITEM_GROUP_ID,
g.LABEL
FROM
ic_form_item i
LEFT JOIN ic_form_item_group g ON ( i.ITEM_GROUP_ID = g.id )
WHERE
i.DEL_FLAG = '0'
AND i.SEARCH_DISPLAY = '1'
AND g.DEL_FLAG = '0'
and i.CUSTOMER_ID=#{customerId}
and i.FORM_CODE=#{formCode}
AND(
<foreach collection="itemIdList" item="itemId" separator=" OR ">
i.ID = #{itemId}
</foreach>
)
order by g.sort asc
</select>
<select id="getConditionRemoteItems" resultType="com.epmet.dto.result.ConditionResultDTO">
SELECT
ifi.ID AS itemId,
ifi.OPTION_SOURCE_VALUE,
ifig.TABLE_NAME,
concat(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName
FROM ic_form_item ifi LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ifi.OPTION_SOURCE_TYPE = 'remote'
AND ifi.OPTION_SOURCE_VALUE like '%?%'
AND ifi.CUSTOMER_ID = #{customerId}
AND ifi.FORM_CODE = #{formCode}
and ifi.DEL_FLAG = '0'
AND ifig.DEL_FLAG = '0'
</select>
<select id="getConditionItem" resultType="com.epmet.dto.result.ConditionResultDTO">
SELECT
ifi.ID AS itemId,
ifig.TABLE_NAME,
CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName,
ifi.OPTION_SOURCE_TYPE,
ifi.OPTION_SOURCE_VALUE
FROM
ic_form_item ifi
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ifi.ID= #{itemId}
and ifi.DEL_FLAG = '0'
AND ifig.DEL_FLAG = '0'
</select>
<select id="getItemListByGroupId" resultType="com.epmet.dto.result.FormItemResult">
SELECT
ifi.ID itemId,
ifi.CUSTOMER_ID,
ifi.ITEM_GROUP_ID,
ifi.LABEL,
ifi.SORT,
ifi.OPTION_SOURCE_VALUE,
ifi.OPTION_SOURCE_TYPE,
ifig.TABLE_NAME,
CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName
FROM
ic_form_item ifi
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ITEM_GROUP_ID = #{groupId} and ifi.CUSTOMER_ID = #{customerId}
AND LENGTH(ifi.COLUMN_NAME)>0
ORDER BY ifi.SORT
</select>
</mapper>

7
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemOptionsDao.xml

@ -16,4 +16,11 @@
</foreach>
)
</select>
<delete id="deleteByItemId" parameterType="map">
delete from ic_form_item_options
where DEL_FLAG = 0
and ITEM_ID = #{itemId}
AND CUSTOMER_ID = #{customerId}
</delete>
</mapper>

21
epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormQueryBuilderDao.xml

@ -18,5 +18,26 @@
<result property="updatedTime" column="UPDATED_TIME"/>
</resultMap>
<select id="selectDefaultQueryItem" parameterType="map" resultType="com.epmet.entity.IcFormQueryBuilderEntity">
SELECT
b.ID
FROM
ic_form_query_builder b
WHERE
b.DEL_FLAG = '0'
AND b.FORM_ITEM_ID = #{itemId}
AND b.ITEM_TYPE = #{itemType}
AND b.QUERY_TYPE = #{queryType}
</select>
<select id="selectItemId" parameterType="map" resultType="java.lang.String">
SELECT DISTINCT
b.FORM_ITEM_ID
FROM
ic_form_query_builder b
WHERE
b.CUSTOMER_ID = #{customerId}
AND b.FORM_CODE = #{formCode}
AND b.DEL_FLAG = '0'
</select>
</mapper>

8
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcTripReportRecordDTO.java

@ -5,9 +5,11 @@ import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;
@ -24,11 +26,15 @@ public class IcTripReportRecordDTO implements Serializable {
private static final long serialVersionUID = 1L;
public interface DetailViewGroup {
}
/**
* 主键ID
*/
@NotBlank(message = "id不能为空", groups = DetailViewGroup.class)
@ExcelIgnore
private String id;
private String id;
/**
* 居民端用户所在网格id,数字社区居民所属网格id

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/IcVeteransDTO.java

@ -89,6 +89,11 @@ public class IcVeteransDTO implements Serializable {
*/
private String xjyqk;
/**
* 是否办理公益性岗位,0422新增
*/
private String isHandleJob;
/**
* 删除标识 0.未删除 1.已删除
*/

31
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/ExportResiUserFormDTO.java

@ -0,0 +1,31 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 居民信息自定义导出
* @Author yinzuomei
* @Date 2021/10/27 2:06 下午
*/
@Data
public class ExportResiUserFormDTO implements Serializable {
private static final long serialVersionUID = 8777535966834678256L;
/**
* 表单查询条件
*/
private IcResiUserPageFormDTO searchForm;
/**
* 模板id
*/
private String templateId;
/**
* 自定义的导出表单参数
*/
private IcExportTemplateSaveFormDTO exportConfig;
}

17
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/IcResiUserPageFormDTO.java

@ -1,9 +1,9 @@
package com.epmet.dto.form;
import com.epmet.commons.tools.dto.form.PageFormDTO;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;
@ -13,29 +13,22 @@ import java.util.List;
* @Date 2021/10/27 2:06 下午
*/
@Data
public class IcResiUserPageFormDTO implements Serializable {
public class IcResiUserPageFormDTO extends PageFormDTO implements Serializable {
public interface AddUserInternalGroup {
}
@NotNull(message = "pageNo不能为空", groups = AddUserInternalGroup.class)
private Integer pageNo;
@NotNull(message = "pageSize不能为空", groups = AddUserInternalGroup.class)
private Integer pageSize;
@NotBlank(message = "formCode不能为空", groups = AddUserInternalGroup.class)
@NotBlank(message = "formCode不能为空", groups = {AddUserInternalGroup.class})
private String formCode;
@NotBlank(message = "customerId不能为空", groups = AddUserInternalGroup.class)
@NotBlank(message = "customerId不能为空", groups = {AddUserInternalGroup.class})
private String customerId;
/**
* 表对应的字段及值
*/
private List<ResiUserQueryValueDTO> conditions;
private Boolean pageFlag;
@NotBlank(message = "当前用户id不能为空", groups = AddUserInternalGroup.class)
@NotBlank(message = "当前用户id不能为空", groups = {AddUserInternalGroup.class})
private String staffId;
/**

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/PageTripReportFormDTO.java

@ -52,4 +52,9 @@ public class PageTripReportFormDTO extends PageFormDTO implements Serializable {
* 工作人员所属组织id
*/
private String agencyId;
/**
* 查看详情时此列有值
*/
private String id;
}

9
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/SearchByNameFormDTO.java

@ -29,6 +29,15 @@ public class SearchByNameFormDTO implements Serializable {
@NotBlank(message = "columnName不能为空",groups = SearchByCategoryForm.class)
private String columnName;
//id与level是 /epmetuser/statsresiwarn/list 接口的入参
/**
* 组织id
*/
@NotBlank(message = "id不能为空", groups = SearchByCategoryForm.class)
private String id;
@NotBlank(message = "level不能为空", groups = SearchByCategoryForm.class)
private String level;
private String customerId;
private String userId;

10
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/StatsResiWarnFormDTO.java

@ -22,7 +22,6 @@ import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
@ -40,7 +39,7 @@ public class StatsResiWarnFormDTO implements Serializable {
public interface ListSelectedBuilding {}
public interface ListSelectedUser {}
public interface AllUser {}
/**
* 当前页
@ -57,10 +56,11 @@ public class StatsResiWarnFormDTO implements Serializable {
@NotBlank(message = "组织id不能为空",groups = {ListSelectedBuilding.class})
private String agencyId;
@NotBlank(message = "配置id不能为空",groups = {ListSelectedUser.class})
@NotBlank(message = "配置id不能为空",groups = {ListSelectedUser.class, AllUser.class})
private String configId;
@NotNull(message = "楼栋不能为空",groups = {ListSelectedUser.class})
private List<String> buildingIdList;
@NotBlank(message = "楼栋不能为空",groups = {AllUser.class})
private String buildingId;
private String customerId;
}

33
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/form/UserChartFormDTO.java

@ -0,0 +1,33 @@
package com.epmet.dto.form;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author sun
* @dscription 人房居民总数饼图-接口入参
*/
@Data
public class UserChartFormDTO implements Serializable {
private static final long serialVersionUID = 405799151478155056L;
/**
* 组织网格小区Id
*/
private String orgId;
/**
* 组织网格小区类型 agency grid village
*/
private String orgType;
//id集合
private List<String> idList;
//token这信息
private String customerId;
private String userId;
}

1
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/IcStatsResiWarnUserResultDTO.java

@ -43,6 +43,7 @@ public class IcStatsResiWarnUserResultDTO implements Serializable {
private String neighborhoodName;
private String buildingName;
private String residentNames;
private Integer count;
private List<UserWarnNameListResultDTO> userList;
}

5
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/StaffBasicInfoResultDTO.java

@ -96,4 +96,9 @@ public class StaffBasicInfoResultDTO implements Serializable {
* 地区编码全路径例如37,3702,370203,370203005,370203005015
*/
private List<String> areaCodePath;
/**
* 工作人员所属组织的行政地区编码
*/
private String areaCode;
}

49
epmet-user/epmet-user-client/src/main/java/com/epmet/dto/result/UserChartResultDTO.java

@ -0,0 +1,49 @@
package com.epmet.dto.result;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.io.Serializable;
/**
* @author sun
* @dscription 人房居民总数饼图-接口返参
*/
@Data
public class UserChartResultDTO implements Serializable {
/**
* 组织网格小区Id
*/
private String orgId;
/**
* 组织网格小区类型 agency grid village
*/
private String orgType;
/**
* 居民总数
*/
private Integer userTotal = 0;
/**
* 常住人口总数
*/
private Integer czUserTotal = 0;
/**
* 常住人口占比保留两位小数带百分号的
*/
private Double czUserRatio = 0.0;
/**
* 流动人口总数
*/
private Integer ldUserTotal = 0;
/**
* 流动人口占比保留两位小数带百分号的
*/
private Double ldUserRatio = 0.0;
@JsonIgnore
private Integer num;
//是否是流动人口【是:1 否:0】
@JsonIgnore
private String isFloating;
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save