Browse Source

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

# Conflicts:
#	epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java
release
sunyuchao 3 years ago
parent
commit
4870264524
  1. 9
      epmet-admin/epmet-admin-server/src/main/resources/db/migration/V0.0.15__add_item_typequery.sql
  2. 6
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/dto/form/IcExportItemListFormDTO.java
  3. 122
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/ExcelFillCellMergeStrategy.java
  4. 2
      epmet-commons/epmet-commons-tools/src/main/java/com/epmet/commons/tools/utils/poi/excel/handler/FreezeAndFilter.java
  5. 4
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/EpmetHeartOpenFeignClient.java
  6. 6
      epmet-module/epmet-heart/epmet-heart-client/src/main/java/com/epmet/feign/fallback/EpmetHeartOpenFeignClientFallback.java
  7. 1
      epmet-module/gov-org/gov-org-client/src/main/java/com/epmet/dto/IcHouseDTO.java
  8. 4
      epmet-module/gov-org/gov-org-server/src/main/java/com/epmet/service/impl/IcHouseServiceImpl.java
  9. 16
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/IcExportTemplateDTO.java
  10. 5
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/ConditionResultDTO.java
  11. 59
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemBaseResult.java
  12. 21
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcCustomExportResultDTO.java
  13. 5
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/IcExportTemplateForExportResultDTO.java
  14. 7
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/OperCustomizeOpenFeignClient.java
  15. 5
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/feign/fallback/OperCustomizeOpenFeignClientFallback.java
  16. 6
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcFormItemController.java
  17. 11
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcFormItemDao.java
  18. 10
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/entity/IcExportTemplateEntity.java
  19. 2
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcFormItemService.java
  20. 23
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java
  21. 6
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcFormItemServiceImpl.java
  22. 48
      epmet-module/oper-customize/oper-customize-server/src/main/resources/db/migration/V0.0.25__add_export_temp.sql
  23. 17
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml
  24. 19
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormItemDao.xml
  25. 4
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java
  26. 6
      epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java
  27. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcFollowUpRecordController.java
  28. 3
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java
  29. 18
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  30. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcTripReportRecordController.java
  31. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.java
  32. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/StatsResiWarnController.java
  33. 12
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java
  34. 215
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java
  35. 61
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java
  36. 17
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java
  37. 2
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java
  38. BIN
      epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xlsx

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');

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

@ -61,9 +61,13 @@ public class IcExportItemListFormDTO implements Serializable {
private String columnName;
/**
* 只有远程获取的才有
* item选项
*/
private String optionSourceValue;
/**
* item选项 值获取方式
*/
private String optionSourceType;
}

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 冻结标题

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);
}
}

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

@ -48,6 +48,7 @@ public class IcHouseDTO implements Serializable {
* 小区id
*/
private String neighborHoodId;
private String neighborHoodName;
/**
* 片区idneighbor_hood_part.id,可为空

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

@ -95,9 +95,11 @@ public class IcHouseServiceImpl extends BaseServiceImpl<IcHouseDao, IcHouseEntit
HouseInfoDTO houseInfo = icHouseRedis.getHouseInfo(id, dto.getCustomerId());
if (null != houseInfo) {
dto.setBuildingName(houseInfo.getNeighborHoodName().concat(houseInfo.getBuildingName()));
dto.setNeighborHoodName(houseInfo.getNeighborHoodName());
dto.setBuildingName(houseInfo.getBuildingName());
dto.setUnitName(houseInfo.getUnitName());
} else {
dto.setNeighborHoodName(StrConstant.EPMETY_STR);
dto.setBuildingName(StrConstant.EPMETY_STR);
dto.setUnitName(StrConstant.EPMETY_STR);
}

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

@ -1,8 +1,10 @@
package com.epmet.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
@ -46,19 +48,13 @@ public class IcExportTemplateDTO implements Serializable {
*/
private String name;
/**
* 0:动态1:文件
*/
private Integer type;
/**
* 文件地址http开头或者项目组模板存放相对路径
*/
private String url;
/**
* 排序
*/
private Integer sort;
private Integer isSelf;
private String createdBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date createdTime;
}

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

@ -91,5 +91,10 @@ public class ConditionResultDTO implements Serializable {
private String funType;
private List<OptionDTO> options;
/**
* 这个表 是否支持添加 即是否是多对一 eg:居民需求是多个对一个
*/
private boolean supportAdd;
}

59
epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/FormItemBaseResult.java

@ -0,0 +1,59 @@
package com.epmet.dto.result;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 基础表单项
* @Author yinzuomei
* @Date 2021/10/26 2:15 下午
*/
@Data
public class FormItemBaseResult implements Serializable {
private static final long serialVersionUID = 5946318248252730101L;
/**
* ID
*/
private String itemId;
/**
* 项标签
*/
private String label;
/**
* 分组ID,'默认NONE'
*/
private String itemGroupId;
/**
* 排序
*/
private Integer sort;
/**
* 默认ic_resi_user
*/
private String tableName;
/**
* 拼好的列名
*/
private String columnName;
/**
* 选项来源,REMOTE;LOCAL;如果是动态加载的下拉框或者CHECKBOX等的情况下使用URL:接口获取(LABEL,VALUE)JSON:直接从JSON中取
*/
private String optionSourceType;
/**
* 来源地址,REMOTE才有固定格式;如果OPTIONS_SOURCE是URL则此处填写要调用的接口的URL相对路径例如/API/GOV/ORG/XXXX此处不应设置参数若需要参数应当完全由后端通过TOKEN信息来获取
*/
private String optionSourceValue;
}

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

