package com.ltkj.web.tduck; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ltkj.common.core.domain.AjaxResult; import com.ltkj.common.utils.SecurityUtils; import com.ltkj.common.utils.http.HttpUtils; import com.ltkj.tduck.domain.UserFormDataEntity; import com.ltkj.tduck.domain.UserFormViewCountEntity; import com.ltkj.tduck.request.QueryFormResultRequest; import com.ltkj.tduck.service.UserFormDataService; import com.ltkj.tduck.service.UserFormViewCountService; import com.ltkj.tduck.utils.Result; import com.ltkj.tduck.utils.ValidatorUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; /** * 表单数据 * * @author : smalljop * @description : 表单数据页 当前用户自己使用接口 * @create : 2020-11-18 18:17 **/ @Slf4j @RestController @RequiredArgsConstructor @RequestMapping("/user/form/data") public class UserFormResultController { private final UserFormDataService formResultService; // private final UserFormSettingService userFormSettingService; // private final FormDataImportUtils formDataImportUtils; // private final FormDataExportUtils formDataExportUtils; // private final UserFormService userFormService; private final UserFormViewCountService userFormViewCountService; // private final MailService mailService; // private final WxMpUserMsgService userMsgService; private final ConcurrentMap viewFormMap = new ConcurrentHashMap<>(); /** * 根据体检号获取问卷记录 */ @GetMapping("getRecordByTjNumber") public AjaxResult getRecordByTjNumber(String tjNumber) { LambdaQueryWrapper wq=new LambdaQueryWrapper<>(); wq.eq(UserFormDataEntity::getTjNumber,tjNumber); final List list = formResultService.list(wq); AjaxResult ajaxResult = new AjaxResult(); ajaxResult.put("code", 200); ajaxResult.put("data", list); ajaxResult.put("msg", null); return ajaxResult; } /*** * 查看表单 * 记录查看的IP 统计查看用户数 */ @GetMapping("view/{formKey}") @PermitAll public Result viewForm(HttpServletRequest request, @PathVariable("formKey") String formKey) { if (viewFormMap.containsKey(formKey)) { userFormViewCountService.increment(formKey); } else { // 不存在则添加 Long count = userFormViewCountService.count(formKey); if (count == 0) { UserFormViewCountEntity entity = new UserFormViewCountEntity(); entity.setFormKey(formKey); entity.setCount(1L); userFormViewCountService.save(entity); } viewFormMap.put(formKey, 1); } return Result.success(); } /** * 查询数据 * * @param request 查询条件 * @return 数据 */ @PostMapping("query") public Result queryFormDataTable(@RequestBody QueryFormResultRequest request) { // FormAuthUtils.hasPermission(request.getFormKey()); return Result.success(formResultService.listFormDataTable(request)); } /** * 获取某条数据详情 * * @param dataId 数据ID * @return 数据详情 */ @GetMapping("details/{dataId}") @PermitAll public Result getFormDataDetails(@PathVariable("dataId") String dataId) { return formResultService.getFormDataDetails(dataId); } // // // /** // * 填写附件导出 // * // * @param request 请求 // * @return 文件 // */ // @PostMapping("/download/file") // public Result downloadFormResultFile(@RequestBody QueryFormResultRequest request) { // return formResultService.downloadFormResultFile(request); // } /** * 填写 * * @param entity 填写数据 * @param request 请求 * @return */ @PostMapping("/create") public AjaxResult createFormResult(@RequestBody UserFormDataEntity entity, HttpServletRequest request) { ValidatorUtils.validateEntity(entity); entity.setSubmitRequestIp(HttpUtils.getIpAddr(request)); // 如果已经登陆了也记录用户信息 try catch 避免抛出异常 entity.setCreateBy(SecurityUtils.getUserId() != null ? String.valueOf(SecurityUtils.getUserId()) : null); Map result = formResultService.saveFormResult(entity); return AjaxResult.success(result); } /** * 公开填写 * * @param entity 填写数据 * @param request 请求 */ @PostMapping("/public/create") @PermitAll public Result> createPublicFormResult(@RequestBody UserFormDataEntity entity, HttpServletRequest request) { ValidatorUtils.validateEntity(entity); entity.setSubmitRequestIp(HttpUtils.getIpAddr(request)); // Result userFormSettingStatus = userFormSettingService.getUserFormWriteSettingStatus(entity.getFormKey(), entity.getSubmitRequestIp(), entity.getWxOpenId(), CommonConstants.ConstantNumber.ONE); // if (StrUtil.isNotBlank(userFormSettingStatus.getMsg())) { // return Result.failed(userFormSettingStatus.getMsg()); // } // 如果已经登陆了也记录用户信息 try catch 避免抛出异常 entity.setCreateBy(SecurityUtils.getUserId() != null ? String.valueOf(SecurityUtils.getUserId()) : null); Map result = formResultService.saveFormResult(entity); // ThreadUtil.execAsync(() -> { // sendWriteResultNotify(entity.getFormKey()); // }); return Result.success(result); // return Result.success(); } // // /** // * 批量删除 // * // * @param formKey 表单key // * @param dataIdList 数据ID // * @return Result // */ // @PostMapping("/delete/{formKey}") // public Result deleteFormData(@RequestBody List dataIdList, @PathVariable("formKey") String formKey) { // formResultService.deleteByIds(dataIdList, formKey); // return Result.success(); // } // /** // * 更新 // * // * @param entity 填写数据 // * @param request 请求 // * @return Result // */ // @PostMapping("/update") // @PermitAll // public Result updateFormResult(@RequestBody UserFormDataEntity entity, HttpServletRequest request) { // ValidatorUtils.validateEntity(entity); // try { // entity.setUpdateBy(String.valueOf(SecurityUtils.getUserId())); // } catch (Exception ignored) { // } // formResultService.updateFormResult(entity); // return Result.success(); // } // // /** // * 下载导入模板 // * // * @param response 响应 // * @param formKey 表单key // */ // @GetMapping("/import/template") // public void downloadImportTemplate(HttpServletResponse response, String formKey) { // formDataImportUtils.importTemplateExcel(response, formKey); // } // // /** // * 导出表单数据 // */ // @PostMapping("export") // public void exportFormData(@RequestBody ExportRequest.FormData exportRequest) { // formDataExportUtils.exportData(exportRequest); // } // // /** // * 导入表单数据 // * // * @param file 文件 // * @return Result // */ // @PostMapping("import") // public Result importFormData(@RequestParam("file") MultipartFile file, UserFormDataEntity dataEntity) throws IOException { // return Result.success(formDataImportUtils.importFile(file.getInputStream(), dataEntity.getFormKey())); // } // // // private void sendWriteResultNotify(String formKey) { // FormSettingSchemaStruct formSettingSchema = userFormSettingService.getFormSettingSchema(formKey); // if (ObjectUtil.isNull(formSettingSchema)) { // return; // } // UserFormEntity form = userFormService.getByKey(formKey); // if (StrUtil.isNotBlank(formSettingSchema.getNewWriteNotifyEmail())) { // mailService.sendTemplateHtmlMail(formSettingSchema.getNewWriteNotifyEmail(), "新回复通知", "mail/form-write-notify", MapUtil.of("projectName", form.getName())); // } // // if (StrUtil.isNotBlank(formSettingSchema.getNewWriteNotifyWx())) { // List openIdList = StrUtil.splitTrim(formSettingSchema.getNewWriteNotifyWx(), ";"); // openIdList.stream().forEach(openId -> { // userMsgService.sendKfTextMsg("", openId, "收到新的反馈,请去Pc端查看"); // }); // } // } }