//package com.ltkj.tduck.service.impl; // //import cn.hutool.core.bean.BeanUtil; //import cn.hutool.core.map.MapUtil; //import cn.hutool.core.util.ObjectUtil; //import cn.hutool.core.util.StrUtil; //import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; //import com.ltkj.common.utils.ip.AddressUtils; //import com.ltkj.tduck.constant.CommonConstants; //import com.ltkj.tduck.domain.UserFormDataEntity; //import com.ltkj.tduck.mapper.UserFormDataMapper; //import com.ltkj.tduck.request.QueryFormResultRequest; //import com.ltkj.tduck.service.UserFormDataService; //import com.ltkj.tduck.service.UserFormItemService; //import com.ltkj.tduck.utils.CacheUtils; //import com.ltkj.tduck.utils.FormDataUtils; //import com.ltkj.tduck.utils.Result; //import com.ltkj.tduck.vo.FormDataTableVO; //import com.ltkj.tduck.vo.FormFieldVO; //import lombok.RequiredArgsConstructor; //import lombok.extern.slf4j.Slf4j; //import org.springframework.stereotype.Service; //import org.springframework.transaction.annotation.Transactional; // //import java.util.HashMap; //import java.util.List; //import java.util.Map; // //import static com.ltkj.tduck.constant.FormRedisKeyConstants.FORM_RESULT_NUMBER; // // ///** // * 表单表单项(FormResult)表服务实现类 // * // * @author smalljop // * @since 2020-11-23 14:09:22 // */ //@Service //@Slf4j //@RequiredArgsConstructor //public class UserFormDataServiceImpl extends ServiceImpl implements UserFormDataService { // // private final UserFormItemService userFormItemService; // private final CacheUtils redisUtils; // private final FormDataUtils formDataUtils; // // // @Override // @Transactional(rollbackFor = Exception.class) // public Map saveFormResult(UserFormDataEntity entity) { // HashMap result = MapUtil.newHashMap(); // String formKey = entity.getFormKey(); // entity.setSubmitAddress(AddressUtils.getRealAddressByIP(entity.getSubmitRequestIp())); // entity.setSerialNumber(redisUtils.incr(StrUtil.format(FORM_RESULT_NUMBER, formKey), CommonConstants.ConstantNumber.ONE)); // this.save(entity); //// formDataUtils.syncSaveFormData(entity); // result.put("id", entity.getId()); // return result; // } // // // /** // * 下载表单结果中的附件 // * // * @param request // * @return // */ //// @Override //// public Result downloadFormResultFile(QueryFormResultRequest request) { //// String uuid = IdUtil.simpleUUID(); //// List userFormItemEntityList = userFormItemService.list(Wrappers.lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).in(UserFormItemEntity::getType, CollUtil.newArrayList(FormItemTypeEnum.UPLOAD.toString(), FormItemTypeEnum.IMAGE_UPLOAD.toString()))); //// //结果 //// List rows = null; //// if (ObjectUtil.isNull(request.getCurrent()) && ObjectUtil.isNull(request.getSize())) { //// rows = formDataUtils.searchAll(request); //// } else { //// FormDataTableVO formDataTableVO = this.listFormDataTable(request); //// rows = formDataTableVO.getRows(); //// } //// if (CollectionUtil.isEmpty(rows) || CollectionUtil.isEmpty(userFormItemEntityList)) { //// return Result.failed("暂无收集附件,无法下载"); //// } //// List finalRows = rows; //// ThreadUtil.execAsync(() -> { //// TimeInterval timer = DateUtil.timer(); //// List paths = new ArrayList<>(); //// List ins = new ArrayList<>(); //// try { //// finalRows.forEach(result -> { //// int index = 0; //// userFormItemEntityList.forEach(item -> { //// List uploadResults = JsonUtils.jsonToList(JsonUtils.objToJson(MapUtil.get(result, item.getFormItemId(), List.class)), UploadResultStruct.class); //// if (CollectionUtil.isNotEmpty(uploadResults)) { //// uploadResults.forEach(uFile -> { //// if (StrUtil.isNotBlank(uFile.getUrl())) { //// paths.add(FileNameUtil.getName(uFile.getUrl())); //// byte[] bytes = HttpUtil.downloadBytes(uFile.getUrl()); //// ins.add(IoUtil.toStream(bytes)); //// } //// }); //// } //// }); //// AsyncProcessUtils.setProcess(uuid, ++index / finalRows.size()); //// }); //// // 压缩上传oss //// ByteArrayOutputStream zipOutputStream = new ByteArrayOutputStream(); //// ZipUtil.zip(zipOutputStream, paths.toArray(new String[]{}), ins.toArray(new InputStream[]{})); //// String downloadUrl = OssStorageFactory.getStorageService().upload(zipOutputStream.toByteArray(), StorageUtils.generateFileName("download", ".zip")); //// AsyncProcessUtils.setProcess(uuid, downloadUrl); //// log.info("export file cost time: {}", timer.interval()); //// } catch (Exception e) { //// log.error("download file", e); //// } //// }); //// return Result.success(uuid); //// } //// //// // @Override // public FormDataTableVO listFormDataTable(QueryFormResultRequest request) { // return formDataUtils.search(request); // } //// //// //// @Override //// public Boolean deleteByIds(List dataIdList, String formKey) { //// baseMapper.deleteBatchIds(dataIdList); //// formDataUtils.asyncDeleteEsDocument(dataIdList, formKey); //// return true; //// } //// //// @Override //// public Boolean updateFormResult(UserFormDataEntity entity) { //// UserFormDataEntity dataEntity = this.getById(entity.getId()); //// dataEntity.setOriginalData(entity.getOriginalData()); //// dataEntity.setUpdateBy(entity.getUpdateBy()); //// boolean update = this.updateById(dataEntity); //// // 查询数据 同步到es 避免数据变空被覆盖 //// formDataUtils.asyncUpdateEsDocument(dataEntity); //// return update; //// } // // @Override // public Result getFormDataDetails(String dataId) { // Map result =new HashMap<>(); // UserFormDataEntity dataEntity = this.getById(dataId); // List formFields = userFormItemService.listFormFields(dataEntity.getFormKey()); // // 表单字段 // result.put("formFields", formFields); // // 表单填写数据 // if (ObjectUtil.isNotNull(dataEntity)) { // Map originalData = dataEntity.getOriginalData(); // dataEntity.setOriginalData(null); // originalData.putAll(BeanUtil.beanToMap(dataEntity, false, true)); // result.put("formData", originalData); // } // return Result.success(result); // } //}