@ -1,8 +1,10 @@
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;
@ -26,6 +28,10 @@ public class IcCustomExportResultDTO implements Serializable {
private List<List<String>> headers = new ArrayList<>();
private Integer headerRow;
/**
* sql中要返回的 列名 顺序跟表头顺序一致
*/
@ -42,9 +48,22 @@ public class IcCustomExportResultDTO implements Serializable {
public static class SqlColumn {
private String itemId;
private String tableName;
private Boolean manyToOne;
private String columnName;
private String optionSourceType;
private String optionSourceValue;
}
/**
* desc:获取有几行头
* @return
*/
public Integer getHeaderRow() {
if (CollectionUtils.isEmpty(headers)){
return NumConstant.ZERO;
}
return headers.stream().mapToInt(List::size).max().orElse(0);
}
}

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

@ -57,6 +57,11 @@ public class IcExportTemplateForExportResultDTO implements Serializable {
private String columnName;
private String optionSourceValue;
private String optionSourceType;
/**
* 是否支持添加 即是否是多对一 eg:居民需求是多个对一个
*/
private boolean supportAdd;
}

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

@ -1,7 +1,6 @@
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;
@ -171,10 +170,4 @@ public interface OperCustomizeOpenFeignClient {
@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);
}

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

@ -1,7 +1,6 @@
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;
@ -131,8 +130,4 @@ public class OperCustomizeOpenFeignClientFallback implements OperCustomizeOpenFe
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/src/main/java/com/epmet/controller/IcFormItemController.java

@ -21,7 +21,7 @@ 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.FormItemBaseResult;
import com.epmet.dto.result.ResiCategoryItemResultDTO;
import com.epmet.service.IcFormItemService;
import org.springframework.beans.factory.annotation.Autowired;
@ -95,8 +95,8 @@ public class IcFormItemController {
* @return
*/
@PostMapping("getItemList/{groupId}")
public Result<List<FormItemResult>> getItemListByGroupId(@RequestHeader String customerId, @PathVariable("groupId") String groupId){
List<FormItemResult> list = icFormItemService.getItemListByGroupId(customerId,groupId);
public Result<List<FormItemBaseResult>> getItemListByGroupId(@RequestHeader String customerId, @PathVariable("groupId") String groupId){
List<FormItemBaseResult> list = icFormItemService.getItemListByGroupId(customerId,groupId);
return new Result().ok(list);
}
}

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

@ -80,15 +80,6 @@ public interface IcFormItemDao extends BaseDao<IcFormItemEntity> {
**/
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属性
*
@ -104,5 +95,5 @@ public interface IcFormItemDao extends BaseDao<IcFormItemEntity> {
* @param groupId
* @return
*/
List<FormItemResult> getItemListByGroupId(@Param("customerId") String customerId, @Param("groupId") String groupId);
List<FormItemBaseResult> getItemListByGroupId(@Param("customerId") String customerId, @Param("groupId") String groupId);
}

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

@ -43,16 +43,6 @@ public class IcExportTemplateEntity extends BaseEpmetEntity {
*/
private String name;
/**
* 0:动态1:文件
*/
private Integer type;
/**
* 文件地址http开头或者项目组模板存放相对路径
*/
private String url;
/**
* 排序
*/

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

@ -90,5 +90,5 @@ public interface IcFormItemService extends BaseService<IcFormItemEntity> {
* @param groupId
* @return
*/
List<FormItemResult> getItemListByGroupId(String customerId, String groupId);
List<FormItemBaseResult> getItemListByGroupId(String customerId, String groupId);
}

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

@ -203,20 +203,17 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
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);
});
resultTemp.get(NumConstant.ZERO_STR)
.forEach(root -> recursionData(resultTemp, root, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet));
//组织 关联item项的
if (hasExistColumnSet.size() > NumConstant.ZERO) {
Set<String> configItemIdSet = list.stream().map(IcExportTemplateForExportResultDTO::getItemId).collect(Collectors.toSet());
@ -229,7 +226,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
log.error("getTemplateConfigForExport item 不存在 id:{}", itemId);
return;
}
hiddenSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(item.getItemId(),item.getTableName(), item.getColumnName(),item.getOptionSourceType(),item.getOptionSourceValue()));
hiddenSqlColumns.add(new IcCustomExportResultDTO.SqlColumn(item.getItemId(),item.getTableName(), item.isSupportAdd(),item.getColumnName(),item.getOptionSourceType()));
});
}
@ -266,6 +263,12 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
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 {
@ -291,9 +294,9 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
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) {
private void recursionData(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.getColumnName(),root.getOptionSourceType(),root.getOptionSourceValue()));
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中有的
@ -309,7 +312,7 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
headerGroupList.add(root.getLabel());
headerGroupList.add(o.getLabel());
headerList.add(headerGroupList);
digui(resultTemp, o, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet);
recursionData(resultTemp, o, headerList, showSqlColumns, hiddenSqlColumns, hasExistColumnSet);
});
}

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

