Browse Source

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

master
jianjun 4 years ago
parent
commit
7385da6a56
  1. 19
      epmet-module/oper-customize/oper-customize-client/src/main/java/com/epmet/dto/result/TemplateDetailResultDTO.java
  2. 21
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/controller/IcExportTemplateController.java
  3. 13
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/dao/IcExportTemplateDao.java
  4. 22
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/IcExportTemplateService.java
  5. 90
      epmet-module/oper-customize/oper-customize-server/src/main/java/com/epmet/service/impl/IcExportTemplateServiceImpl.java
  6. 31
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcExportTemplateDao.xml
  7. 3
      epmet-module/oper-customize/oper-customize-server/src/main/resources/mapper/IcFormDao.xml
  8. 6
      epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcResiUserController.java
  9. 31
      epmet-user/epmet-user-server/src/main/java/com/epmet/service/impl/IcResiUserExportServiceImpl.java

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

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

@ -1,7 +1,9 @@
package com.epmet.controller;
import com.epmet.commons.tools.annotation.LoginUser;
import com.epmet.commons.tools.aop.NoRepeatSubmit;
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;
@ -12,6 +14,7 @@ import com.epmet.dto.form.IcExportTemplateQueryFormDTO;
import com.epmet.dto.form.IcExportTemplateSaveFormDTO;
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.*;
@ -74,5 +77,23 @@ public class IcExportTemplateController {
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/dao/IcExportTemplateDao.java

@ -4,6 +4,7 @@ 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;
@ -22,4 +23,16 @@ 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);
}

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

@ -2,11 +2,13 @@ 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.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;
@ -79,4 +81,24 @@ public interface IcExportTemplateService extends BaseService<IcExportTemplateEnt
* @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);
}

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

