|
|
@ -17,34 +17,34 @@ |
|
|
|
|
|
|
|
package com.epmet.service.impl; |
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON; |
|
|
|
import com.alibaba.fastjson.JSONArray; |
|
|
|
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.constant.NumConstant; |
|
|
|
import com.epmet.commons.tools.constant.StrConstant; |
|
|
|
import com.epmet.commons.tools.exception.EpmetErrorCode; |
|
|
|
import com.epmet.commons.tools.exception.RenException; |
|
|
|
import com.epmet.commons.tools.page.PageData; |
|
|
|
import com.epmet.commons.tools.redis.RedisKeys; |
|
|
|
import com.epmet.commons.tools.redis.RedisUtils; |
|
|
|
import com.epmet.commons.tools.utils.ConvertUtils; |
|
|
|
import com.epmet.dao.IcFormDao; |
|
|
|
import com.epmet.dto.IcFormDTO; |
|
|
|
import com.epmet.commons.tools.utils.DateUtils; |
|
|
|
import com.epmet.dao.*; |
|
|
|
import com.epmet.dto.form.CustomerFormQueryDTO; |
|
|
|
import com.epmet.dto.result.CustomerFormResultDTO; |
|
|
|
import com.epmet.dto.result.FormGroupDTO; |
|
|
|
import com.epmet.dto.result.FormItemResult; |
|
|
|
import com.epmet.entity.IcFormEntity; |
|
|
|
import com.epmet.entity.*; |
|
|
|
import com.epmet.redis.CustomerFootBarRedis; |
|
|
|
import com.epmet.service.IcFormService; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
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 org.springframework.util.CollectionUtils; |
|
|
|
|
|
|
|
import java.util.Arrays; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
/** |
|
|
|
* 配置表单 |
|
|
@ -52,65 +52,22 @@ import java.util.Map; |
|
|
|
* @author generator generator@elink-cn.com |
|
|
|
* @since v1.0.0 2021-10-26 |
|
|
|
*/ |
|
|
|
@Slf4j |
|
|
|
@Service |
|
|
|
public class IcFormServiceImpl extends BaseServiceImpl<IcFormDao, IcFormEntity> implements IcFormService { |
|
|
|
@Autowired |
|
|
|
@Autowired |
|
|
|
private CustomerFootBarRedis customerFootBarRedis; |
|
|
|
|
|
|
|
@Autowired |
|
|
|
private RedisUtils redisUtils; |
|
|
|
|
|
|
|
@Override |
|
|
|
public PageData<IcFormDTO> page(Map<String, Object> params) { |
|
|
|
IPage<IcFormEntity> page = baseDao.selectPage( |
|
|
|
getPage(params, FieldConstant.CREATED_TIME, false), |
|
|
|
getWrapper(params) |
|
|
|
); |
|
|
|
return getPageData(page, IcFormDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public List<IcFormDTO> list(Map<String, Object> params) { |
|
|
|
List<IcFormEntity> entityList = baseDao.selectList(getWrapper(params)); |
|
|
|
|
|
|
|
return ConvertUtils.sourceToTarget(entityList, IcFormDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
private QueryWrapper<IcFormEntity> getWrapper(Map<String, Object> params){ |
|
|
|
String id = (String)params.get(FieldConstant.ID_HUMP); |
|
|
|
|
|
|
|
QueryWrapper<IcFormEntity> wrapper = new QueryWrapper<>(); |
|
|
|
wrapper.eq(StringUtils.isNotBlank(id), FieldConstant.ID, id); |
|
|
|
|
|
|
|
return wrapper; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public IcFormDTO get(String id) { |
|
|
|
IcFormEntity entity = baseDao.selectById(id); |
|
|
|
return ConvertUtils.sourceToTarget(entity, IcFormDTO.class); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void save(IcFormDTO dto) { |
|
|
|
IcFormEntity entity = ConvertUtils.sourceToTarget(dto, IcFormEntity.class); |
|
|
|
insert(entity); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void update(IcFormDTO dto) { |
|
|
|
IcFormEntity entity = ConvertUtils.sourceToTarget(dto, IcFormEntity.class); |
|
|
|
updateById(entity); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public void delete(String[] ids) { |
|
|
|
// 逻辑删除(@TableLogic 注解)
|
|
|
|
baseDao.deleteBatchIds(Arrays.asList(ids)); |
|
|
|
} |
|
|
|
@Autowired |
|
|
|
private RedisUtils redisUtils; |
|
|
|
@Autowired |
|
|
|
private IcFormItemDao icFormItemDao; |
|
|
|
@Autowired |
|
|
|
private IcFormItemOptionsDao icFormItemOptionsDao; |
|
|
|
@Autowired |
|
|
|
private IcFormItemGroupDao icFormItemGroupDao; |
|
|
|
@Autowired |
|
|
|
private IcFormQueryBuilderDao icFormQueryBuilderDao; |
|
|
|
|
|
|
|
/** |
|
|
|
* 获取居民信息表单 |
|
|
@ -122,19 +79,19 @@ public class IcFormServiceImpl extends BaseServiceImpl<IcFormDao, IcFormEntity> |
|
|
|
*/ |
|
|
|
@Override |
|
|
|
public CustomerFormResultDTO getCustomerForm(CustomerFormQueryDTO formDto) { |
|
|
|
CustomerFormResultDTO customerFormResultDTO = customerFootBarRedis.getCustomerFormResultDTO(formDto.getFormCode(), formDto.getCustomerId(),formDto.getDynamic()); |
|
|
|
CustomerFormResultDTO customerFormResultDTO = customerFootBarRedis.getCustomerFormResultDTO(formDto.getFormCode(), formDto.getCustomerId(), formDto.getDynamic()); |
|
|
|
if (null != customerFormResultDTO) { |
|
|
|
return customerFormResultDTO; |
|
|
|
} |
|
|
|
CustomerFormResultDTO resultDTO=baseDao.selectByCode(formDto.getCustomerId(),formDto.getFormCode()); |
|
|
|
CustomerFormResultDTO resultDTO = baseDao.selectByCode(formDto.getCustomerId(), formDto.getFormCode()); |
|
|
|
if (null == resultDTO) { |
|
|
|
throw new RenException(EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getCode(),EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getMsg()); |
|
|
|
throw new RenException(EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getCode(), EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getMsg()); |
|
|
|
} |
|
|
|
List<FormItemResult> itemList=baseDao.selectItemList(resultDTO.getFormId(),formDto.getDynamic()); |
|
|
|
List<FormGroupDTO> groupList=baseDao.selectListGroup(resultDTO.getFormId()); |
|
|
|
List<FormItemResult> itemList = baseDao.selectItemList(resultDTO.getFormId(), formDto.getDynamic()); |
|
|
|
List<FormGroupDTO> groupList = baseDao.selectListGroup(resultDTO.getFormId()); |
|
|
|
resultDTO.setItemList(itemList); |
|
|
|
resultDTO.setGroupList(groupList); |
|
|
|
customerFootBarRedis.setCustomerFormResultDTO(formDto.getFormCode(),formDto.getCustomerId(),resultDTO,formDto.getDynamic()); |
|
|
|
customerFootBarRedis.setCustomerFormResultDTO(formDto.getFormCode(), formDto.getCustomerId(), resultDTO, formDto.getDynamic()); |
|
|
|
return resultDTO; |
|
|
|
} |
|
|
|
|
|
|
@ -150,9 +107,9 @@ public class IcFormServiceImpl extends BaseServiceImpl<IcFormDao, IcFormEntity> |
|
|
|
} |
|
|
|
|
|
|
|
// 从db取
|
|
|
|
CustomerFormResultDTO formResultDto=baseDao.selectByCode(customerId, formCode); |
|
|
|
CustomerFormResultDTO formResultDto = baseDao.selectByCode(customerId, formCode); |
|
|
|
if (null == formResultDto) { |
|
|
|
throw new RenException(EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getCode(),EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getMsg()); |
|
|
|
throw new RenException(EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getCode(), EpmetErrorCode.CUSTOMER_FORM_NOT_EXITS.getMsg()); |
|
|
|
} |
|
|
|
|
|
|
|
List<FormItemResult> formItemResults = baseDao.listItems(formResultDto.getFormId()); |
|
|
@ -165,4 +122,97 @@ public class IcFormServiceImpl extends BaseServiceImpl<IcFormDao, IcFormEntity> |
|
|
|
|
|
|
|
return formItemResults; |
|
|
|
} |
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
@Override |
|
|
|
public String initCustomerFormByCode(String customerId, String areaCode, String formCode) { |
|
|
|
CustomerFormResultDTO formResultDTO = baseDao.selectByCode(customerId, formCode); |
|
|
|
if (formResultDTO != null) { |
|
|
|
return "该客户已经存在了表单的数据"; |
|
|
|
} |
|
|
|
String defaultCustomerId = "default"; |
|
|
|
LambdaQueryWrapper<IcFormEntity> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
wrapper.eq(IcFormEntity::getCustomerId, defaultCustomerId); |
|
|
|
wrapper.eq(IcFormEntity::getFormCode, formCode); |
|
|
|
IcFormEntity defaultIcForm = baseDao.selectOne(wrapper); |
|
|
|
if (defaultIcForm == null) { |
|
|
|
return "默认配置错误"; |
|
|
|
} |
|
|
|
|
|
|
|
//统一前缀
|
|
|
|
String newPrefixed = DateUtils.format(new Date(), DateUtils.DATE_TIME_NO_SPLIT) + StrConstant.UNDER_LINE; |
|
|
|
String newFormId = newPrefixed + defaultIcForm.getId(); |
|
|
|
defaultIcForm.setId(newFormId); |
|
|
|
defaultIcForm.setAreaCode(areaCode); |
|
|
|
|
|
|
|
int insert = baseDao.insert(defaultIcForm); |
|
|
|
log.info("insert icForm:" + insert); |
|
|
|
|
|
|
|
LambdaQueryWrapper<IcFormItemEntity> wrapperItem = new LambdaQueryWrapper<>(); |
|
|
|
wrapperItem.eq(IcFormItemEntity::getCustomerId, defaultCustomerId); |
|
|
|
wrapperItem.eq(IcFormItemEntity::getFormCode, formCode); |
|
|
|
List<IcFormItemEntity> itemList = icFormItemDao.selectList(wrapperItem); |
|
|
|
if (CollectionUtils.isEmpty(itemList)) { |
|
|
|
return "默认配置错误"; |
|
|
|
} |
|
|
|
//设置item
|
|
|
|
itemList.forEach(item -> { |
|
|
|
item.setId(newPrefixed + item.getId()); |
|
|
|
item.setCustomerId(customerId); |
|
|
|
item.setFormId(newFormId); |
|
|
|
item.setAreaCode(areaCode); |
|
|
|
item.setParentItemId(newPrefixed + item.getParentItemId()); |
|
|
|
item.setItemGroupId(newPrefixed + item.getItemGroupId()); |
|
|
|
String optionSourceValue = item.getOptionSourceValue(); |
|
|
|
if (StringUtils.isNotBlank(optionSourceValue) && optionSourceValue.contains(StrConstant.QUESTION_MARK)){ |
|
|
|
//多个参数
|
|
|
|
String[] paramArr = optionSourceValue.split(StrConstant.QUESTION_MARK_TRANSFER)[NumConstant.ONE].split(StrConstant.AND_MARK); |
|
|
|
for (String o : paramArr) { |
|
|
|
optionSourceValue = optionSourceValue.replace(o, newPrefixed + o); |
|
|
|
} |
|
|
|
item.setOptionSourceValue(optionSourceValue); |
|
|
|
} |
|
|
|
log.debug("item:"+ JSON.toJSONString(item)); |
|
|
|
icFormItemDao.insert(item); |
|
|
|
}); |
|
|
|
|
|
|
|
LambdaQueryWrapper<IcFormItemOptionsEntity> wrapperOptions = new LambdaQueryWrapper<>(); |
|
|
|
wrapperOptions.eq(IcFormItemOptionsEntity::getCustomerId, defaultCustomerId); |
|
|
|
wrapperOptions.eq(IcFormItemOptionsEntity::getFormCode, formCode); |
|
|
|
List<IcFormItemOptionsEntity> optionsList = icFormItemOptionsDao.selectList(wrapperOptions); |
|
|
|
optionsList.forEach(item -> { |
|
|
|
item.setId(newPrefixed + item.getId()); |
|
|
|
item.setCustomerId(customerId); |
|
|
|
item.setFormId(newFormId); |
|
|
|
item.setItemId(newPrefixed + item.getItemId()); |
|
|
|
log.debug("option:"+ JSON.toJSONString(item)); |
|
|
|
icFormItemOptionsDao.insert(item); |
|
|
|
}); |
|
|
|
|
|
|
|
LambdaQueryWrapper<IcFormItemGroupEntity> wrapperGroup = new LambdaQueryWrapper<>(); |
|
|
|
wrapperGroup.eq(IcFormItemGroupEntity::getCustomerId, defaultCustomerId); |
|
|
|
wrapperGroup.eq(IcFormItemGroupEntity::getFormCode, formCode); |
|
|
|
List<IcFormItemGroupEntity> groupList = icFormItemGroupDao.selectList(wrapperGroup); |
|
|
|
groupList.forEach(item -> { |
|
|
|
item.setId(newPrefixed + item.getId()); |
|
|
|
item.setCustomerId(customerId); |
|
|
|
item.setFormId(newFormId); |
|
|
|
log.debug("group:"+ JSON.toJSONString(item)); |
|
|
|
icFormItemGroupDao.insert(item); |
|
|
|
}); |
|
|
|
|
|
|
|
LambdaQueryWrapper<IcFormQueryBuilderEntity> wrapperQuery = new LambdaQueryWrapper<>(); |
|
|
|
wrapperQuery.eq(IcFormQueryBuilderEntity::getCustomerId, defaultCustomerId); |
|
|
|
wrapperQuery.eq(IcFormQueryBuilderEntity::getFormCode, formCode); |
|
|
|
List<IcFormQueryBuilderEntity> queryList = icFormQueryBuilderDao.selectList(wrapperQuery); |
|
|
|
queryList.forEach(item -> { |
|
|
|
item.setId(newPrefixed + item.getId()); |
|
|
|
item.setCustomerId(customerId); |
|
|
|
item.setFormItemId(newPrefixed + item.getFormItemId()); |
|
|
|
log.debug("query:"+ JSON.toJSONString(item)); |
|
|
|
icFormQueryBuilderDao.insert(item); |
|
|
|
}); |
|
|
|
|
|
|
|
return "初始化成功!客户ID:" + customerId + " formCode:" + formCode; |
|
|
|
} |
|
|
|
} |
|
|
|