@ -258,14 +258,14 @@ public class IcFormItemServiceImpl extends BaseServiceImpl<IcFormItemDao, IcForm
builderEntity.setUpdatedBy("init");
//item默认的查询组件已经有了,就不插入了
IcFormQueryBuilderEntity entity = icFormQueryBuilderDao.selectDefaultQueryItem(item.getId(), item.getItemType(), builderEntity.getQueryType());
/*if (null == entity) {
if (null == entity) {
icFormQueryBuilderDao.insert(builderEntity);
}*/
}
}
}
@Override
public List<FormItemResult> getItemListByGroupId(String customerId, String groupId) {
public List<FormItemBaseResult> getItemListByGroupId(String customerId, String groupId) {
return baseDao.getItemListByGroupId(customerId,groupId);
}

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';

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

@ -8,8 +8,6 @@
<result property="customerId" column="CUSTOMER_ID"/>
<result property="formCode" column="FORM_CODE"/>
<result property="name" column="NAME"/>
<result property="type" column="TYPE"/>
<result property="url" column="URL"/>
<result property="sort" column="SORT"/>
<result property="delFlag" column="DEL_FLAG"/>
<result property="revision" column="REVISION"/>
@ -20,8 +18,17 @@
</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,concat(ifi.COLUMN_NAME,if(ifi.COLUMN_NUM = 0,'',ifi.COLUMN_NUM)) columnName,
ifi.OPTION_SOURCE_VALUE,ifi.OPTION_SOURCE_TYPE
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
@ -68,8 +75,6 @@
pids,
form_code,
`name`,
type,
url,
sort
FROM
ic_export_template

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

@ -226,21 +226,6 @@
)
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,
@ -256,7 +241,7 @@
and ifi.DEL_FLAG = '0'
AND ifig.DEL_FLAG = '0'
</select>
<select id="getItemListByGroupId" resultType="com.epmet.dto.result.FormItemResult">
<select id="getItemListByGroupId" resultType="com.epmet.dto.result.FormItemBaseResult">
SELECT
ifi.ID itemId,
ifi.CUSTOMER_ID,
@ -264,6 +249,7 @@
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
@ -272,6 +258,7 @@
WHERE
ITEM_GROUP_ID = #{groupId} and ifi.CUSTOMER_ID = #{customerId}
AND LENGTH(ifi.COLUMN_NAME)>0
ORDER BY ifi.SORT
</select>
</mapper>

4
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/EpmetUserOpenFeignClient.java