@ -1,5 +1,6 @@
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;
@ -14,6 +15,7 @@ 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.dao.IcExportTemplateDao;
@ -25,6 +27,7 @@ import com.epmet.dto.form.IcExportTemplateSaveFormDTO;
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;
@ -125,12 +128,30 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
tempEntity.setSort(sort);
}
//3.组装待保存和待返回数据对象
//3.递归遍历组装待保存和待返回数据对象【目前业务表单项是两层,此方法支持多层】
packageData(formDTO.getItemList(), "0", customerId, tempId, resultList, itemList);
//4.执行数据保存
if (formDTO.getIsTemp()) {
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;
for (IcExportItemListFormDTO dto : formDTO.getItemList()) {
//1.遍历一级表单项
for (IcExportItemListFormDTO dto : dataList) {
IcExportTemplateConfigEntity itemEntity = ConvertUtils.sourceToTarget(dto, IcExportTemplateConfigEntity.class);
itemEntity.setId(UUID.randomUUID().toString().replace("-", ""));
itemEntity.setPid("0");
itemEntity.setPid(pid);
itemEntity.setCustomerId(customerId);
itemEntity.setTempId(tempId);
num += 1;
@ -141,31 +162,11 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
resultDTO.setPid(itemEntity.getPid());
resultDTO.setSort(itemEntity.getSort());
resultList.add(resultDTO);
int subNum = 0;
for (IcExportItemListFormDTO subDTO : dto.getChildren()) {
IcExportTemplateConfigEntity subItem = ConvertUtils.sourceToTarget(subDTO, IcExportTemplateConfigEntity.class);
subItem.setId(UUID.randomUUID().toString().replace("-", ""));
subItem.setPid(itemEntity.getId());
subItem.setCustomerId(customerId);
subItem.setTempId(tempId);
subNum += 1;
subItem.setSort(subNum);
itemList.add(subItem);
IcExportTemplateForExportResultDTO subResultDTO = ConvertUtils.sourceToTarget(subDTO, IcExportTemplateForExportResultDTO.class);
subResultDTO.setId(subItem.getId());
subResultDTO.setPid(subItem.getPid());
subResultDTO.setSort(subItem.getSort());
resultList.add(subResultDTO);
//2.递归遍历子集表单项
if (!CollectionUtils.isEmpty(dto.getChildren())) {
packageData(dto.getChildren(), itemEntity.getId(), customerId, tempId, resultList, itemList);
}
}
//4.执行数据保存
if (formDTO.getIsTemp()) {
baseDao.insert(tempEntity);
icExportTemplateConfigService.insertBatch(itemList);
}
//5.返回组装数据对象
return resultList;
}
@ -215,6 +216,43 @@ public class IcExportTemplateServiceImpl extends BaseServiceImpl<IcExportTemplat
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);
return ConvertUtils.sourceToTarget(list, IcExportTemplateDTO.class);
}
/**
* 获取模板详情
*
* @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.getColumnName(),root.getOptionSourceType(),root.getOptionSourceValue()));

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

@ -28,6 +28,37 @@
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

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

@ -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)

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

@ -415,10 +415,10 @@ public class IcResiUserController implements ResultDataResolver {
*/
@NoRepeatSubmit
@RequestMapping(value = "/exportExcelCustom")
public void exportExcelCustom(/*@LoginUser*/ TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
public void exportExcelCustom(@LoginUser TokenDto tokenDto, @RequestBody IcResiUserPageFormDTO pageFormDTO, HttpServletResponse response) throws Exception {
//TODO 去掉
tokenDto.setUserId("73ae6280e46a6653a5605d51d5462725");
tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc");
//tokenDto.setUserId("73ae6280e46a6653a5605d51d5462725");
//tokenDto.setCustomerId("45687aa479955f9d06204d415238f7cc");
pageFormDTO.setCustomerId(tokenDto.getCustomerId());
pageFormDTO.setStaffId(tokenDto.getUserId());
ValidatorUtils.validateEntity(pageFormDTO, IcResiUserPageFormDTO.AddUserInternalGroup.class,ExportGroup.class);

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

@ -30,6 +30,7 @@ import com.epmet.service.IcResiUserImportService;
import com.epmet.service.IcResiUserService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.google.common.base.Joiner;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import lombok.extern.slf4j.Slf4j;
@ -111,6 +112,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
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, IcCustomExportResultDTO.SqlColumn> itemMap = showSqlColumns.stream().collect(Collectors.toMap(IcCustomExportResultDTO.SqlColumn::getColumnName, item -> item));
@ -130,12 +132,10 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
ExportResiUserItemDTO exportResiUserItemDTO = itemOriginMap.get(tableName);
FormItemResult formItemResult = exportResiUserItemDTO.getItemMap().get(columnName);
if (StringUtils.isBlank(vauleStr)){
return;
}
String newValue = vauleStr;
if (Constant.OPITON_SOURCE_REMOTE.equals(sqlColumn.getOptionSourceType())) {
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())){
newValue = putOptionValue(formItemResult, vauleStr);
}
@ -178,11 +178,14 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
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)){
for (FormItemResult o : conditionItemSet) {
Object conditionValue = originalConditionMap.getOrDefault(columnName, map.get(columnName));
originalConditionMap.putIfAbsent(columnName,conditionValue.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());
IcResiUserImportServiceImpl.ColumnWrapper value = new IcResiUserImportServiceImpl.ColumnWrapper();
value.setColValue(conditionValue.toString());
columnWrappers.put(o.getItemId(), value);
@ -197,6 +200,8 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
String[] parts = icResiUserImportService.splitOptionSourceUrl(e.getOptionSourceValue());
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())) {
@ -208,7 +213,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
});
}
}
} catch (Exception ex) {
} catch (Exception ex) {
log.error("listRemoteOptions url", ex);
}
}
@ -217,6 +222,16 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
FormItemTypeEnum itemTypeEnum = FormItemTypeEnum.getEnum(e.getItemType());
switch (itemTypeEnum) {
case CHECKBOX:
if (e.getMultiSelect()){
List<String> valueList = new ArrayList<>();
e.getOptions().forEach(option->{
if (vauleStr.contains(option.getValue())){
valueList.add(option.getLabel());
}
});
return Joiner.on(",").join(valueList);
}
for (OptionDTO dto : e.getOptions()) {
return vauleStr.contains(dto.getValue()) ? StrConstant.YES : StrConstant.NO;
}
@ -246,7 +261,7 @@ public class IcResiUserExportServiceImpl implements IcResiUserExportService {
log.error("获取bean IcResiUserService 失败");
return null;
}
List<FormItemResult> resiFormAllItems = icResiUserService.listFormItems(customerId, IcFormCodeEnum.RESI_BASE_INFO.getCode());
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->{

Loading…
Cancel
Save