@ -2,7 +2,6 @@ package com.epmet.feign;
import com.epmet.commons.tools.constant.ServiceConstant;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
import com.epmet.dto.*;
@ -649,9 +648,6 @@ public interface EpmetUserOpenFeignClient {
@GetMapping(value = "/epmetuser/user/queryUserClient/{userId}")
Result<UserDTO> queryUserClient(@PathVariable("userId") String userId);
@PostMapping("/epmetuser/icresidemanddict/demandoption")
Result<List<OptionResultDTO>> getDemandOptions();
@PostMapping("/epmetuser/icresiuser/categorycount")
Result<Map<String, Map<String, String>>> getHomeUserCategoryCount(@RequestBody IcResiUserDTO formDTO);

6
epmet-user/epmet-user-client/src/main/java/com/epmet/feign/fallback/EpmetUserOpenFeignClientFallback.java

@ -1,7 +1,6 @@
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.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ModuleUtils;
import com.epmet.commons.tools.utils.Result;
@ -466,11 +465,6 @@ public class EpmetUserOpenFeignClientFallback implements EpmetUserOpenFeignClien
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "queryUserClient", userId);
}
@Override
public Result<List<OptionResultDTO>> getDemandOptions() {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getDemandOptions", null);
}
@Override
public Result<Map<String, Map<String, String>>> getHomeUserCategoryCount(IcResiUserDTO formDTO) {
return ModuleUtils.feignConError(ServiceConstant.EPMET_USER_SERVER, "getHomeUserCategoryCount", formDTO);

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

@ -12,7 +12,7 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.DateUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.AssertUtils;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.commons.tools.validator.group.DefaultGroup;

3
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcNatController.java

@ -16,12 +16,11 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcNatDTO;
import com.epmet.dto.form.AddIcNatFormDTO;
import com.epmet.dto.form.ImportTaskCommonFormDTO;
import com.epmet.dto.form.MyNatListFormDTO;
import com.epmet.dto.result.ImportTaskCommonResultDTO;
import com.epmet.dto.result.MyNatListResultDTO;

18
epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java

@ -21,6 +21,7 @@ import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillWrapper;
import com.alibaba.fastjson.JSON;
import com.epmet.commons.rocketmq.messages.IcResiUserAddMQMsg;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
@ -44,7 +45,7 @@ import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.security.user.LoginUserUtil;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.SystemMessageType;
import com.epmet.constants.ImportTaskConstants;
@ -310,9 +311,9 @@ public class IcResiUserController implements ResultDataResolver {
*/
@NoRepeatSubmit
@RequestMapping(value = "/exportExcel")
public void exportExcelByEasyExcel(@RequestHeader String customerId,@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
//tokenDto.setUserId("9e37adcce6472152e6508a19d3683e02");
public void exportExcelByEasyExcel(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
long startM = System.currentTimeMillis();
String customerId = tokenDto.getCustomerId();
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(customerId, tokenDto.getUserId());
String staffOrgPath = null;
if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) {
@ -413,10 +414,15 @@ public class IcResiUserController implements ResultDataResolver {
*/
@NoRepeatSubmit
@RequestMapping(value = "/exportExcelCustom")
public void exportExcelCustom(@LoginUser TokenDto tokenDto, @RequestBody ExportResiUserFormDTO pageFormDTO, HttpServletResponse response) {
public void exportExcelCustom(@LoginUser TokenDto tokenDto, @RequestBody ExportResiUserFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
//获取导出配置
icResiUserExportService.exportIcResiUser(tokenDto,pageFormDTO,response);
String aDefault = tokenDto.getCustomerId().concat(StrConstant.UNDER_LINE).concat("default");
if (pageFormDTO.getTemplateId().equals(aDefault)){
log.info("通过原来的模板下载,tokenDto:{}", JSON.toJSONString(tokenDto));
this.exportExcelByEasyExcel(tokenDto,pageFormDTO.getSearchForm(),response);
}else{
icResiUserExportService.exportIcResiUser(tokenDto,pageFormDTO,response);
}
}
/**
* desc:根据客户id 先从oss下载模版,如果有没有则使用系统默认模板 如果不存在则返回null

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

@ -17,7 +17,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.constants.ImportTaskConstants;

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

@ -16,7 +16,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.*;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dto.IcVaccineDTO;

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

@ -18,6 +18,7 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.annotation.MaskResponse;
import com.epmet.commons.tools.page.PageData;
import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.Result;
@ -117,6 +118,7 @@ public class StatsResiWarnController {
return new Result().ok(statsResiWarnService.userWarnList(customerId,formDTO.getConfigId(), formDTO.getBuildingIdList(),formDTO.getPageNo(),formDTO.getPageSize()));
}
@MaskResponse(fieldNames = { "mobile", "idCard" }, fieldsMaskType = { MaskResponse.MASK_TYPE_MOBILE, MaskResponse.MASK_TYPE_ID_CARD })
@PostMapping("alluserwarnlist")
public Result<PageData<UserWarnNameListResultDTO>> allUserWarnList(@LoginUser TokenDto tokenDto, @RequestBody StatsResiWarnFormDTO formDTO){
ValidatorUtils.validateEntity(formDTO, StatsResiWarnFormDTO.AllUser.class);

12
epmet-user/epmet-user-server/src/main/java/com/epmet/service/IcResiUserImportService.java

@ -1,5 +1,6 @@
package com.epmet.service;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.dto.result.FormItemResult;
import com.epmet.service.impl.IcResiUserImportServiceImpl;
@ -51,4 +52,15 @@ public interface IcResiUserImportService {
* @return
*/
Map<String, String> listRemoteOptions(String pureUri, String cascadeItemId, Map<String, IcResiUserImportServiceImpl.ColumnWrapper> columnWrappers, String currUserAgencyId, String purpose);
/**
* desc:获取级联的远程 选项
* @param part
* @param part1
* @param columnWrappers
* @param currentStaffAgencyId
* @param query
* @return
*/
Map<String, OptionResultDTO> listRemoteCascadeOptions(String part, String part1, Map<String, IcResiUserImportServiceImpl.ColumnWrapper> columnWrappers, String currentStaffAgencyId, String query);
}

215
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java

@ -12,6 +12,7 @@ import com.epmet.commons.tools.constant.NumConstant;
import com.epmet.commons.tools.constant.StrConstant;
import com.epmet.commons.tools.dto.form.IcExportTemplateSaveFormDTO;
import com.epmet.commons.tools.dto.result.CustomerStaffInfoCacheResult;
import com.epmet.commons.tools.dto.result.OptionResultDTO;
import com.epmet.commons.tools.enums.FormItemTypeEnum;
import com.epmet.commons.tools.enums.IcFormCodeEnum;
import com.epmet.commons.tools.exception.EpmetErrorCode;
@ -21,7 +22,8 @@ import com.epmet.commons.tools.security.dto.TokenDto;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.SpringContextUtils;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.ExcelFillCellMergeStrategy;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.constant.IcResiUserConstant;
import com.epmet.dto.form.ExportResiUserFormDTO;
@ -43,6 +45,7 @@ import com.google.common.cache.CacheBuilder;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -73,7 +76,6 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
/**
* desc: 根据条件查询居民信息并根据配置模板导出
*
*
* @param tokenDto
* @param exportResiUserFormDTO
* @param response
@ -89,34 +91,54 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
String templateId = exportResiUserFormDTO.getTemplateId();
// 头的策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
// 背景设置为红色
headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle,new WriteCellStyle());
ExcelWriter excelWriter = null;
try {
//获取用户配置的导出条件
Result<IcCustomExportResultDTO> exportConfigResult = getIcCustomExportConfig(searchForm.getCustomerId(),templateId,exportResiUserFormDTO.getExportConfig());
Result<IcCustomExportResultDTO> exportConfigResult = getIcCustomExportConfig(searchForm.getCustomerId(), templateId, exportResiUserFormDTO.getExportConfig());
Map<String, ExportResiUserItemDTO> itemOriginMap = getItemMap(searchForm.getCustomerId());
IcCustomExportResultDTO exportConfigData = exportConfigResult.getData();
log.info("查询到的模板配置信息:{}", JSON.toJSONString(exportConfigData));
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(searchForm.getCustomerId(), searchForm.getStaffId());
if (staffInfoCacheResult == null) {
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取工作人员信息失败");
}
List<IcCustomExportResultDTO.SqlColumn> allShowColumns = new ArrayList<>(exportConfigData.getShowSqlColumns());
//需要合并的列
List<Integer> mergeColumnIndexList = new ArrayList<>();
for (int i = 0; i < allShowColumns.size(); i++) {
IcCustomExportResultDTO.SqlColumn sqlColumn = allShowColumns.get(i);
if (!sqlColumn.getManyToOne()) {
mergeColumnIndexList.add(i);
}
}
int[] mergeColumnIndex = mergeColumnIndexList.stream().filter(Objects::nonNull).mapToInt(i -> i).toArray();
// 从那一列开始合并
int mergeRowIndex = exportConfigData.getHeaderRow();
// 头的策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
// 背景设置为红色
headWriteCellStyle.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
FreezeAndFilter writeHandler = new FreezeAndFilter();
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("居民基本信息.xlsx", response)).registerWriteHandler(writeHandler).build();
WriteSheet writeSheet = EasyExcel.writerSheet()
//从第几行开始冻结
writeHandler.rowSplit = exportConfigData.getHeaderRow();
excelWriter = EasyExcel.write(ExcelUtils.getOutputStreamForExcel("居民基本信息.xlsx", response))
.registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex))
.registerWriteHandler(horizontalCellStyleStrategy)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
.head(exportConfigData.getHeaders()).build();
.registerWriteHandler(writeHandler).build();
WriteSheet writeSheet = EasyExcel.writerSheet().head(exportConfigData.getHeaders()).build();
CustomerStaffInfoCacheResult staffInfoCacheResult = CustomerStaffRedis.getStaffInfo(searchForm.getCustomerId(), searchForm.getStaffId());
if (staffInfoCacheResult == null){
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取工作人员信息失败");
}
String staffOrgPath = null;
if (StringUtils.isNotBlank(staffInfoCacheResult.getAgencyPIds()) && !NumConstant.ZERO_STR.equals(staffInfoCacheResult.getAgencyPIds())) {
staffOrgPath = staffInfoCacheResult.getAgencyPIds().concat(StrConstant.COLON).concat(staffInfoCacheResult.getAgencyId());
@ -124,7 +146,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
staffOrgPath = staffInfoCacheResult.getAgencyId();
}
Page<Map<String, Object>> mapListPage = null;
List<IcCustomExportResultDTO.SqlColumn> allShowColumns = new ArrayList<>(exportConfigData.getShowSqlColumns());
allShowColumns.addAll(exportConfigData.getHiddenSqlColumns());
do {
String finalStaffOrgPath = staffOrgPath;
@ -137,34 +159,35 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
List<List<Object>> resultData = new ArrayList<>();
List<IcCustomExportResultDTO.SqlColumn> showSqlColumns = exportConfigData.getShowSqlColumns();
Set<String> hiddenColumnSet = exportConfigData.getHiddenSqlColumns().stream().map(IcCustomExportResultDTO.SqlColumn::getColumnName).collect(Collectors.toSet());
result.forEach(o -> {
List<Object> singleResult = new ArrayList<>();
Map<String,Object> originalConditionMap = new ConcurrentHashMap<>();
log.info("==========居民信息:{}",JSON.toJSONString(o));
o.forEach((key,value) -> {
List<IcCustomExportResultDTO.SqlColumn> showSqlColumns = exportConfigData.getShowSqlColumns();
Map<String, Object> originalConditionMap = new ConcurrentHashMap<>();
o.forEach((key, value) -> {
Map<String, IcCustomExportResultDTO.SqlColumn> itemMap = showSqlColumns.stream().collect(Collectors.toMap(IcCustomExportResultDTO.SqlColumn::getColumnName, item -> item));
IcCustomExportResultDTO.SqlColumn columnDTO = itemMap.get(key);
if (singleResult.size() < showSqlColumns.size()) {
IcCustomExportResultDTO.SqlColumn sqlColumn = itemMap.get(key);
String tableName = sqlColumn.getTableName();
String itemId = sqlColumn.getItemId();
String columnName = columnDTO.getColumnName();
if (hiddenColumnSet.contains(columnName)) {
return;
}
String vauleStr = value == null ? StrConstant.EPMETY_STR : value.toString();
//保留原始值 便于remote条件获取
originalConditionMap.putIfAbsent(columnName,vauleStr);
originalConditionMap.putIfAbsent(columnName, vauleStr);
ExportResiUserItemDTO exportResiUserItemDTO = itemOriginMap.get(tableName);
FormItemResult formItemResult = exportResiUserItemDTO.getItemMap().get(columnName);
String newValue = vauleStr;
if (Constant.OPITON_SOURCE_REMOTE.equals(sqlColumn.getOptionSourceType())&&StringUtils.isNotBlank(vauleStr)) {
putRemoteValue(exportResiUserItemDTO.getRemoteItemConditionMap().get(itemId), staffInfoCacheResult.getAgencyId(), o,originalConditionMap, formItemResult, columnName, vauleStr);
if (Constant.OPITON_SOURCE_REMOTE.equals(sqlColumn.getOptionSourceType()) && StringUtils.isNotBlank(vauleStr)) {
putRemoteValue(exportResiUserItemDTO.getRemoteItemConditionMap().get(itemId), staffInfoCacheResult.getAgencyId(), o, originalConditionMap, formItemResult, columnName, vauleStr);
newValue = String.valueOf(o.get(columnName));
} else if (Constant.OPITON_SOURCE_LOCAL.equals(sqlColumn.getOptionSourceType())){
} else if (Constant.OPITON_SOURCE_LOCAL.equals(sqlColumn.getOptionSourceType())) {
newValue = putOptionValue(formItemResult, vauleStr);
}
singleResult.add(newValue);
@ -172,9 +195,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
});
resultData.add(singleResult);
});
log.info("需要写入的data长度:{}", resultData.size());
excelWriter.write(resultData, writeSheet);
//todo
break;
} while (mapListPage.getResult().size() == searchForm.getPageSize());
} catch (IOException e) {
@ -186,12 +207,19 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
}
}
/**
* desc:校验查询表单参数
*
* @param tokenDto
* @param exportResiUserFormDTO
*/
public void validateSearchForm(TokenDto tokenDto, ExportResiUserFormDTO exportResiUserFormDTO) {
IcResiUserPageFormDTO searchForm = exportResiUserFormDTO.getSearchForm();
searchForm.setCustomerId(tokenDto.getCustomerId());
searchForm.setStaffId(tokenDto.getUserId());
ValidatorUtils.validateEntity(searchForm, IcResiUserPageFormDTO.AddUserInternalGroup.class);
searchForm.setIsPage(false);
searchForm.setPageSize(NumConstant.TEN_THOUSAND);
}
@Nullable
@ -204,8 +232,15 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
Result<IcCustomExportResultDTO> exportConfigResult = operCustomizeOpenFeignClient.getExcelHeaderAndSqlColumnForExport(param);
if (!exportConfigResult.success() || exportConfigResult.getData() == null) {
log.error("获取模板失败");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(),"获取模板失败");
throw new EpmetException(EpmetErrorCode.EPMET_COMMON_OPERATION_FAIL.getCode(), "获取模板失败" + exportConfigResult.getInternalMsg());
}
IcCustomExportResultDTO data = exportConfigResult.getData();
//添加一个虚拟列Id 用于分组
data.getShowSqlColumns().add(0, new IcCustomExportResultDTO.SqlColumn(null, "ic_resi_user", false, "ID", "local"));
List<String> id = new ArrayList<>();
id.add("ID");
data.getHeaders().add(0, id);
return exportConfigResult;
}
@ -213,58 +248,79 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
/**
* key:itemId,value: key:columnName,中文
*/
private static Map<String, Cache<String,String>> remoteOptionCacheMap = new HashMap<>();
private static Map<String, Cache<String, String>> remoteOptionCacheMap = new HashMap<>();
private void putRemoteValue(Set<FormItemResult> conditionItemSet, String currentStaffAgencyId, Map<String, Object> map, Map<String, Object> originalConditionMap, FormItemResult e, String columnName, String vauleStr) {
try {
log.info("========putRemoteValue:formItemResult:{}",e.getLabel());
log.info("========putRemoteValue:columnName:{},vauleStr:{}",columnName,vauleStr);
Map<String, IcResiUserImportServiceImpl.ColumnWrapper> columnWrappers = new HashMap<>();
if (e.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
if (e.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)) {
for (FormItemResult o : conditionItemSet) {
String conditionColumnName = o.getColumnNum() == NumConstant.ZERO? o.getColumnName():o.getColumnName().concat(o.getColumnNum().toString());
String conditionColumnName = o.getColumnNum() == NumConstant.ZERO ? o.getColumnName() : o.getColumnName().concat(o.getColumnNum().toString());
Object conditionValue = originalConditionMap.getOrDefault(conditionColumnName, map.get(conditionColumnName));
originalConditionMap.putIfAbsent(conditionColumnName,conditionValue.toString());
originalConditionMap.putIfAbsent(conditionColumnName, conditionValue.toString());
IcResiUserImportServiceImpl.ColumnWrapper value = new IcResiUserImportServiceImpl.ColumnWrapper();
value.setColValue(conditionValue.toString());
columnWrappers.put(o.getItemId(), value);
}
}
Cache<String, String> cache = remoteOptionCacheMap.getOrDefault(e.getItemId(), CacheBuilder.newBuilder().maximumSize(NumConstant.FIVE_HUNDRED).build());
remoteOptionCacheMap.putIfAbsent(e.getItemId(),cache);
remoteOptionCacheMap.putIfAbsent(e.getItemId(), cache);
String cacheValue = cache.getIfPresent(vauleStr);
if (StringUtils.isNotBlank(cacheValue)){
map.put(columnName,cacheValue);
} else {
String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue());
//todo 不支持多个itemId
Map<String, String> remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query");
log.info("========putRemoteValue:条件:{}", JSON.toJSONString(columnWrappers));
log.info("========putRemoteValue:结果:{}", JSON.toJSONString(remoteOptions));
if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) {
remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO));
} else if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) {
remoteOptions.forEach((label, value) -> {
if (vauleStr.equals(value)) {
map.put(columnName, label);
}
cache.put(value,label);
});
}
if (StringUtils.isNotBlank(cacheValue)) {
map.put(columnName, cacheValue);
return;
}
String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue());
//如果是级联的 则调用级联获取接口 根据原始值逗号隔开的 赋值
if (FormItemTypeEnum.CASCADER.getCode().equals(e.getItemType())) {
Map<String, OptionResultDTO> remoteOptionMap = icResiUserImportService.listRemoteCascadeOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query");
List<String> listOptions = new ArrayList<>();
String[] split = vauleStr.split(StrConstant.COMMA);
Arrays.stream(split).forEach((value) -> {
//todo 看看怎么更好的利用本地缓存
OptionResultDTO optionResultDTO = remoteOptionMap.get(value);
if (optionResultDTO != null) {
listOptions.add(optionResultDTO.getLabel());
}
});
String join = Joiner.on("-").join(listOptions);
cache.put(vauleStr, join);
map.put(columnName, join);
return;
}
//todo 不支持多个itemId
Map<String, String> remoteOptions = icResiUserImportService.listRemoteOptions(parts[0], parts[1], columnWrappers, currentStaffAgencyId, "query");
if (FormItemTypeEnum.CHECKBOX.getCode().equals(e.getItemType())) {
remoteOptions.forEach((label, value) -> map.put(value, vauleStr.contains(value) ? StrConstant.YES : StrConstant.NO));
return;
}
} catch (Exception ex) {
log.error("listRemoteOptions url", ex);
if (FormItemTypeEnum.SELECT.getCode().equals(e.getItemType())) {
remoteOptions.forEach((label, value) -> {
if (vauleStr.equals(value)) {
map.put(columnName, label);
}
//放if外面是为了下次取得时候 可以有值
cache.put(value, label);
});
}
} catch (Exception ex) {
log.warn("listRemoteOptions url", ex);
}
}
private String putOptionValue(FormItemResult e, String vauleStr) {
private String putOptionValue(FormItemResult e, String valueStr) {
if (e == null) {
return valueStr;
}
FormItemTypeEnum itemTypeEnum = FormItemTypeEnum.getEnum(e.getItemType());
switch (itemTypeEnum) {
case CHECKBOX:
if (e.getMultiSelect()){
//如果是多选 则返回顿号隔开
if (e.getMultiSelect()) {
List<String> valueList = new ArrayList<>();
e.getOptions().forEach(option->{
if (vauleStr.contains(option.getValue())){
e.getOptions().forEach(option -> {
if (valueStr.contains(option.getValue())) {
valueList.add(option.getLabel());
}
});
@ -272,54 +328,55 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
}
for (OptionDTO dto : e.getOptions()) {
return vauleStr.contains(dto.getValue()) ? StrConstant.YES : StrConstant.NO;
return valueStr.contains(dto.getValue()) ? StrConstant.YES : StrConstant.NO;
}
break;
case SELECT:
case RADIO:
for (OptionDTO optionDTO : e.getOptions()) {
if (optionDTO.getValue().equals(vauleStr)) {
if (optionDTO.getValue().equals(valueStr)) {
return optionDTO.getLabel();
}
}
break;
default:
}
return vauleStr;
return valueStr;
}
/**
* desc:获取表单配置
*
* @param customerId
* @return map key:tableName ,value:ExportResiUserItemDTO
*/
private Map<String, ExportResiUserItemDTO> getItemMap(String customerId){
private Map<String, ExportResiUserItemDTO> getItemMap(String customerId) {
//获取表单项
IcResiUserService icResiUserService = SpringContextUtils.getBean(IcResiUserService.class);
if (icResiUserService == null){
if (icResiUserService == null) {
log.error("获取bean IcResiUserService 失败");
return null;
}
List<FormItemResult> resiFormAllItems = this.icResiUserService.listFormItems(customerId, IcFormCodeEnum.RESI_BASE_INFO.getCode());
Map<String, FormItemResult> allItemMap = resiFormAllItems.stream().collect(Collectors.toMap(FormItemResult::getItemId, o -> o));
Map<String, ExportResiUserItemDTO> map = new HashMap<>();
allItemMap.values().forEach(item->{
allItemMap.values().forEach(item -> {
String tableName = item.getTableName();
ExportResiUserItemDTO exportItem = map.getOrDefault(tableName, new ExportResiUserItemDTO());
map.putIfAbsent(tableName,exportItem);
map.putIfAbsent(tableName, exportItem);
String columnName = item.getColumnName().concat(item.getColumnNum() == NumConstant.ZERO ? StrConstant.EPMETY_STR : item.getColumnNum().toString());
exportItem.getItemMap().put(columnName,item);
if (Constant.OPITON_SOURCE_REMOTE.equals(item.getOptionSourceType())&&item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)){
exportItem.getItemMap().put(columnName, item);
if (Constant.OPITON_SOURCE_REMOTE.equals(item.getOptionSourceType()) && item.getOptionSourceValue().contains(StrConstant.QUESTION_MARK)) {
//多个参数
String[] paramArr = item.getOptionSourceValue().split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK);
Arrays.stream(paramArr).forEach(o->{
Arrays.stream(paramArr).forEach(o -> {
FormItemResult value = allItemMap.get(o);
if (value == null){
if (value == null) {
return;
}
Set<FormItemResult> conditionSet = exportItem.getRemoteItemConditionMap().getOrDefault(item.getItemId(),new HashSet<>());
Set<FormItemResult> conditionSet = exportItem.getRemoteItemConditionMap().getOrDefault(item.getItemId(), new HashSet<>());
conditionSet.add(value);
exportItem.getRemoteItemConditionMap().putIfAbsent(item.getItemId(),conditionSet);
exportItem.getRemoteItemConditionMap().putIfAbsent(item.getItemId(), conditionSet);
});
}
});

61
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserImportServiceImpl.java

@ -23,10 +23,7 @@ import com.epmet.commons.tools.feign.ResultDataResolver;
import com.epmet.commons.tools.redis.RedisKeys;
import com.epmet.commons.tools.redis.RedisUtils;
import com.epmet.commons.tools.redis.common.CustomerStaffRedis;
import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.EpmetRequestHolder;
import com.epmet.commons.tools.utils.FileUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.*;
import com.epmet.constants.ImportTaskConstants;
import com.epmet.dao.IcResiUserDao;
import com.epmet.dao.IcUserChangeDetailedDao;
@ -126,34 +123,26 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
@Autowired
private EpmetUserOpenFeignClient epmetUserOpenFeignClient;
@Autowired
private EpmetHeartOpenFeignClient epmetHeartOpenFeignClient;
@Autowired
private EpmetAdminOpenFeignClient adminOpenFeignClient;
@Autowired
private GovOrgOpenFeignClient govOrgOpenFeignClient;
@Autowired
private IcResiUserDao icResiUserDao;
@Autowired
private OperCustomizeOpenFeignClient operCustomizeOpenFeignClient;
@Autowired
private IcUserChangeRecordDao icUserChangeRecordDao;
@Autowired
private IcUserChangeDetailedDao icUserChangeDetailedDao;
@Autowired
private IcUserTransferRecordDao icUserTransferRecordDao;
@Autowired
private UserService userService;
@Autowired
private RedisUtils redisUtils;
@Autowired
private EpmetCommonServiceOpenFeignClient commonServiceOpenFeignClient;
@Autowired
@ -1187,10 +1176,6 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
List<OptionResultDTO> options = null;
switch (pureUri) {
case "/epmetuser/icresidemanddict/demandoption":
options = getResultDataOrThrowsException(epmetUserOpenFeignClient.getDemandOptions(), ServiceConstant.EPMET_USER_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), null, null);
break;
case "/gov/org/customergrid/gridoption":
GridOptionFormDTO form = new GridOptionFormDTO();
form.setAgencyId(currUserAgencyId);
@ -1285,6 +1270,46 @@ public class IcResiUserImportServiceImpl implements IcResiUserImportService, Res
}
@Override
public Map<String, OptionResultDTO> listRemoteCascadeOptions(String pureUri, String cascadeItemId, Map<String, ColumnWrapper> columnWrappers, String currentStaffAgencyId, String query) {
ColumnWrapper cascadeItemColumnWrapper = null;
// 根据uri上的id,找到关联的itemid,从而找到关联的item的值
if (columnWrappers != null && StringUtils.isNotBlank(cascadeItemId)){
cascadeItemColumnWrapper = columnWrappers.get(cascadeItemId);
}
List<OptionResultDTO> options = null;
switch (pureUri) {
case "/heart/icresidemanddict/demandoption":
options = getResultDataOrThrowsException(epmetHeartOpenFeignClient.getDemandOptions(), ServiceConstant.EPMET_USER_SERVER,
EpmetErrorCode.SERVER_ERROR.getCode(), null, null);
break;
}
if (options == null) {
return null;
}
Map<String, OptionResultDTO> resultMap = new HashMap<>();
options.forEach(option-> getChildren(option,resultMap));
return resultMap;
}
/**
* desc:递归获取children
* @param option
* @param resultMap
* todo 利用泛型 提取到公共类中
*/
public void getChildren(OptionResultDTO option, Map<String, OptionResultDTO> resultMap) {
resultMap.put(option.getValue(),option);
if (CollectionUtils.isNotEmpty(option.getChildren())){
option.getChildren().forEach(o->{
resultMap.put(o.getValue(),o);
getChildren(o,resultMap);
});
}
}
/**
* 更新主表中人员类别标记
* @param icResiUserTableEnum

17
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserServiceImpl.java

@ -685,7 +685,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
if(CollectionUtils.isEmpty(demandCodePath)){
return StrConstant.EPMETY_STR;
}
List<String> nameList=new ArrayList<>();
Set<String> nameList=new HashSet<>();
for(String codePath:demandCodePath){
if (StringUtils.isNotBlank(codePath) && codePath.contains(StrConstant.COMMA)) {
String[] codeAtt=codePath.split(StrConstant.COMMA);
@ -754,12 +754,12 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
String currentStaffAgencyId,
String staffOrgPath){
// List<String> finalSubTables = getFinalSubables(customerId, formCode, resultTableName, conditions);
Map<String,List<String>> map=getFinalSubables(customerId, formCode, resultTableName, conditions);
Map<String,List<String>> map=getFinalSubables(customerId, formCode, resultTableName, conditions, null);
return baseDao.dynamicQuery(customerId,resultTableName,conditions,map.get("finalSubTables"), null, currentStaffAgencyId,staffOrgPath,map.get("groupByTables"));
}
@NotNull
public Map<String,List<String>> getFinalSubables(String customerId, String formCode, String resultTableName, List<ResiUserQueryValueDTO> conditions) {
public Map<String,List<String>> getFinalSubables(String customerId, String formCode, String resultTableName, List<ResiUserQueryValueDTO> conditions, List<String> exportNeedTableList) {
Map<String,List<String>> map=new HashMap<>();
CustomerFormQueryDTO queryDTO=new CustomerFormQueryDTO();
queryDTO.setCustomerId(customerId);
@ -770,9 +770,11 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
List<SubTableJoinDTO> subTables =subTablesRes.getData();
// log.info("1、所有的子表subTables:"+JSON.toJSONString(subTables,true));
//关联哪些子表:查询条件用到的表名+查询的列对应的表 并集去重
Set<String> whereConditionTables=conditions.stream().map(ResiUserQueryValueDTO::getTableName).collect(Collectors.toSet());
Set<String> tables = new HashSet<>(whereConditionTables);
Set<String> tables = conditions.stream().map(ResiUserQueryValueDTO::getTableName).collect(Collectors.toSet());
tables.add(resultTableName);
if (CollectionUtils.isNotEmpty(exportNeedTableList)){
tables.addAll(exportNeedTableList);
}
// log.info("2、查询条件+查询列对应的tables并集去重:"+ JSON.toJSONString(tables,true));
//最终关联的子表对应的sql:
List<String> finalSubTables =new ArrayList<>();
@ -787,7 +789,7 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
}
});
map.put("finalSubTables",finalSubTables);
map.put("groupByTables",groupByTables.stream().collect(Collectors.toList()));
map.put("groupByTables", new ArrayList<>(groupByTables));
return map;
}
@ -1671,7 +1673,8 @@ public class IcResiUserServiceImpl extends BaseServiceImpl<IcResiUserDao, IcResi
@Override
public List<Map<String, Object>> dynamicQuery(String customerId, String formCode, String resultTableName, List<IcCustomExportResultDTO.SqlColumn> showSqlColumns, List<ResiUserQueryValueDTO> conditions, String currentStaffAgencyId, String staffOrgPath) {
// List<String> finalSubTables = getFinalSubables(customerId, formCode, resultTableName, conditions);
Map<String,List<String>> map=getFinalSubables(customerId, formCode, resultTableName, conditions);
List<String> exportNeedTableList = showSqlColumns.stream().map(IcCustomExportResultDTO.SqlColumn::getTableName).collect(Collectors.toList());
Map<String,List<String>> map=getFinalSubables(customerId, formCode, resultTableName, conditions, exportNeedTableList);
return baseDao.dynamicQuery(customerId,resultTableName,conditions,map.get("finalSubTables"),showSqlColumns,currentStaffAgencyId,staffOrgPath,map.get("groupByTables"));
}

2
epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/PatrolRoutineWorkServiceImpl.java

@ -42,7 +42,7 @@ import com.epmet.commons.tools.utils.ConvertUtils;
import com.epmet.commons.tools.utils.ExcelUtils;
import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.utils.YuShanSysApiService;
import com.epmet.commons.tools.utils.poi.excel.FreezeAndFilter;
import com.epmet.commons.tools.utils.poi.excel.handler.FreezeAndFilter;
import com.epmet.constant.SystemMessageType;
import com.epmet.dao.PatrolRoutineWorkDao;
import com.epmet.dao.StatsStaffPatrolRecordDailyDao;

BIN
epmet-user/epmet-user-server/src/main/resources/excel/ic_resi_info_cid_for_easy_excel.xlsx

Binary file not shown.
Loading…
Cancel
Save