From cebb05f8d1ddbf5ac415c5471e17d2d94ea1a6de Mon Sep 17 00:00:00 2001 From: zjh <1084500556@qq.com> Date: 星期三, 15 五月 2024 18:14:07 +0800 Subject: [PATCH] zjh 2024/05/15-1 --- ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java | 2 ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormSettingController.java | 284 +++--- ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSurveyTemplateController.java | 65 + ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjSurveyTemplateServiceImpl.java | 3 ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormResultController.java | 456 ++++---- ltkj-admin/src/main/resources/application.yml | 3 ltkj-admin/src/main/java/com/ltkj/LtkjApplication.java | 2 ltkj-system/src/main/java/com/ltkj/tduck/utils/SortUtils.java | 218 ++-- ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormController.java | 624 ++++++------ ltkj-framework/pom.xml | 13 ltkj-system/src/main/java/com/ltkj/tduck/service/UserFormSettingService.java | 122 +- ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java | 6 ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormSettingServiceImpl.java | 388 ++++---- ltkj-system/src/main/java/com/ltkj/tduck/utils/CacheUtils.java | 233 ++-- ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormDataServiceImpl.java | 312 +++--- 15 files changed, 1,414 insertions(+), 1,317 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/LtkjApplication.java b/ltkj-admin/src/main/java/com/ltkj/LtkjApplication.java index 32ea5ec..d939d7e 100644 --- a/ltkj-admin/src/main/java/com/ltkj/LtkjApplication.java +++ b/ltkj-admin/src/main/java/com/ltkj/LtkjApplication.java @@ -16,7 +16,7 @@ @EnableTransactionManagement @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class},scanBasePackages = {"org.jeecg.modules.jmreport","com.ltkj"}) @EnableAsync -//@EnableCaching +@EnableCaching public class LtkjApplication { public static void main(String[] args) { //spring-boot-devtools鐨勬ā鍧椾娇Spring Boot搴旂敤鏀寔鐑儴缃诧紝鏃犻渶鎵嬪姩閲嶅惎Spring Boot搴旂敤銆� diff --git a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSurveyTemplateController.java b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSurveyTemplateController.java index 36f2de7..8e22ec7 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSurveyTemplateController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/controller/system/TjSurveyTemplateController.java @@ -8,11 +8,14 @@ import cn.hutool.core.date.DateTime; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.ltkj.common.core.domain.TreeSelect; +import com.ltkj.common.core.domain.entity.SysDept; import com.ltkj.hosp.domain.TjSurveyOptions; import com.ltkj.hosp.domain.TjSurveyQuestion; import com.ltkj.hosp.domain.TjSurveyTempQues; import com.ltkj.hosp.service.ITjSurveyQuestionService; import com.ltkj.system.service.ISysConfigService; +import com.ltkj.system.service.ISysDeptService; import com.ltkj.tduck.domain.UserFormEntity; import com.ltkj.tduck.enums.FormSourceTypeEnum; import com.ltkj.tduck.enums.FormStatusEnum; @@ -53,6 +56,8 @@ @Autowired private UserFormService formService; + @Autowired + private ISysDeptService deptService; /** * 鍒ゆ柇鏄惁寮�鍚~楦〃鍗曡璁� @@ -155,6 +160,21 @@ } return AjaxResult.success("鏆傛棤淇℃伅"); + + +// List<TjSurveyQuestion> l11=new ArrayList<>(); +// TjSurveyTemplate byId1 = tjSurveyTemplateService.selectTjSurveyTemplateByMid(mid); +// List<TjSurveyTempQues> tjSurveyTempQuesList = byId1.getTjSurveyTempQuesList(); +// if (tjSurveyTempQuesList!=null){ +// for (TjSurveyTempQues tjSurveyTempQues : tjSurveyTempQuesList) { +// TjSurveyQuestion byId11 = tjSurveyQuestionService.selectTjSurveyQuestionByQid(tjSurveyTempQues.getQid()); +// if (byId11!=null){ +// l11.add(byId11); +// } +// } +// return AjaxResult.success(l11); +// } +// return AjaxResult.success("鏆傛棤淇℃伅"); } @@ -194,6 +214,51 @@ return AjaxResult.success(false); } + @GetMapping("/getQuestionsByMid") + public Map<String, Object> getQuestionsByMid(@RequestParam("mid") Long mid, + @RequestParam(required = false) String question, + @RequestParam("pageNum") int pageNum, + @RequestParam("pageSize") int pageSize) { + Map<String, Object> res = new HashMap<>(); +// List<TjSurveyQuestion> list = tjSurveyTemplateService.getQuestionsByMid(mid); + LambdaQueryWrapper<TjSurveyQuestion> wq1=new LambdaQueryWrapper<>(); + wq1.eq(TjSurveyQuestion::getMid,mid); + if(null !=question && !question.equals("")){ + wq1.like(TjSurveyQuestion::getQuestion,question); + } + final List<TjSurveyQuestion> list = tjSurveyQuestionService.list(wq1); + + int start = 0, end = 0; + start = (pageNum - 1) * pageSize; + end = start + pageSize; + end = Math.min(list.size(), end); + List<TjSurveyQuestion> result = new ArrayList<>(); + for (int i = start; i < end; i++) { + result.add(list.get(i)); + } + final TjSurveyTemplate byId = tjSurveyTemplateService.selectTemplateByMid1(mid); + for (TjSurveyQuestion tjSurveyQuestion : result) { + tjSurveyQuestion.setTemplate(byId); + final List<TjSurveyOptions> tjSurveyOptions = tjSurveyQuestionService.selectOptionsByQid(tjSurveyQuestion.getQid()); + tjSurveyQuestion.setTjSurveyOptionsList(tjSurveyOptions); + } + res.put("data", result); +// res.put("temp", tjSurveyTemplateService.selectTjSurveyTemplateByMid(mid)); + res.put("total", list.size()); + return res; + } + + + /** + * 鏌ヨ闂嵎妯℃澘鍒楄〃 + */ + @GetMapping("/listByDeptId") + public AjaxResult listByDeptId(SysDept dept) { + List<TreeSelect> treeSelects =deptService.selectDeptList1(dept); + return AjaxResult.success(treeSelects); + } + + /** * 淇敼闂嵎妯℃澘 */ diff --git a/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormController.java b/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormController.java index ffda232..1cd982f 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormController.java @@ -1,311 +1,315 @@ -//package com.ltkj.web.tduck; -// -//import cn.hutool.core.util.ObjectUtil; -//import cn.hutool.core.util.StrUtil; -//import cn.hutool.json.JSONObject; -//import cn.hutool.json.JSONUtil; -//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import com.baomidou.mybatisplus.core.toolkit.Wrappers; -//import com.ltkj.common.core.domain.AjaxResult; -//import com.ltkj.tduck.constant.CommonConstants; -//import com.ltkj.tduck.domain.*; -//import com.ltkj.tduck.enums.FormStatusEnum; -//import com.ltkj.tduck.enums.FormTypeEnum; -//import com.ltkj.tduck.request.QueryFormItemRequest; -//import com.ltkj.tduck.request.QueryFormRequest; -//import com.ltkj.tduck.request.QueryFormTemplateTypeRequest; -//import com.ltkj.tduck.request.SortFormItemRequest; -//import com.ltkj.tduck.service.*; -//import com.ltkj.tduck.utils.FormDataUtils; -//import com.ltkj.tduck.utils.Result; -//import com.ltkj.tduck.utils.SortUtils; -//import com.ltkj.tduck.utils.ValidatorUtils; -//import com.ltkj.tduck.vo.FormFieldVO; -//import com.ltkj.tduck.vo.OperateFormItemVO; -//import com.ltkj.tduck.vo.UserFormDetailVO; -//import lombok.RequiredArgsConstructor; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.web.bind.annotation.*; -// -//import javax.annotation.Resource; -//import javax.annotation.security.PermitAll; -//import javax.validation.constraints.NotBlank; -//import java.util.ArrayList; -//import java.util.Comparator; -//import java.util.Date; -//import java.util.List; -// -// -///** -// * 鐢ㄦ埛琛ㄥ崟 -// **/ -//@RequiredArgsConstructor -//@RestController -//@Slf4j -////@RequestMapping("/tduck-api") -//public class UserFormController { -// @Resource -// private final UserFormService formService; -// @Resource -// private final UserFormItemService formItemService; -// @Resource -// private final FormTemplateCategoryService formTemplateCategoryService; -// @Resource -// private final SortUtils sortUtils; -// -// private final UserFormThemeService userFormThemeService; -// private final UserFormLogicService userFormLogicService; -// -// -// /** -// * 鏌ヨ琛ㄥ崟 -// */ -// @GetMapping("/user/form/{key}") -// public AjaxResult queryFormByKey(@PathVariable @NotBlank String key) { -// return AjaxResult.success(formService.getByKey(key)); -// } -// -// /** -// * 椤圭洰琛ㄥ崟椤规煡璇� -// */ -// @GetMapping("/user/form/item/list") -// public AjaxResult queryFormItems(QueryFormItemRequest request) { +package com.ltkj.web.tduck; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ltkj.common.core.domain.AjaxResult; +import com.ltkj.tduck.constant.CommonConstants; +import com.ltkj.tduck.domain.*; +import com.ltkj.tduck.enums.FormStatusEnum; +import com.ltkj.tduck.enums.FormTypeEnum; +import com.ltkj.tduck.request.QueryFormItemRequest; +import com.ltkj.tduck.request.QueryFormRequest; +import com.ltkj.tduck.request.QueryFormTemplateTypeRequest; +import com.ltkj.tduck.request.SortFormItemRequest; +import com.ltkj.tduck.service.*; +import com.ltkj.tduck.utils.FormDataUtils; +import com.ltkj.tduck.utils.Result; +import com.ltkj.tduck.utils.SortUtils; +import com.ltkj.tduck.utils.ValidatorUtils; +import com.ltkj.tduck.vo.FormFieldVO; +import com.ltkj.tduck.vo.OperateFormItemVO; +import com.ltkj.tduck.vo.UserFormDetailVO; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.annotation.security.PermitAll; +import javax.validation.constraints.NotBlank; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Date; +import java.util.List; + + +/** + * 鐢ㄦ埛琛ㄥ崟 + **/ +@RequiredArgsConstructor +@RestController +@Slf4j +//@RequestMapping("/tduck-api") +public class UserFormController { + @Resource + private final UserFormService formService; + @Resource + private final UserFormItemService formItemService; + @Resource + private final FormTemplateCategoryService formTemplateCategoryService; + @Resource + private final SortUtils sortUtils; + + private final UserFormThemeService userFormThemeService; + private final UserFormLogicService userFormLogicService; + + + /** + * 鏌ヨ琛ㄥ崟 + */ + @GetMapping("/user/form/{key}") + public AjaxResult queryFormByKey(@PathVariable @NotBlank String key) { + return AjaxResult.success(formService.getByKey(key)); + } + + /** + * 椤圭洰琛ㄥ崟椤规煡璇� + */ + @GetMapping("/user/form/item/list") + public AjaxResult queryFormItems(QueryFormItemRequest request) { + ValidatorUtils.validateEntity(request); +// FormAuthUtils.hasPermission(request.getKey()); + List<UserFormItemEntity> itemEntityList = formItemService + .list(Wrappers.<UserFormItemEntity>lambdaQuery() + .eq(UserFormItemEntity::getFormKey, request.getKey()) + .eq(ObjectUtil.isNotNull(request.getDisplayType()), + UserFormItemEntity::getDisplayType, request.getDisplayType())); + itemEntityList.sort(Comparator.comparing(UserFormItemEntity::getSort)); + return AjaxResult.success(itemEntityList); + } + + + /** + * 鍒嗛〉鏌ヨ椤圭洰鍒嗙被 + * + * @return + */ + @GetMapping("/form/template/type/list") + public AjaxResult queryFormTemplateTypes(QueryFormTemplateTypeRequest.List request) { + return AjaxResult.success(formTemplateCategoryService.list(Wrappers.<FormTemplateCategoryEntity>lambdaQuery() + .orderByDesc(FormTemplateCategoryEntity::getSort))); + } + + + /** + * 琛ㄥ崟鏇存柊 + * + * @param form + */ + @PostMapping("/user/form/update") + public AjaxResult updateForm(@RequestBody UserFormEntity form) { +// ValidatorUtils.validateEntity(form, AddGroup.class); + UserFormEntity oldForm = formService.getByKey(form.getFormKey()); + if (ObjectUtil.isNotNull(oldForm)) { + form.setId(oldForm.getId()); + formService.updateById(form); + } + return AjaxResult.success(); + } + + + /** + * 椤圭洰琛ㄥ崟椤瑰垱寤� + * + * @param entity + */ + @PostMapping("/user/form/item/create") + public AjaxResult createFormItem(@RequestBody UserFormItemEntity entity) { +// ValidatorUtils.validateEntity(entity, AddGroup.class); + if (ObjectUtil.isNull(entity.getDisplayType())) { + entity.setDisplayType(false); + } + if (ObjectUtil.isNull(entity.getHideType())) { + entity.setHideType(false); + } + //鎺掑簭涓嬫爣璁$畻 + entity.setSort(sortUtils.getInitialSortPosition(entity.getFormKey())); + entity.setSpecialType(formItemService.isSpecialTypeItem(entity)); + entity.setCreateTime(new Date()); + boolean save = formItemService.save(entity); + return AjaxResult.success(new OperateFormItemVO(entity.getSort(), entity.getId(), save, false)); + } + + + /** + * 鎵归噺椤圭洰琛ㄥ崟椤瑰垱寤� + */ + @PostMapping("/user/form/item/batch/create") + public AjaxResult batchCreateFormItem(@RequestBody List<UserFormItemEntity> itemEntityList) { + //鎺掑簭涓嬫爣璁$畻 + itemEntityList.forEach(item -> item.setSort(sortUtils.getInitialSortPosition(item.getFormKey()))); + itemEntityList.forEach(item -> item.setDisplayType(false)); + itemEntityList.forEach(item -> item.setHideType(false)); + itemEntityList.forEach(item -> item.setSpecialType(false)); + boolean save = formItemService.saveBatch(itemEntityList); + AjaxResult ajaxResult = new AjaxResult(); + ajaxResult.put("code", 200); + ajaxResult.put("data", null); + ajaxResult.put("msg", null); + return ajaxResult; + } + + + /** + * 琛ㄥ崟椤瑰垹闄� + */ + @PostMapping("/user/form/item/delete") + public AjaxResult deleteFormItem(@RequestBody UserFormItemEntity request) { +// FormAuthUtils.hasPermission(request.getFormKey()); + boolean delete = formItemService.remove(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).eq(UserFormItemEntity::getFormItemId, request.getFormItemId())); + return AjaxResult.success(delete); + } + + + /** + * 琛ㄥ崟椤规洿鏂� + * + * @param request + */ + @PostMapping("/user/form/item/update") + public AjaxResult updateFormItem(@RequestBody UserFormItemEntity request) { +// FormAuthUtils.hasPermission(request.getFormKey()); +// ValidatorUtils.validateEntity(request, UpdateGroup.class); + request.setSpecialType(formItemService.isSpecialTypeItem(request)); + boolean update = formItemService.update(request, Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).eq(UserFormItemEntity::getFormItemId, request.getFormItemId())); + return AjaxResult.success(update); + } + + /** + * 琛ㄥ崟椤规帓搴� + * + * @param request + */ + @PostMapping("/user/form/item/sort") + public AjaxResult sortFormItem(@RequestBody SortFormItemRequest request) { // ValidatorUtils.validateEntity(request); -//// FormAuthUtils.hasPermission(request.getKey()); -// List<UserFormItemEntity> itemEntityList = formItemService.list(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getKey()).eq(ObjectUtil.isNotNull(request.getDisplayType()), UserFormItemEntity::getDisplayType, request.getDisplayType())); -// itemEntityList.sort(Comparator.comparing(UserFormItemEntity::getSort)); -// return AjaxResult.success(itemEntityList); -// } -// -// -// /** -// * 鍒嗛〉鏌ヨ椤圭洰鍒嗙被 -// * -// * @return -// */ -// @GetMapping("/form/template/type/list") -// public AjaxResult queryFormTemplateTypes(QueryFormTemplateTypeRequest.List request) { -// return AjaxResult.success(formTemplateCategoryService.list(Wrappers.<FormTemplateCategoryEntity>lambdaQuery() -// .orderByDesc(FormTemplateCategoryEntity::getSort))); -// } -// -// -// /** -// * 琛ㄥ崟鏇存柊 -// * -// * @param form -// */ -// @PostMapping("/user/form/update") -// public AjaxResult updateForm(@RequestBody UserFormEntity form) { -//// ValidatorUtils.validateEntity(form, AddGroup.class); -// UserFormEntity oldForm = formService.getByKey(form.getFormKey()); -// if (ObjectUtil.isNotNull(oldForm)) { -// form.setId(oldForm.getId()); -// formService.updateById(form); -// } -// return AjaxResult.success(); -// } -// -// -// /** -// * 椤圭洰琛ㄥ崟椤瑰垱寤� -// * -// * @param entity -// */ -// @PostMapping("/user/form/item/create") -// public AjaxResult createFormItem(@RequestBody UserFormItemEntity entity) { -//// ValidatorUtils.validateEntity(entity, AddGroup.class); -// if (ObjectUtil.isNull(entity.getDisplayType())) { -// entity.setDisplayType(false); -// } -// if (ObjectUtil.isNull(entity.getHideType())) { -// entity.setHideType(false); -// } -// //鎺掑簭涓嬫爣璁$畻 -// entity.setSort(sortUtils.getInitialSortPosition(entity.getFormKey())); -// entity.setSpecialType(formItemService.isSpecialTypeItem(entity)); -// entity.setCreateTime(new Date()); -// boolean save = formItemService.save(entity); -// return AjaxResult.success(new OperateFormItemVO(entity.getSort(), entity.getId(), save, false)); -// } -// -// -// /** -// * 鎵归噺椤圭洰琛ㄥ崟椤瑰垱寤� -// */ -// @PostMapping("/user/form/item/batch/create") -// public AjaxResult batchCreateFormItem(@RequestBody List<UserFormItemEntity> itemEntityList) { -// //鎺掑簭涓嬫爣璁$畻 -// itemEntityList.forEach(item -> item.setSort(sortUtils.getInitialSortPosition(item.getFormKey()))); -// itemEntityList.forEach(item -> item.setDisplayType(false)); -// itemEntityList.forEach(item -> item.setHideType(false)); -// itemEntityList.forEach(item -> item.setSpecialType(false)); -// boolean save = formItemService.saveBatch(itemEntityList); -// AjaxResult ajaxResult = new AjaxResult(); -// ajaxResult.put("code", 200); -// ajaxResult.put("data", null); -// ajaxResult.put("msg", null); -// return ajaxResult; -// } -// -// -// /** -// * 琛ㄥ崟椤瑰垹闄� -// */ -// @PostMapping("/user/form/item/delete") -// public AjaxResult deleteFormItem(@RequestBody UserFormItemEntity request) { -//// FormAuthUtils.hasPermission(request.getFormKey()); -// boolean delete = formItemService.remove(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).eq(UserFormItemEntity::getFormItemId, request.getFormItemId())); -// return AjaxResult.success(delete); -// } -// -// -// /** -// * 琛ㄥ崟椤规洿鏂� -// * -// * @param request -// */ -// @PostMapping("/user/form/item/update") -// public AjaxResult updateFormItem(@RequestBody UserFormItemEntity request) { -//// FormAuthUtils.hasPermission(request.getFormKey()); -//// ValidatorUtils.validateEntity(request, UpdateGroup.class); -// request.setSpecialType(formItemService.isSpecialTypeItem(request)); -// boolean update = formItemService.update(request, Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).eq(UserFormItemEntity::getFormItemId, request.getFormItemId())); -// return AjaxResult.success(update); -// } -// -// /** -// * 琛ㄥ崟椤规帓搴� -// * -// * @param request -// */ -// @PostMapping("/user/form/item/sort") -// public AjaxResult sortFormItem(@RequestBody SortFormItemRequest request) { -//// ValidatorUtils.validateEntity(request); -// if (ObjectUtil.isNull(request.getAfterPosition()) && ObjectUtil.isNull(request.getBeforePosition())) { -// return AjaxResult.success(); -// } -// UserFormItemEntity itemEntity = formItemService.getOne(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).eq(UserFormItemEntity::getFormItemId, request.getFormItemId())); -// Long sort = sortUtils.calcSortPosition(request.getBeforePosition(), request.getAfterPosition(), request.getFormKey()); -// if (sortUtils.sortAllList(request.getBeforePosition(), request.getAfterPosition(), request.getFormKey(), sort)) { -// return AjaxResult.success(new OperateFormItemVO(itemEntity.getSort(), itemEntity.getId(), true, true)); -// } -// itemEntity.setSort(sort); -// boolean b = formItemService.updateById(itemEntity); -// return AjaxResult.success(new OperateFormItemVO(itemEntity.getSort(), itemEntity.getId(), b, false)); -// } -// -// -// /** -// * 鏌ヨ琛ㄥ崟璇︽儏 -// * 鍖呭惈琛ㄥ崟淇℃伅 琛ㄥ崟瀛楁淇℃伅 琛ㄥ崟涓婚 -// * -// * @param key -// */ -// @GetMapping("/user/form/details/{key}") -// @PermitAll -// public AjaxResult queryFormDetails(@PathVariable @NotBlank String key) { -// UserFormEntity form = formService.getByKey(key); -// if (ObjectUtil.isNull(form)) { -// return AjaxResult.success(); -// } -// List<UserFormItemEntity> formItemList = formItemService.list(Wrappers.<UserFormItemEntity>lambdaQuery().ne(UserFormItemEntity::getHideType, 1).eq(UserFormItemEntity::getFormKey, key)); -// formItemList.sort(Comparator.comparing(UserFormItemEntity::getSort)); -// UserFormThemeEntity theme = userFormThemeService.getByKey(key); -// UserFormLogicEntity formLogic = userFormLogicService.getOne(Wrappers.<UserFormLogicEntity>lambdaQuery().eq(UserFormLogicEntity::getFormKey, key)); -// // 濡傛灉鏄�冭瘯 绉婚櫎姝g‘绛旀 閬垮厤鎶婃纭瓟妗堣繑鍥炲埌鍓嶇 -// if (form.getType() == FormTypeEnum.EXAM.getValue().toString()) { -// formItemList.forEach(item -> { -// JSONObject schemeJson = JSONUtil.parseObj(item.getScheme()); -// if (schemeJson.containsKey("examConfig")) { -// schemeJson.getJSONObject("examConfig").remove("answer"); -// } -// item.setScheme(schemeJson); -// }); -// } -// return AjaxResult.success(new UserFormDetailVO(new UserFormDetailVO.UserForm(form), formItemList, theme, formLogic)); -// } -// -// -// /** -// * 鍙戝竷琛ㄥ崟 -// */ -// @PostMapping("/user/form/publish") -// public AjaxResult publishForm(@RequestBody UserFormEntity request) { -//// FormAuthUtils.hasPermission(request.getFormKey()); -// long count = formItemService.count(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey())); -// if (count == CommonConstants.ConstantNumber.ZERO) { -// return AjaxResult.error("鏃犳湁鏁堣〃鍗曢」锛屾棤娉曞彂甯�"); -// } -// UserFormEntity entity = formService.getByKey(request.getFormKey()); -// entity.setStatus(2); -// return AjaxResult.success(formService.updateById(entity)); -// } -// -// -// /** -// * 鍋滄鏀堕泦 -// * -// * @param request -// */ -// @PostMapping("/user/form/stop") -// public Result stopForm(@RequestBody UserFormEntity request) { -//// FormAuthUtils.hasPermission(request.getFormKey()); -// UserFormEntity entity = formService.getByKey(request.getFormKey()); -// entity.setStatus(3); -// return Result.success(formService.updateById(entity)); -// } -// -// -// /** -// * 鏌ヨ鎴戠殑琛ㄥ崟鍒嗛〉 -// */ -// @GetMapping("/user/form/page") -// public Result queryMyForms(@RequestAttribute Long userId, QueryFormRequest.Page request) { -// LambdaQueryWrapper<UserFormEntity> queryWrapper = Wrappers.<UserFormEntity>lambdaQuery().eq(UserFormEntity::getUserId, userId) -// .eq(ObjectUtil.isNotNull(request.getFolder()), UserFormEntity::getFolder, request.getFolder()) -// .eq(ObjectUtil.isNotNull(request.getType()), UserFormEntity::getType, request.getType()) -// .eq(UserFormEntity::getDeleted, 0).func(i -> { -// // 閫氳繃鏂囦欢鍚嶆悳绱㈡椂 鍙互鎼滅储鍒板瓙鏂囦欢澶逛笅鐨勮〃鍗� -// if (StrUtil.isNotBlank(request.getName()) && request.getFolderId() == 0) { -// } else { -// i.eq(UserFormEntity::getFolderId, request.getFolderId()); -// } -// }).eq(ObjectUtil.isNotNull(request.getStatus()), UserFormEntity::getStatus, request.getStatus()).like(StrUtil.isNotBlank(request.getName()), -// UserFormEntity::getName, request.getName()).le(ObjectUtil.isNotNull(request.getEndDateTime()), UserFormEntity::getUpdateTime, -// request.getEndDateTime()).ge(ObjectUtil.isNotNull(request.getBeginDateTime()), UserFormEntity::getUpdateTime, -// request.getBeginDateTime()).orderByDesc(UserFormEntity::getFolder) -//// .orderByDesc(TBaseEntity::getCreateTime) -// ; -// return Result.success(formService.page(request.toMybatisPage(), queryWrapper)); -// } -// -// -// /** -// * 鑾峰彇琛ㄥ崟瀛楁 鍖呮嫭绯荤粺榛樿瀛楁 -// */ -// @GetMapping("/user/form/fields/{formKey}") -// public Result queryUserFormFields(@PathVariable String formKey) { -// return Result.success(formItemService.listAllFormFields(formKey)); -// } -// -// /** -// * 鑾峰彇琛ㄥ崟鍥哄畾瀛楁 -// * 鎵�鏈夎〃鍗曢兘鍖呭惈 鐢ㄤ簬鏌ョ湅璇︽儏鍙充晶鏄剧ず -// */ -// @GetMapping("/user/form/fixed/fields/{formKey}") -// public Result queryUserFormFixedFields(@PathVariable String formKey) { -// // 鏌ヨ琛ㄥ崟绫诲瀷 -// UserFormEntity userFormEntity = formService.getByKey(formKey); -// List<FormFieldVO> fields = new ArrayList<>(); -// FormDataUtils.addFormBaseDataField(fields); -// fields.add(new FormFieldVO("submitUaOs", "鎿嶄綔绯荤粺")); -// fields.add(new FormFieldVO("submitUaDevice", "璁惧")); -// fields.add(new FormFieldVO(UserFormDataEntity.Fields.submitBrowser, "娴忚鍣�")); -// fields.add(new FormFieldVO(UserFormDataEntity.Fields.submitAddress, "鍦板潃")); -// fields.add(new FormFieldVO(UserFormDataEntity.Fields.submitRequestIp, "IP")); -// fields.add(new FormFieldVO(UserFormDataEntity.Fields.wxUserInfo, "寰俊鐢ㄦ埛")); -// return Result.success(fields); -// } -// -//} + if (ObjectUtil.isNull(request.getAfterPosition()) && ObjectUtil.isNull(request.getBeforePosition())) { + return AjaxResult.success(); + } + UserFormItemEntity itemEntity = formItemService.getOne(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).eq(UserFormItemEntity::getFormItemId, request.getFormItemId())); + Long sort = sortUtils.calcSortPosition(request.getBeforePosition(), request.getAfterPosition(), request.getFormKey()); + if (sortUtils.sortAllList(request.getBeforePosition(), request.getAfterPosition(), request.getFormKey(), sort)) { + return AjaxResult.success(new OperateFormItemVO(itemEntity.getSort(), itemEntity.getId(), true, true)); + } + itemEntity.setSort(sort); + boolean b = formItemService.updateById(itemEntity); + return AjaxResult.success(new OperateFormItemVO(itemEntity.getSort(), itemEntity.getId(), b, false)); + } + + + /** + * 鏌ヨ琛ㄥ崟璇︽儏 + * 鍖呭惈琛ㄥ崟淇℃伅 琛ㄥ崟瀛楁淇℃伅 琛ㄥ崟涓婚 + * + * @param key + */ + @GetMapping("/user/form/details/{key}") + @PermitAll + public AjaxResult queryFormDetails(@PathVariable @NotBlank String key) { + UserFormEntity form = formService.getByKey(key); + if (ObjectUtil.isNull(form)) { + return AjaxResult.success(); + } + List<UserFormItemEntity> formItemList = formItemService.list(Wrappers.<UserFormItemEntity>lambdaQuery().ne(UserFormItemEntity::getHideType, 1).eq(UserFormItemEntity::getFormKey, key)); + formItemList.sort(Comparator.comparing(UserFormItemEntity::getSort)); + UserFormThemeEntity theme = userFormThemeService.getByKey(key); + UserFormLogicEntity formLogic = userFormLogicService.getOne(Wrappers.<UserFormLogicEntity>lambdaQuery().eq(UserFormLogicEntity::getFormKey, key)); + // 濡傛灉鏄�冭瘯 绉婚櫎姝g‘绛旀 閬垮厤鎶婃纭瓟妗堣繑鍥炲埌鍓嶇 + if (form.getType() == FormTypeEnum.EXAM.getValue().toString()) { + formItemList.forEach(item -> { + JSONObject schemeJson = JSONUtil.parseObj(item.getScheme()); + if (schemeJson.containsKey("examConfig")) { + schemeJson.getJSONObject("examConfig").remove("answer"); + } + item.setScheme(schemeJson); + }); + } + return AjaxResult.success(new UserFormDetailVO(new UserFormDetailVO.UserForm(form), formItemList, theme, formLogic)); + } + + + /** + * 鍙戝竷琛ㄥ崟 + */ + @PostMapping("/user/form/publish") + public AjaxResult publishForm(@RequestBody UserFormEntity request) { +// FormAuthUtils.hasPermission(request.getFormKey()); + long count = formItemService.count(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey())); + if (count == CommonConstants.ConstantNumber.ZERO) { + return AjaxResult.error("鏃犳湁鏁堣〃鍗曢」锛屾棤娉曞彂甯�"); + } + UserFormEntity entity = formService.getByKey(request.getFormKey()); + entity.setStatus(2); + return AjaxResult.success(formService.updateById(entity)); + } + + + /** + * 鍋滄鏀堕泦 + * + * @param request + */ + @PostMapping("/user/form/stop") + public Result stopForm(@RequestBody UserFormEntity request) { +// FormAuthUtils.hasPermission(request.getFormKey()); + UserFormEntity entity = formService.getByKey(request.getFormKey()); + entity.setStatus(3); + return Result.success(formService.updateById(entity)); + } + + + /** + * 鏌ヨ鎴戠殑琛ㄥ崟鍒嗛〉 + */ + @GetMapping("/user/form/page") + public Result queryMyForms(@RequestAttribute Long userId, QueryFormRequest.Page request) { + LambdaQueryWrapper<UserFormEntity> queryWrapper = Wrappers.<UserFormEntity>lambdaQuery().eq(UserFormEntity::getUserId, userId) + .eq(ObjectUtil.isNotNull(request.getFolder()), UserFormEntity::getFolder, request.getFolder()) + .eq(ObjectUtil.isNotNull(request.getType()), UserFormEntity::getType, request.getType()) + .eq(UserFormEntity::getDeleted, 0).func(i -> { + // 閫氳繃鏂囦欢鍚嶆悳绱㈡椂 鍙互鎼滅储鍒板瓙鏂囦欢澶逛笅鐨勮〃鍗� + if (StrUtil.isNotBlank(request.getName()) && request.getFolderId() == 0) { + } else { + i.eq(UserFormEntity::getFolderId, request.getFolderId()); + } + }).eq(ObjectUtil.isNotNull(request.getStatus()), UserFormEntity::getStatus, request.getStatus()).like(StrUtil.isNotBlank(request.getName()), + UserFormEntity::getName, request.getName()).le(ObjectUtil.isNotNull(request.getEndDateTime()), UserFormEntity::getUpdateTime, + request.getEndDateTime()).ge(ObjectUtil.isNotNull(request.getBeginDateTime()), UserFormEntity::getUpdateTime, + request.getBeginDateTime()).orderByDesc(UserFormEntity::getFolder) +// .orderByDesc(TBaseEntity::getCreateTime) + ; + return Result.success(formService.page(request.toMybatisPage(), queryWrapper)); + } + + + /** + * 鑾峰彇琛ㄥ崟瀛楁 鍖呮嫭绯荤粺榛樿瀛楁 + */ + @GetMapping("/user/form/fields/{formKey}") + public Result queryUserFormFields(@PathVariable String formKey) { + return Result.success(formItemService.listAllFormFields(formKey)); + } + + /** + * 鑾峰彇琛ㄥ崟鍥哄畾瀛楁 + * 鎵�鏈夎〃鍗曢兘鍖呭惈 鐢ㄤ簬鏌ョ湅璇︽儏鍙充晶鏄剧ず + */ + @GetMapping("/user/form/fixed/fields/{formKey}") + public Result queryUserFormFixedFields(@PathVariable String formKey) { + // 鏌ヨ琛ㄥ崟绫诲瀷 + UserFormEntity userFormEntity = formService.getByKey(formKey); + List<FormFieldVO> fields = new ArrayList<>(); + FormDataUtils.addFormBaseDataField(fields); + fields.add(new FormFieldVO("submitUaOs", "鎿嶄綔绯荤粺")); + fields.add(new FormFieldVO("submitUaDevice", "璁惧")); + fields.add(new FormFieldVO(UserFormDataEntity.Fields.submitBrowser, "娴忚鍣�")); + fields.add(new FormFieldVO(UserFormDataEntity.Fields.submitAddress, "鍦板潃")); + fields.add(new FormFieldVO(UserFormDataEntity.Fields.submitRequestIp, "IP")); + fields.add(new FormFieldVO(UserFormDataEntity.Fields.wxUserInfo, "寰俊鐢ㄦ埛")); + return Result.success(fields); + } + +} diff --git a/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormResultController.java b/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormResultController.java index 2ed03de..7f1fca1 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormResultController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormResultController.java @@ -1,254 +1,254 @@ -//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<String, Integer> viewFormMap = new ConcurrentHashMap<>(); -// +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<String, Integer> viewFormMap = new ConcurrentHashMap<>(); + + + + /** + * 鏍规嵁浣撴鍙疯幏鍙栭棶鍗疯褰� + */ + @GetMapping("getRecordByTjNumber") + public AjaxResult getRecordByTjNumber(String tjNumber) { + LambdaQueryWrapper<UserFormDataEntity> wq=new LambdaQueryWrapper<>(); + wq.eq(UserFormDataEntity::getTjNumber,tjNumber); + final List<UserFormDataEntity> list = formResultService.list(wq); + AjaxResult ajaxResult = new AjaxResult(); + ajaxResult.put("code", 200); + ajaxResult.put("data", list); + ajaxResult.put("msg", null); + return ajaxResult; + } + + + /*** + * 鏌ョ湅琛ㄥ崟 + * 璁板綍鏌ョ湅鐨処P 缁熻鏌ョ湅鐢ㄦ埛鏁� + */ + @GetMapping("view/{formKey}") + @PermitAll + public Result<Void> 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 鏂囦欢 // */ -// @GetMapping("getRecordByTjNumber") -// public AjaxResult getRecordByTjNumber(String tjNumber) { -// LambdaQueryWrapper<UserFormDataEntity> wq=new LambdaQueryWrapper<>(); -// wq.eq(UserFormDataEntity::getTjNumber,tjNumber); -// final List<UserFormDataEntity> list = formResultService.list(wq); -// AjaxResult ajaxResult = new AjaxResult(); -// ajaxResult.put("code", 200); -// ajaxResult.put("data", list); -// ajaxResult.put("msg", null); -// return ajaxResult; +// @PostMapping("/download/file") +// public Result downloadFormResultFile(@RequestBody QueryFormResultRequest request) { +// return formResultService.downloadFormResultFile(request); // } -// -// -// /*** -// * 鏌ョ湅琛ㄥ崟 -// * 璁板綍鏌ョ湅鐨処P 缁熻鏌ョ湅鐢ㄦ埛鏁� -// */ -// @GetMapping("view/{formKey}") -// @PermitAll -// public Result<Void> 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); + + /** + * 濉啓 + * + * @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<String, Object> result = formResultService.saveFormResult(entity); + return AjaxResult.success(result); + } + + + /** + * 鍏紑濉啓 + * + * @param entity 濉啓鏁版嵁 + * @param request 璇锋眰 + */ + @PostMapping("/public/create") + @PermitAll + public Result<Map<String, Object>> createPublicFormResult(@RequestBody UserFormDataEntity entity, HttpServletRequest request) { + + ValidatorUtils.validateEntity(entity); + entity.setSubmitRequestIp(HttpUtils.getIpAddr(request)); +// Result<Boolean> 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<String, Object> 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<String> dataIdList, @PathVariable("formKey") String formKey) { +// formResultService.deleteByIds(dataIdList, formKey); +// return Result.success(); +// } + + +// /** +// * 鏇存柊 +// * +// * @param entity 濉啓鏁版嵁 +// * @param request 璇锋眰 +// * @return Result +// */ +// @PostMapping("/update") +// @PermitAll +// public Result<Void> 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 request 鏌ヨ鏉′欢 -// * @return 鏁版嵁 +// * @param response 鍝嶅簲 +// * @param formKey 琛ㄥ崟key // */ -// @PostMapping("query") -// public Result queryFormDataTable(@RequestBody QueryFormResultRequest request) { -//// FormAuthUtils.hasPermission(request.getFormKey()); -// return Result.success(formResultService.listFormDataTable(request)); +// @GetMapping("/import/template") +// public void downloadImportTemplate(HttpServletResponse response, String formKey) { +// formDataImportUtils.importTemplateExcel(response, formKey); // } // // /** -// * 鑾峰彇鏌愭潯鏁版嵁璇︽儏 -// * -// * @param dataId 鏁版嵁ID -// * @return 鏁版嵁璇︽儏 +// * 瀵煎嚭琛ㄥ崟鏁版嵁 // */ -// @GetMapping("details/{dataId}") -// @PermitAll -// public Result getFormDataDetails(@PathVariable("dataId") String dataId) { -// return formResultService.getFormDataDetails(dataId); +// @PostMapping("export") +// public void exportFormData(@RequestBody ExportRequest.FormData exportRequest) { +// formDataExportUtils.exportData(exportRequest); // } -//// -//// -//// /** -//// * 濉啓闄勪欢瀵煎嚭 -//// * -//// * @param request 璇锋眰 -//// * @return 鏂囦欢 -//// */ -//// @PostMapping("/download/file") -//// public Result downloadFormResultFile(@RequestBody QueryFormResultRequest request) { -//// return formResultService.downloadFormResultFile(request); -//// } // // /** -// * 濉啓 +// * 瀵煎叆琛ㄥ崟鏁版嵁 // * -// * @param entity 濉啓鏁版嵁 -// * @param request 璇锋眰 -// * @return +// * @param file 鏂囦欢 +// * @return Result // */ -// @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<String, Object> result = formResultService.saveFormResult(entity); -// return AjaxResult.success(result); +// @PostMapping("import") +// public Result importFormData(@RequestParam("file") MultipartFile file, UserFormDataEntity dataEntity) throws IOException { +// return Result.success(formDataImportUtils.importFile(file.getInputStream(), dataEntity.getFormKey())); // } // // -// /** -// * 鍏紑濉啓 -// * -// * @param entity 濉啓鏁版嵁 -// * @param request 璇锋眰 -// */ -// @PostMapping("/public/create") -// @PermitAll -// public Result<Map<String, Object>> createPublicFormResult(@RequestBody UserFormDataEntity entity, HttpServletRequest request) { +// 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())); +// } // -// ValidatorUtils.validateEntity(entity); -// entity.setSubmitRequestIp(HttpUtils.getIpAddr(request)); -//// Result<Boolean> 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<String, Object> result = formResultService.saveFormResult(entity); -//// ThreadUtil.execAsync(() -> { -//// sendWriteResultNotify(entity.getFormKey()); -//// }); -// return Result.success(result); -//// return Result.success(); +// if (StrUtil.isNotBlank(formSettingSchema.getNewWriteNotifyWx())) { +// List<String> openIdList = StrUtil.splitTrim(formSettingSchema.getNewWriteNotifyWx(), ";"); +// openIdList.stream().forEach(openId -> { +// userMsgService.sendKfTextMsg("", openId, "鏀跺埌鏂扮殑鍙嶉锛岃鍘籔c绔煡鐪�"); +// }); +// } // } -// -//// -//// /** -//// * 鎵归噺鍒犻櫎 -//// * -//// * @param formKey 琛ㄥ崟key -//// * @param dataIdList 鏁版嵁ID -//// * @return Result -//// */ -//// @PostMapping("/delete/{formKey}") -//// public Result deleteFormData(@RequestBody List<String> dataIdList, @PathVariable("formKey") String formKey) { -//// formResultService.deleteByIds(dataIdList, formKey); -//// return Result.success(); -//// } -// -// -//// /** -//// * 鏇存柊 -//// * -//// * @param entity 濉啓鏁版嵁 -//// * @param request 璇锋眰 -//// * @return Result -//// */ -//// @PostMapping("/update") -//// @PermitAll -//// public Result<Void> 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<String> openIdList = StrUtil.splitTrim(formSettingSchema.getNewWriteNotifyWx(), ";"); -//// openIdList.stream().forEach(openId -> { -//// userMsgService.sendKfTextMsg("", openId, "鏀跺埌鏂扮殑鍙嶉锛岃鍘籔c绔煡鐪�"); -//// }); -//// } -//// } -// -//} + +} diff --git a/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormSettingController.java b/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormSettingController.java index 220de5d..f30af9b 100644 --- a/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormSettingController.java +++ b/ltkj-admin/src/main/java/com/ltkj/web/tduck/UserFormSettingController.java @@ -1,143 +1,143 @@ -//package com.ltkj.web.tduck; -// -//import cn.hutool.core.util.ObjectUtil; -//import com.ltkj.common.utils.http.HttpUtils; -//import com.ltkj.tduck.domain.UserFormSettingEntity; -//import com.ltkj.tduck.request.CheckWritePwdRequest; -//import com.ltkj.tduck.service.UserFormSettingService; -//import com.ltkj.tduck.utils.CacheUtils; -//import com.ltkj.tduck.utils.Result; -//import lombok.RequiredArgsConstructor; -//import lombok.extern.slf4j.Slf4j; -//import org.springframework.validation.annotation.Validated; -//import org.springframework.web.bind.annotation.*; -// -//import javax.annotation.security.PermitAll; -//import javax.servlet.http.HttpServletRequest; -//import java.util.Map; -// -///** -// * 琛ㄥ崟璁剧疆 -// * -// * @author : smalljop -// * @description : 琛ㄥ崟璁剧疆 -// * @create : 2020-11-18 18:17 -// **/ -//@Slf4j -//@RestController -//@RequiredArgsConstructor -//public class UserFormSettingController { -// -// private final UserFormSettingService userFormSettingService; -//// private final WxMpUserService wxMpUserService; -// private final CacheUtils cacheUtils; -//// private final WxMpService wxMpService; -// -// -// /** -// * 淇濆瓨琛ㄥ崟璁剧疆 -// */ -// @PostMapping("/user/form/setting/save") -// public Result<Boolean> saveFormSetting(@RequestBody Map<String, Object> setting) { -// String formKey = setting.get("formKey").toString(); -//// FormAuthUtils.hasPermission(formKey); -// return Result.success(userFormSettingService.saveFormSetting(setting)); -// } -// -// /** -// * 琛ㄥ崟鎻愪氦璁剧疆鏌ヨ -// */ -// @GetMapping("/user/form/setting/{key}") -// public Result<Map<String, Object>> queryFormSettingByKey(@PathVariable("key") String formKey) { -// UserFormSettingEntity setting = userFormSettingService.getFormSettingByKey(formKey); -// if (ObjectUtil.isNull(setting)) { -// return Result.success(); +package com.ltkj.web.tduck; + +import cn.hutool.core.util.ObjectUtil; +import com.ltkj.common.utils.http.HttpUtils; +import com.ltkj.tduck.domain.UserFormSettingEntity; +import com.ltkj.tduck.request.CheckWritePwdRequest; +import com.ltkj.tduck.service.UserFormSettingService; +import com.ltkj.tduck.utils.CacheUtils; +import com.ltkj.tduck.utils.Result; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.security.PermitAll; +import javax.servlet.http.HttpServletRequest; +import java.util.Map; + +/** + * 琛ㄥ崟璁剧疆 + * + * @author : smalljop + * @description : 琛ㄥ崟璁剧疆 + * @create : 2020-11-18 18:17 + **/ +@Slf4j +@RestController +@RequiredArgsConstructor +public class UserFormSettingController { + + private final UserFormSettingService userFormSettingService; +// private final WxMpUserService wxMpUserService; + private final CacheUtils cacheUtils; +// private final WxMpService wxMpService; + + + /** + * 淇濆瓨琛ㄥ崟璁剧疆 + */ + @PostMapping("/user/form/setting/save") + public Result<Boolean> saveFormSetting(@RequestBody Map<String, Object> setting) { + String formKey = setting.get("formKey").toString(); +// FormAuthUtils.hasPermission(formKey); + return Result.success(userFormSettingService.saveFormSetting(setting)); + } + + /** + * 琛ㄥ崟鎻愪氦璁剧疆鏌ヨ + */ + @GetMapping("/user/form/setting/{key}") + public Result<Map<String, Object>> queryFormSettingByKey(@PathVariable("key") String formKey) { + UserFormSettingEntity setting = userFormSettingService.getFormSettingByKey(formKey); + if (ObjectUtil.isNull(setting)) { + return Result.success(); + } + Map<String, Object> settings = setting.getSettings(); + settings.put(UserFormSettingEntity.Fields.formKey, formKey); + return Result.success(settings); + } + + + /** + * 褰撳墠濉啓璁剧疆鐨勭姸鎬� + * + * @param formKey 琛ㄥ崟key + * @param wxOpenId 寰俊openid + * @param type 绫诲瀷 1鍏紑濉啓 2.鎸囧畾濉啓 + */ + @GetMapping("/user/form/setting-status") + @PermitAll + public Result<Boolean> querySettingStatus(@RequestParam String formKey, @RequestParam(required = false) String wxOpenId, @RequestParam(required = false) Integer type, HttpServletRequest request) { + return userFormSettingService.getUserFormWriteSettingStatus(formKey, HttpUtils.getIpAddr(request), wxOpenId, type); + } + + + /** + * 濉啓寰俊閫氱煡浜岀淮鐮� + */ + @GetMapping("/user/form/wx/notify-qrcode") + public Result<String> getWxNotifyQrCode(@RequestParam("key") String formKey) throws Exception { +// String loginSceneStr = JsonUtils.objToJson(new WxMpQrCodeGenRequest(WxMpQrCodeGenRequest.QrCodeType.SUB_NOTIFY, formKey)); +// //5鍒嗛挓鏈夋晥 +// WxMpQrCodeTicket ticket = wxMpService.getQrcodeService().qrCodeCreateTmpTicket(loginSceneStr, 10 * 60); +// String subNotifyQrcodeUrl = wxMpService.getQrcodeService().qrCodePictureUrl(ticket.getTicket()); +// return Result.success(subNotifyQrcodeUrl); + return Result.success(); + } + + + /** + * 濉啓寰俊閫氱煡浜岀淮鐮� + */ + @PostMapping("/user/form/wx/delete/notify-user") + public Result<Boolean> deleteWxNotifyQrCode(@RequestParam("key") String key, @RequestParam("openId") String openId) { +// cacheUtils.removeList(StrUtil.format(WxMpRedisKeyConstants.WX_MP_SUB_NOTIFY, key), openId); + return Result.success(true); + } + + /** + * 鑾峰彇琛ㄥ崟寰俊閫氱煡鐢ㄦ埛 + */ + @GetMapping("/user/form/wx/notify-user") + public Result getWxNotifyUser(@RequestParam("key") String formKey, @RequestParam(required = false) String openIdStr) { +// Set<Object> subNotifyUsers = null; +// if (StrUtil.isNotBlank(openIdStr)) { +// subNotifyUsers = Sets.newHashSet(StrUtil.splitTrim(openIdStr, ";")); +// } else { +// List coll = cacheUtils.getList(StrUtil.format(WxMpRedisKeyConstants.WX_MP_SUB_NOTIFY, formKey), String.class); +// subNotifyUsers = Collections.singleton(coll.stream().collect(Collectors.toSet())); // } -// Map<String, Object> settings = setting.getSettings(); -// settings.put(UserFormSettingEntity.Fields.formKey, formKey); -// return Result.success(settings); -// } -// -// -// /** -// * 褰撳墠濉啓璁剧疆鐨勭姸鎬� -// * -// * @param formKey 琛ㄥ崟key -// * @param wxOpenId 寰俊openid -// * @param type 绫诲瀷 1鍏紑濉啓 2.鎸囧畾濉啓 -// */ -// @GetMapping("/user/form/setting-status") -// @PermitAll -// public Result<Boolean> querySettingStatus(@RequestParam String formKey, @RequestParam(required = false) String wxOpenId, @RequestParam(required = false) Integer type, HttpServletRequest request) { -// return userFormSettingService.getUserFormWriteSettingStatus(formKey, HttpUtils.getIpAddr(request), wxOpenId, type); -// } -// -// -// /** -// * 濉啓寰俊閫氱煡浜岀淮鐮� -// */ -// @GetMapping("/user/form/wx/notify-qrcode") -// public Result<String> getWxNotifyQrCode(@RequestParam("key") String formKey) throws Exception { -//// String loginSceneStr = JsonUtils.objToJson(new WxMpQrCodeGenRequest(WxMpQrCodeGenRequest.QrCodeType.SUB_NOTIFY, formKey)); -//// //5鍒嗛挓鏈夋晥 -//// WxMpQrCodeTicket ticket = wxMpService.getQrcodeService().qrCodeCreateTmpTicket(loginSceneStr, 10 * 60); -//// String subNotifyQrcodeUrl = wxMpService.getQrcodeService().qrCodePictureUrl(ticket.getTicket()); -//// return Result.success(subNotifyQrcodeUrl); -// return Result.success(); -// } -// -// -// /** -// * 濉啓寰俊閫氱煡浜岀淮鐮� -// */ -// @PostMapping("/user/form/wx/delete/notify-user") -// public Result<Boolean> deleteWxNotifyQrCode(@RequestParam("key") String key, @RequestParam("openId") String openId) { -//// cacheUtils.removeList(StrUtil.format(WxMpRedisKeyConstants.WX_MP_SUB_NOTIFY, key), openId); -// return Result.success(true); -// } -// -// /** -// * 鑾峰彇琛ㄥ崟寰俊閫氱煡鐢ㄦ埛 -// */ -// @GetMapping("/user/form/wx/notify-user") -// public Result getWxNotifyUser(@RequestParam("key") String formKey, @RequestParam(required = false) String openIdStr) { -//// Set<Object> subNotifyUsers = null; -//// if (StrUtil.isNotBlank(openIdStr)) { -//// subNotifyUsers = Sets.newHashSet(StrUtil.splitTrim(openIdStr, ";")); -//// } else { -//// List coll = cacheUtils.getList(StrUtil.format(WxMpRedisKeyConstants.WX_MP_SUB_NOTIFY, formKey), String.class); -//// subNotifyUsers = Collections.singleton(coll.stream().collect(Collectors.toSet())); -//// } -//// return Result.success(wxMpUserService.listWxMpUserByOpenId(subNotifyUsers).stream().map(item -> new WxMpUserVO(item.getNickname(), item.getHeadImgUrl(), item.getOpenId())).collect(Collectors.toList())); -// return Result.success(); -// } -// -// -// /** -// * 鍏紑鎺ュ彛 -// * 琛ㄥ崟濉啓鏃堕渶瑕佺殑璁剧疆 -// */ -// @GetMapping("/user/form/public/settings/{key}") -// @PermitAll -// public Result queryPublicFormSettingByKey(@PathVariable("key") String formKey) { -//// FormSettingSchemaStruct formSettingSchema = userFormSettingService.getFormSettingSchema(formKey); -// return Result.success(); -// } -// -// /** -// * 鍏紑鎺ュ彛 -// * 妫�鏌ュ~鍐欏瘑鐮佹槸鍚︽纭� -// */ -// @PostMapping("/user/form/public/checkWritePwd") -// @PermitAll -// public Result<Boolean> checkWritePwd(@RequestBody @Validated CheckWritePwdRequest request) { -//// FormSettingSchemaStruct formSettingSchema = userFormSettingService.getFormSettingSchema(request.getFormKey()); -//// if (formSettingSchema.getWritePassword().equals(request.getPassword())) { -//// return Result.success(true); -//// } -//// return Result.failed("瀵嗙爜杈撳叆閿欒"); -// return Result.success(true); -// } -// -// -//} +// return Result.success(wxMpUserService.listWxMpUserByOpenId(subNotifyUsers).stream().map(item -> new WxMpUserVO(item.getNickname(), item.getHeadImgUrl(), item.getOpenId())).collect(Collectors.toList())); + return Result.success(); + } + + + /** + * 鍏紑鎺ュ彛 + * 琛ㄥ崟濉啓鏃堕渶瑕佺殑璁剧疆 + */ + @GetMapping("/user/form/public/settings/{key}") + @PermitAll + public Result queryPublicFormSettingByKey(@PathVariable("key") String formKey) { +// FormSettingSchemaStruct formSettingSchema = userFormSettingService.getFormSettingSchema(formKey); + return Result.success(); + } + + /** + * 鍏紑鎺ュ彛 + * 妫�鏌ュ~鍐欏瘑鐮佹槸鍚︽纭� + */ + @PostMapping("/user/form/public/checkWritePwd") + @PermitAll + public Result<Boolean> checkWritePwd(@RequestBody @Validated CheckWritePwdRequest request) { +// FormSettingSchemaStruct formSettingSchema = userFormSettingService.getFormSettingSchema(request.getFormKey()); +// if (formSettingSchema.getWritePassword().equals(request.getPassword())) { +// return Result.success(true); +// } +// return Result.failed("瀵嗙爜杈撳叆閿欒"); + return Result.success(true); + } + + +} diff --git a/ltkj-admin/src/main/resources/application.yml b/ltkj-admin/src/main/resources/application.yml index 02875c5..799fa3f 100644 --- a/ltkj-admin/src/main/resources/application.yml +++ b/ltkj-admin/src/main/resources/application.yml @@ -72,8 +72,7 @@ enabled: true # cache: # type: ehcache -# ehcache: -# config: classpath:config/ehcache.xml + # redis 閰嶇疆 # redis: # # 鍦板潃 diff --git a/ltkj-framework/pom.xml b/ltkj-framework/pom.xml index 3eb198b..50ecffd 100644 --- a/ltkj-framework/pom.xml +++ b/ltkj-framework/pom.xml @@ -19,8 +19,21 @@ <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> + <version>2.9.0</version> </dependency> + + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-cache</artifactId> + </dependency> + <dependency> + <groupId>net.sf.ehcache</groupId> + <artifactId>ehcache</artifactId> + </dependency> + + + <!-- SpringBoot Web瀹瑰櫒 --> <dependency> <groupId>org.springframework.boot</groupId> diff --git a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjSurveyTemplateServiceImpl.java b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjSurveyTemplateServiceImpl.java index 81a83ee..98a9128 100644 --- a/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjSurveyTemplateServiceImpl.java +++ b/ltkj-hosp/src/main/java/com/ltkj/hosp/service/impl/TjSurveyTemplateServiceImpl.java @@ -93,8 +93,7 @@ @Override public int updateTjSurveyTemplate(TjSurveyTemplate tjSurveyTemplate) { tjSurveyTemplate.setUpdateTime(DateUtils.getNowDate()); - tjSurveyTemplateMapper.deleteTjSurveyTempQuesByMid(tjSurveyTemplate.getMid()) - ; + tjSurveyTemplateMapper.deleteTjSurveyTempQuesByMid(tjSurveyTemplate.getMid()); insertTjSurveyTempQues(tjSurveyTemplate); return tjSurveyTemplateMapper.updateTjSurveyTemplate(tjSurveyTemplate); } diff --git a/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java b/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java index 58b836c..3f5b6de 100644 --- a/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java +++ b/ltkj-system/src/main/java/com/ltkj/system/service/ISysDeptService.java @@ -149,4 +149,6 @@ Map<String,Object> getSysDeptYjWjCustomerList13(String deptid, String tjname, String tjNumber, int type, int page , int pageSize); Map<String,Object> getSysDeptHyAndYxYjWjCustomerList13(String deptid, String tjname, String tjNumber, int type, int page , int pageSize); + + List<TreeSelect> selectDeptList1(SysDept dept); } diff --git a/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java b/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java index 2eecbba..2f9e3b9 100644 --- a/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java +++ b/ltkj-system/src/main/java/com/ltkj/system/service/impl/SysDeptServiceImpl.java @@ -422,4 +422,10 @@ return map1 ; } + + @Override + public List<TreeSelect> selectDeptList1(SysDept dept) { + List<SysDept> depts = SpringUtils.getAopProxy(this).selectDeptList11(dept); + return buildDeptTreeSelect(depts); + } } diff --git a/ltkj-system/src/main/java/com/ltkj/tduck/service/UserFormSettingService.java b/ltkj-system/src/main/java/com/ltkj/tduck/service/UserFormSettingService.java index fd0432f..978225f 100644 --- a/ltkj-system/src/main/java/com/ltkj/tduck/service/UserFormSettingService.java +++ b/ltkj-system/src/main/java/com/ltkj/tduck/service/UserFormSettingService.java @@ -1,61 +1,61 @@ -//package com.ltkj.tduck.service; -// -// -// -//import com.baomidou.mybatisplus.extension.service.IService; -//import com.ltkj.tduck.domain.UserFormSettingEntity; -//import com.ltkj.tduck.struct.FormSettingSchemaStruct; -//import com.ltkj.tduck.utils.Result; -// -//import java.util.Map; -// -///** -// * 琛ㄥ崟璁剧疆 -// * -// * @author smalljop -// * @since 2020-11-30 14:00:52 -// */ -//public interface UserFormSettingService extends IService<UserFormSettingEntity> { -// /** -// * 淇濆瓨琛ㄥ崟璁剧疆 -// */ -// Boolean saveFormSetting(Map<String, Object> params); -// -// -// /** -// * 琛ㄥ崟璁剧疆 -// * -// * @param formKey 琛ㄥ崟key -// * @return 璁剧疆椤� -// */ -// UserFormSettingEntity getFormSettingByKey(String formKey); -// -// /** -// * 璁剧疆鍏蜂綋瀹氫箟璁剧疆椤� -// * -// * @param formKey 琛ㄥ崟key -// * @return 璁剧疆椤� -// */ -// FormSettingSchemaStruct getFormSettingSchema(String formKey); -// -// /** -// * 鑾峰彇褰撳墠椤圭洰璁剧疆鐨勭姸鎬� -// * 鏄惁鍙互濉啓绛� -// * -// * @param formKey 琛ㄥ崟key -// * @param requestIp 璇锋眰ip -// * @param wxOpenId 寰俊openid -// * @param type 绫诲瀷 1鍏紑濉啓 2.鎸囧畾濉啓 -// * @return 鏄惁鍙互濉啓 -// */ -// Result<Boolean> getUserFormWriteSettingStatus(String formKey, String requestIp, String wxOpenId, Integer type); -// -// -// /** -// * 鍒犻櫎琛ㄥ崟鎵�鏈夎缃� -// * -// * @param key 琛ㄥ崟key -// * @return 鏄惁鍒犻櫎鎴愬姛 -// */ -// Boolean deleteAllSetting(String key); -//} +package com.ltkj.tduck.service; + + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ltkj.tduck.domain.UserFormSettingEntity; +import com.ltkj.tduck.struct.FormSettingSchemaStruct; +import com.ltkj.tduck.utils.Result; + +import java.util.Map; + +/** + * 琛ㄥ崟璁剧疆 + * + * @author smalljop + * @since 2020-11-30 14:00:52 + */ +public interface UserFormSettingService extends IService<UserFormSettingEntity> { + /** + * 淇濆瓨琛ㄥ崟璁剧疆 + */ + Boolean saveFormSetting(Map<String, Object> params); + + + /** + * 琛ㄥ崟璁剧疆 + * + * @param formKey 琛ㄥ崟key + * @return 璁剧疆椤� + */ + UserFormSettingEntity getFormSettingByKey(String formKey); + + /** + * 璁剧疆鍏蜂綋瀹氫箟璁剧疆椤� + * + * @param formKey 琛ㄥ崟key + * @return 璁剧疆椤� + */ + FormSettingSchemaStruct getFormSettingSchema(String formKey); + + /** + * 鑾峰彇褰撳墠椤圭洰璁剧疆鐨勭姸鎬� + * 鏄惁鍙互濉啓绛� + * + * @param formKey 琛ㄥ崟key + * @param requestIp 璇锋眰ip + * @param wxOpenId 寰俊openid + * @param type 绫诲瀷 1鍏紑濉啓 2.鎸囧畾濉啓 + * @return 鏄惁鍙互濉啓 + */ + Result<Boolean> getUserFormWriteSettingStatus(String formKey, String requestIp, String wxOpenId, Integer type); + + + /** + * 鍒犻櫎琛ㄥ崟鎵�鏈夎缃� + * + * @param key 琛ㄥ崟key + * @return 鏄惁鍒犻櫎鎴愬姛 + */ + Boolean deleteAllSetting(String key); +} diff --git a/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormDataServiceImpl.java b/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormDataServiceImpl.java index 3aedf94..6cb5bdd 100644 --- a/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormDataServiceImpl.java +++ b/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormDataServiceImpl.java @@ -1,159 +1,159 @@ -//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<UserFormDataMapper, UserFormDataEntity> implements UserFormDataService { -// -// private final UserFormItemService userFormItemService; -// private final CacheUtils redisUtils; -// private final FormDataUtils formDataUtils; -// -// +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<UserFormDataMapper, UserFormDataEntity> implements UserFormDataService { + + private final UserFormItemService userFormItemService; + private final CacheUtils redisUtils; + private final FormDataUtils formDataUtils; + + + @Override + @Transactional(rollbackFor = Exception.class) + public Map<String, Object> saveFormResult(UserFormDataEntity entity) { + HashMap<String, Object> 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 -// @Transactional(rollbackFor = Exception.class) -// public Map<String, Object> saveFormResult(UserFormDataEntity entity) { -// HashMap<String, Object> 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<UserFormItemEntity> userFormItemEntityList = userFormItemService.list(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).in(UserFormItemEntity::getType, CollUtil.newArrayList(FormItemTypeEnum.UPLOAD.toString(), FormItemTypeEnum.IMAGE_UPLOAD.toString()))); -//// //缁撴灉 -//// List<Map> 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<Map> finalRows = rows; -//// ThreadUtil.execAsync(() -> { -//// TimeInterval timer = DateUtil.timer(); -//// List<String> paths = new ArrayList<>(); -//// List<InputStream> ins = new ArrayList<>(); -//// try { -//// finalRows.forEach(result -> { -//// int index = 0; -//// userFormItemEntityList.forEach(item -> { -//// List<UploadResultStruct> 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<String> 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); -//// // 鏌ヨ鏁版嵁 鍚屾鍒癳s 閬垮厤鏁版嵁鍙樼┖琚鐩� -//// formDataUtils.asyncUpdateEsDocument(dataEntity); -//// return update; -//// } -// -// @Override -// public Result getFormDataDetails(String dataId) { -// Map<String, Object> result =new HashMap<>(); -// UserFormDataEntity dataEntity = this.getById(dataId); -// List<FormFieldVO> formFields = userFormItemService.listFormFields(dataEntity.getFormKey()); -// // 琛ㄥ崟瀛楁 -// result.put("formFields", formFields); -// // 琛ㄥ崟濉啓鏁版嵁 -// if (ObjectUtil.isNotNull(dataEntity)) { -// Map<String, Object> originalData = dataEntity.getOriginalData(); -// dataEntity.setOriginalData(null); -// originalData.putAll(BeanUtil.beanToMap(dataEntity, false, true)); -// result.put("formData", originalData); +// public Result downloadFormResultFile(QueryFormResultRequest request) { +// String uuid = IdUtil.simpleUUID(); +// List<UserFormItemEntity> userFormItemEntityList = userFormItemService.list(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, request.getFormKey()).in(UserFormItemEntity::getType, CollUtil.newArrayList(FormItemTypeEnum.UPLOAD.toString(), FormItemTypeEnum.IMAGE_UPLOAD.toString()))); +// //缁撴灉 +// List<Map> rows = null; +// if (ObjectUtil.isNull(request.getCurrent()) && ObjectUtil.isNull(request.getSize())) { +// rows = formDataUtils.searchAll(request); +// } else { +// FormDataTableVO formDataTableVO = this.listFormDataTable(request); +// rows = formDataTableVO.getRows(); // } -// return Result.success(result); +// if (CollectionUtil.isEmpty(rows) || CollectionUtil.isEmpty(userFormItemEntityList)) { +// return Result.failed("鏆傛棤鏀堕泦闄勪欢锛屾棤娉曚笅杞�"); +// } +// List<Map> finalRows = rows; +// ThreadUtil.execAsync(() -> { +// TimeInterval timer = DateUtil.timer(); +// List<String> paths = new ArrayList<>(); +// List<InputStream> ins = new ArrayList<>(); +// try { +// finalRows.forEach(result -> { +// int index = 0; +// userFormItemEntityList.forEach(item -> { +// List<UploadResultStruct> 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<String> 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); +// // 鏌ヨ鏁版嵁 鍚屾鍒癳s 閬垮厤鏁版嵁鍙樼┖琚鐩� +// formDataUtils.asyncUpdateEsDocument(dataEntity); +// return update; +// } + + @Override + public Result getFormDataDetails(String dataId) { + Map<String, Object> result =new HashMap<>(); + UserFormDataEntity dataEntity = this.getById(dataId); + List<FormFieldVO> formFields = userFormItemService.listFormFields(dataEntity.getFormKey()); + // 琛ㄥ崟瀛楁 + result.put("formFields", formFields); + // 琛ㄥ崟濉啓鏁版嵁 + if (ObjectUtil.isNotNull(dataEntity)) { + Map<String, Object> originalData = dataEntity.getOriginalData(); + dataEntity.setOriginalData(null); + originalData.putAll(BeanUtil.beanToMap(dataEntity, false, true)); + result.put("formData", originalData); + } + return Result.success(result); + } +} diff --git a/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormSettingServiceImpl.java b/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormSettingServiceImpl.java index 36f24c1..cf23b5b 100644 --- a/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormSettingServiceImpl.java +++ b/ltkj-system/src/main/java/com/ltkj/tduck/service/impl/UserFormSettingServiceImpl.java @@ -1,194 +1,194 @@ -//package com.ltkj.tduck.service.impl; -// -//import cn.hutool.core.bean.BeanUtil; -//import cn.hutool.core.collection.CollUtil; -//import cn.hutool.core.date.DateUtil; -//import cn.hutool.core.util.ObjectUtil; -//import cn.hutool.core.util.StrUtil; -//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -//import com.baomidou.mybatisplus.core.toolkit.Wrappers; -//import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -//import com.ltkj.common.utils.SecurityUtils; -//import com.ltkj.tduck.constant.CommonConstants; -//import com.ltkj.tduck.domain.UserFormDataEntity; -//import com.ltkj.tduck.domain.UserFormEntity; -//import com.ltkj.tduck.domain.UserFormSettingEntity; -//import com.ltkj.tduck.enums.FormStatusEnum; -//import com.ltkj.tduck.mapper.UserFormSettingMapper; -//import com.ltkj.tduck.service.UserFormDataService; -//import com.ltkj.tduck.service.UserFormService; -//import com.ltkj.tduck.service.UserFormSettingService; -//import com.ltkj.tduck.struct.FormSettingSchemaStruct; -//import com.ltkj.tduck.utils.Result; -//import lombok.RequiredArgsConstructor; -//import org.springframework.stereotype.Service; -//import org.springframework.transaction.annotation.Transactional; -// -//import java.time.LocalTime; -//import java.util.List; -//import java.util.Map; -//import java.util.Objects; -// -///** -// * 琛ㄥ崟琛ㄥ崟椤�(UserFormSetting)琛ㄦ湇鍔″疄鐜扮被 -// * -// * @author smalljop -// * @since 2020-11-30 14:00:53 -// */ -//@Service -//@RequiredArgsConstructor -//public class UserFormSettingServiceImpl extends ServiceImpl<UserFormSettingMapper, UserFormSettingEntity> implements UserFormSettingService { -// private final UserFormService userFormService; -// private final UserFormDataService userFormDataService; -// -// @Override -// public Boolean saveFormSetting(Map<String, Object> params) { -// String formKey = params.get("formKey").toString(); -// UserFormSettingEntity entity = this.getOne(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey)); -// if (ObjectUtil.isNull(entity)) { -// UserFormSettingEntity setting = new UserFormSettingEntity(); -// setting.setFormKey(formKey); -// setting.setSettings(params); -// return this.save(setting); -// } -// Map<String, Object> settings = entity.getSettings(); -// settings.putAll(params); -// entity.setSettings(settings); -// return this.updateById(entity); -// } -// -// -// @Override -// public UserFormSettingEntity getFormSettingByKey(String formKey) { -// return this.getOne(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey)); -// } -// -// @Override -// public FormSettingSchemaStruct getFormSettingSchema(String formKey) { -// UserFormSettingEntity settingEntity = getFormSettingByKey(formKey); -// if (ObjectUtil.isNull(settingEntity)) { -// return null; -// } -// return BeanUtil.toBean(settingEntity.getSettings(), FormSettingSchemaStruct.class); -// } -// -// -// @Override -// public Result<Boolean> getUserFormWriteSettingStatus(String formKey, String requestIp, String wxOpenId, Integer type) { -// UserFormEntity userFormEntity = userFormService.getByKey(formKey); -// boolean checkPublish = Objects.equals(type, CommonConstants.ConstantNumber.ONE) && -// (ObjectUtil.isNull(userFormEntity) || userFormEntity.getStatus() != 2); -// // 闈炲叕寮�濉啓 涓嶆牎楠屽彂甯冪姸鎬� -// if (checkPublish) { -// return Result.success(null, "琛ㄥ崟鏆傛椂鏃犳硶濉啓"); -// } -// UserFormSettingEntity settingEntity = getFormSettingByKey(formKey); -// if (ObjectUtil.isNull(settingEntity)) { -// return Result.success(true); -// } -// FormSettingSchemaStruct settingSchemaStruct = BeanUtil.toBean(settingEntity.getSettings(), FormSettingSchemaStruct.class); -// // 濉啓鏃堕棿闄愬埗 -// boolean writeInterviewTime = isWriteInterviewTime(settingSchemaStruct); -// if (!writeInterviewTime) { -// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getWriteInterviewTimeText(), "涓嶅湪绛旈鏃堕棿鑼冨洿鍐咃紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); -// } -// // 姣忎釜寰俊绛旈娆℃暟闄愬埗 -// if (settingSchemaStruct.isWxWriteCountLimitStatus()) { -// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey).eq(UserFormDataEntity::getWxOpenId, wxOpenId); -// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getWxWriteCountLimitDateType()); -// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); -// long writeCount = userFormDataService.count(wrapper); -// if (writeCount >= settingSchemaStruct.getWxWriteCountLimit()) { -// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getWxWriteCountLimitText(), "璇ュ井淇″凡缁忔彁浜よ繃鏁版嵁锛屼笉鍙噸澶嶆彁浜わ紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); -// } -// } -// // 姣忎釜IP绛旈娆℃暟闄愬埗 -// if (settingSchemaStruct.isIpWriteCountLimitStatus()) { -// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey).eq(UserFormDataEntity::getSubmitRequestIp, requestIp); -// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getIpWriteCountLimitDateType()); -// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); -// long writeCount = userFormDataService.count(wrapper); -// if (writeCount >= settingSchemaStruct.getIpWriteCountLimit()) { -// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getIpWriteCountLimitText(), "璇P宸茬粡鎻愪氦杩囨暟鎹紝涓嶅彲閲嶅鎻愪氦锛屾湁闂璇蜂笌琛ㄥ崟鍙戝竷鑰呰仈绯�")); -// } -// } -// // 鎬荤瓟棰樻鏁伴檺鍒� -// if (settingSchemaStruct.isTotalWriteCountLimitStatus()) { -// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey); -// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getTotalWriteCountLimitDateType()); -// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); -// long writeCount = userFormDataService.count(wrapper); -// if (writeCount >= settingSchemaStruct.getTotalWriteCountLimit()) { -// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getTotalWriteCountLimitText(), "璇ヨ〃鍗曟敹闆嗘暟鎹凡缁忚揪鍒颁笂闄愶紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); -// } -// } -// // 姣忎釜璐﹀彿绛旈娆℃暟闄愬埗 -// if (settingSchemaStruct.isAccountWriteCountLimitStatus()) { -// LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey) -// .eq(UserFormDataEntity::getCreateBy, SecurityUtils.getUserId()); -// String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getAccountWriteCountLimitDateType()); -// wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); -// long writeCount = userFormDataService.count(wrapper); -// if (writeCount >= settingSchemaStruct.getAccountWriteCountLimit()) { -// return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getAccountWriteCountLimitText(), "璇ヨ处鍙峰凡缁忔彁浜よ繃鏁版嵁锛屼笉鍙噸澶嶆彁浜わ紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); -// } -// } -// return Result.success(true); -// } -// -// /** -// * 鏄惁鍦ㄨ缃殑绛旈鏃堕棿鍐� -// * -// * @return true 鍦ㄧ瓟棰樻椂闂村唴 -// */ -// private boolean isWriteInterviewTime(FormSettingSchemaStruct settingSchemaStruct) { -// // 绛旈鏃堕棿闄愬埗 -// if (settingSchemaStruct.isWriteInterviewTimeStatus()) { -// // 鏄惁姣忓ぉ鏃堕棿鑼冨洿闄愬埗 -// if (settingSchemaStruct.isWriteInterviewDayTimeStatus()) { -// // 鏄惁鍦ㄥ厑璁歌闂殑澶╁唴 -// List<String> writeInterviewDateRange = settingSchemaStruct.getWriteInterviewDateRange(); -// if (CollUtil.isEmpty(writeInterviewDateRange) || DateUtil.isIn(DateUtil.date(), DateUtil.parse(writeInterviewDateRange.get(0)), DateUtil.parse(writeInterviewDateRange.get(1)))) { -// // 鏄惁鍦ㄥ厑璁歌闂殑灏忔椂鍐� -// List<String> writeInterviewTimeRange = settingSchemaStruct.getWriteInterviewTimeRange(); -// LocalTime now = LocalTime.now(); -// boolean isRange = CollUtil.isNotEmpty(writeInterviewDateRange) && now.isBefore(LocalTime.parse(writeInterviewTimeRange.get(0))) || now.isAfter(LocalTime.parse(writeInterviewTimeRange.get(1))); -// if (isRange) { -// return false; -// } -// } else { -// return false; -// } -// } else { -// // 鏄惁鍦ㄥ厑璁歌闂殑澶╁唴 -// List<String> writeInterviewDateTimeRange = settingSchemaStruct.getWriteInterviewDateTimeRange(); -// if (CollUtil.isNotEmpty(writeInterviewDateTimeRange) && !DateUtil.isIn(DateUtil.date(), DateUtil.parse(writeInterviewDateTimeRange.get(0)), DateUtil.parse(writeInterviewDateTimeRange.get(1)))) { -// return false; -// } -// } -// // 鏄惁鏄瘡鍛ㄥ厑璁歌闂殑鍛ㄥ嚑 -// List<String> writeInterviewTimeWhichDays = settingSchemaStruct.getWriteInterviewTimeWhichDays(); -// if (CollUtil.isNotEmpty(writeInterviewTimeWhichDays)) { -// // 鑾峰彇浠婂ぉ鏄瘡鍛ㄧ殑绗嚑澶� -// int day = DateUtil.dayOfWeek(DateUtil.date()); -// return writeInterviewTimeWhichDays.contains(String.valueOf(day)); -// } -// } -// return true; -// } -// -// -// /** -// * 鍒犻櫎鍏ㄩ儴鐨勮〃鍗曟暟鎹� -// * -// * @param formKey 琛ㄥ崟key -// * @return 鍒犻櫎缁撴灉 -// */ -// @Override -// @Transactional(rollbackFor = {Exception.class}) -// public Boolean deleteAllSetting(String formKey) { -// this.remove(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey)); -// return true; -// } -// -//} +package com.ltkj.tduck.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ltkj.common.utils.SecurityUtils; +import com.ltkj.tduck.constant.CommonConstants; +import com.ltkj.tduck.domain.UserFormDataEntity; +import com.ltkj.tduck.domain.UserFormEntity; +import com.ltkj.tduck.domain.UserFormSettingEntity; +import com.ltkj.tduck.enums.FormStatusEnum; +import com.ltkj.tduck.mapper.UserFormSettingMapper; +import com.ltkj.tduck.service.UserFormDataService; +import com.ltkj.tduck.service.UserFormService; +import com.ltkj.tduck.service.UserFormSettingService; +import com.ltkj.tduck.struct.FormSettingSchemaStruct; +import com.ltkj.tduck.utils.Result; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.time.LocalTime; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** + * 琛ㄥ崟琛ㄥ崟椤�(UserFormSetting)琛ㄦ湇鍔″疄鐜扮被 + * + * @author smalljop + * @since 2020-11-30 14:00:53 + */ +@Service +@RequiredArgsConstructor +public class UserFormSettingServiceImpl extends ServiceImpl<UserFormSettingMapper, UserFormSettingEntity> implements UserFormSettingService { + private final UserFormService userFormService; + private final UserFormDataService userFormDataService; + + @Override + public Boolean saveFormSetting(Map<String, Object> params) { + String formKey = params.get("formKey").toString(); + UserFormSettingEntity entity = this.getOne(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey)); + if (ObjectUtil.isNull(entity)) { + UserFormSettingEntity setting = new UserFormSettingEntity(); + setting.setFormKey(formKey); + setting.setSettings(params); + return this.save(setting); + } + Map<String, Object> settings = entity.getSettings(); + settings.putAll(params); + entity.setSettings(settings); + return this.updateById(entity); + } + + + @Override + public UserFormSettingEntity getFormSettingByKey(String formKey) { + return this.getOne(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey)); + } + + @Override + public FormSettingSchemaStruct getFormSettingSchema(String formKey) { + UserFormSettingEntity settingEntity = getFormSettingByKey(formKey); + if (ObjectUtil.isNull(settingEntity)) { + return null; + } + return BeanUtil.toBean(settingEntity.getSettings(), FormSettingSchemaStruct.class); + } + + + @Override + public Result<Boolean> getUserFormWriteSettingStatus(String formKey, String requestIp, String wxOpenId, Integer type) { + UserFormEntity userFormEntity = userFormService.getByKey(formKey); + boolean checkPublish = Objects.equals(type, CommonConstants.ConstantNumber.ONE) && + (ObjectUtil.isNull(userFormEntity) || userFormEntity.getStatus() != 2); + // 闈炲叕寮�濉啓 涓嶆牎楠屽彂甯冪姸鎬� + if (checkPublish) { + return Result.success(null, "琛ㄥ崟鏆傛椂鏃犳硶濉啓"); + } + UserFormSettingEntity settingEntity = getFormSettingByKey(formKey); + if (ObjectUtil.isNull(settingEntity)) { + return Result.success(true); + } + FormSettingSchemaStruct settingSchemaStruct = BeanUtil.toBean(settingEntity.getSettings(), FormSettingSchemaStruct.class); + // 濉啓鏃堕棿闄愬埗 + boolean writeInterviewTime = isWriteInterviewTime(settingSchemaStruct); + if (!writeInterviewTime) { + return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getWriteInterviewTimeText(), "涓嶅湪绛旈鏃堕棿鑼冨洿鍐咃紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); + } + // 姣忎釜寰俊绛旈娆℃暟闄愬埗 + if (settingSchemaStruct.isWxWriteCountLimitStatus()) { + LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey).eq(UserFormDataEntity::getWxOpenId, wxOpenId); + String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getWxWriteCountLimitDateType()); + wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); + long writeCount = userFormDataService.count(wrapper); + if (writeCount >= settingSchemaStruct.getWxWriteCountLimit()) { + return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getWxWriteCountLimitText(), "璇ュ井淇″凡缁忔彁浜よ繃鏁版嵁锛屼笉鍙噸澶嶆彁浜わ紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); + } + } + // 姣忎釜IP绛旈娆℃暟闄愬埗 + if (settingSchemaStruct.isIpWriteCountLimitStatus()) { + LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey).eq(UserFormDataEntity::getSubmitRequestIp, requestIp); + String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getIpWriteCountLimitDateType()); + wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); + long writeCount = userFormDataService.count(wrapper); + if (writeCount >= settingSchemaStruct.getIpWriteCountLimit()) { + return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getIpWriteCountLimitText(), "璇P宸茬粡鎻愪氦杩囨暟鎹紝涓嶅彲閲嶅鎻愪氦锛屾湁闂璇蜂笌琛ㄥ崟鍙戝竷鑰呰仈绯�")); + } + } + // 鎬荤瓟棰樻鏁伴檺鍒� + if (settingSchemaStruct.isTotalWriteCountLimitStatus()) { + LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey); + String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getTotalWriteCountLimitDateType()); + wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); + long writeCount = userFormDataService.count(wrapper); + if (writeCount >= settingSchemaStruct.getTotalWriteCountLimit()) { + return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getTotalWriteCountLimitText(), "璇ヨ〃鍗曟敹闆嗘暟鎹凡缁忚揪鍒颁笂闄愶紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); + } + } + // 姣忎釜璐﹀彿绛旈娆℃暟闄愬埗 + if (settingSchemaStruct.isAccountWriteCountLimitStatus()) { + LambdaQueryWrapper<UserFormDataEntity> wrapper = Wrappers.<UserFormDataEntity>lambdaQuery().eq(UserFormDataEntity::getFormKey, formKey) + .eq(UserFormDataEntity::getCreateBy, SecurityUtils.getUserId()); + String rangeTypeSql = FormSettingSchemaStruct.DateRangeType.getDateSql(settingSchemaStruct.getAccountWriteCountLimitDateType()); + wrapper.apply(StrUtil.isNotBlank(rangeTypeSql), rangeTypeSql); + long writeCount = userFormDataService.count(wrapper); + if (writeCount >= settingSchemaStruct.getAccountWriteCountLimit()) { + return Result.success(null, StrUtil.blankToDefault(settingSchemaStruct.getAccountWriteCountLimitText(), "璇ヨ处鍙峰凡缁忔彁浜よ繃鏁版嵁锛屼笉鍙噸澶嶆彁浜わ紝鏈夐棶棰樿涓庤〃鍗曞彂甯冭�呰仈绯�")); + } + } + return Result.success(true); + } + + /** + * 鏄惁鍦ㄨ缃殑绛旈鏃堕棿鍐� + * + * @return true 鍦ㄧ瓟棰樻椂闂村唴 + */ + private boolean isWriteInterviewTime(FormSettingSchemaStruct settingSchemaStruct) { + // 绛旈鏃堕棿闄愬埗 + if (settingSchemaStruct.isWriteInterviewTimeStatus()) { + // 鏄惁姣忓ぉ鏃堕棿鑼冨洿闄愬埗 + if (settingSchemaStruct.isWriteInterviewDayTimeStatus()) { + // 鏄惁鍦ㄥ厑璁歌闂殑澶╁唴 + List<String> writeInterviewDateRange = settingSchemaStruct.getWriteInterviewDateRange(); + if (CollUtil.isEmpty(writeInterviewDateRange) || DateUtil.isIn(DateUtil.date(), DateUtil.parse(writeInterviewDateRange.get(0)), DateUtil.parse(writeInterviewDateRange.get(1)))) { + // 鏄惁鍦ㄥ厑璁歌闂殑灏忔椂鍐� + List<String> writeInterviewTimeRange = settingSchemaStruct.getWriteInterviewTimeRange(); + LocalTime now = LocalTime.now(); + boolean isRange = CollUtil.isNotEmpty(writeInterviewDateRange) && now.isBefore(LocalTime.parse(writeInterviewTimeRange.get(0))) || now.isAfter(LocalTime.parse(writeInterviewTimeRange.get(1))); + if (isRange) { + return false; + } + } else { + return false; + } + } else { + // 鏄惁鍦ㄥ厑璁歌闂殑澶╁唴 + List<String> writeInterviewDateTimeRange = settingSchemaStruct.getWriteInterviewDateTimeRange(); + if (CollUtil.isNotEmpty(writeInterviewDateTimeRange) && !DateUtil.isIn(DateUtil.date(), DateUtil.parse(writeInterviewDateTimeRange.get(0)), DateUtil.parse(writeInterviewDateTimeRange.get(1)))) { + return false; + } + } + // 鏄惁鏄瘡鍛ㄥ厑璁歌闂殑鍛ㄥ嚑 + List<String> writeInterviewTimeWhichDays = settingSchemaStruct.getWriteInterviewTimeWhichDays(); + if (CollUtil.isNotEmpty(writeInterviewTimeWhichDays)) { + // 鑾峰彇浠婂ぉ鏄瘡鍛ㄧ殑绗嚑澶� + int day = DateUtil.dayOfWeek(DateUtil.date()); + return writeInterviewTimeWhichDays.contains(String.valueOf(day)); + } + } + return true; + } + + + /** + * 鍒犻櫎鍏ㄩ儴鐨勮〃鍗曟暟鎹� + * + * @param formKey 琛ㄥ崟key + * @return 鍒犻櫎缁撴灉 + */ + @Override + @Transactional(rollbackFor = {Exception.class}) + public Boolean deleteAllSetting(String formKey) { + this.remove(Wrappers.<UserFormSettingEntity>lambdaQuery().eq(UserFormSettingEntity::getFormKey, formKey)); + return true; + } + +} diff --git a/ltkj-system/src/main/java/com/ltkj/tduck/utils/CacheUtils.java b/ltkj-system/src/main/java/com/ltkj/tduck/utils/CacheUtils.java index 88470c7..b828b20 100644 --- a/ltkj-system/src/main/java/com/ltkj/tduck/utils/CacheUtils.java +++ b/ltkj-system/src/main/java/com/ltkj/tduck/utils/CacheUtils.java @@ -1,122 +1,131 @@ -//package com.ltkj.tduck.utils; -// -//import cn.hutool.core.convert.Convert; -//import cn.hutool.core.util.ObjectUtil; -//import cn.hutool.core.util.StrUtil; -//import lombok.extern.slf4j.Slf4j; -//import org.apache.commons.compress.utils.Lists; -//import org.springframework.beans.factory.annotation.Autowired; -//import org.springframework.cache.Cache; -//import org.springframework.cache.annotation.EnableCaching; -//import org.springframework.cache.ehcache.EhCacheCacheManager; -//import org.springframework.stereotype.Component; -// -//import java.util.List; -// -///** -// * @author : tduck -// * @description : 鍩轰簬ehcache瀹炵幇 -// * @create : 2022/01/06 10:40 -// **/ -//@Component -//@Slf4j -//@EnableCaching -//public class CacheUtils { -// private final String ETERNAL_CACHE_NAME = "eternal_cache"; -// private final String TEMP_CACHE_NAME = "temp_cache"; +package com.ltkj.tduck.utils; + +import cn.hutool.core.convert.Convert; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.ltkj.common.core.redis.RedisCache; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.compress.utils.Lists; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.Cache; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @author : tduck + * @description : 鍩轰簬ehcache瀹炵幇 + * @create : 2022/01/06 10:40 + **/ +@Component +@Slf4j +@EnableCaching +public class CacheUtils { + private final String ETERNAL_CACHE_NAME = "eternal_cache"; + private final String TEMP_CACHE_NAME = "temp_cache"; // @Autowired // private EhCacheCacheManager cacheManager; -// -// /** -// * 淇濆瓨鍒癈ache -// */ -// public void save(String key, String value) { + @Autowired + private RedisCache cache; + + /** + * 淇濆瓨鍒癈ache + */ + public void save(String key, String value) { // cacheManager.getCache(ETERNAL_CACHE_NAME).put(key, value); -// } -// -// /** -// * 鑾峰彇 -// * -// * @param key -// */ -// public String get(String key) { + cache.setCacheObject(key,value); + } + + /** + * 鑾峰彇 + * + * @param key + */ + public String get(String key) { // Cache.ValueWrapper valueWrapper = cacheManager.getCache(ETERNAL_CACHE_NAME).get(key); +// Cache.ValueWrapper valueWrapper = cache.getCacheObject(key); // if (ObjectUtil.isNotNull(valueWrapper) && ObjectUtil.isNotNull(valueWrapper.get())) { // return valueWrapper.get().toString(); // } -// return null; -// } -// -// -// /** -// * 鑷 -// * -// * @param key -// * @param number -// * @return -// */ -// public Long incr(String key, Integer number) { -// String v = get(key); -// if (StrUtil.isBlank(v)) { -// v = "0"; -// } -// long finalValue = Convert.toLong(v) + number; -// save(key, String.valueOf(finalValue)); -// return finalValue; -// } -// -// -// /** -// * 娣诲姞鍒伴泦鍚堢紦瀛� -// * -// * @param key -// * @param value -// */ -// public void addList(String key, Object value) { -// List coll = this.getList(key, Object.class); -// coll.add(value); + Object valueWrapper = cache.getCacheObject(key); + if (ObjectUtil.isNotNull(valueWrapper) && ObjectUtil.isNotNull(valueWrapper)) { + return valueWrapper.toString(); + } + return null; + } + + + /** + * 鑷 + * + * @param key + * @param number + * @return + */ + public Long incr(String key, Integer number) { + String v = get(key); + if (StrUtil.isBlank(v)) { + v = "0"; + } + long finalValue = Convert.toLong(v) + number; + save(key, String.valueOf(finalValue)); + return finalValue; + } + + + /** + * 娣诲姞鍒伴泦鍚堢紦瀛� + * + * @param key + * @param value + */ + public void addList(String key, Object value) { + List coll = this.getList(key, Object.class); + coll.add(value); // cacheManager.getCache(TEMP_CACHE_NAME).put(key, JsonUtils.objToJson(coll)); -// } -// -// -// /** -// * 浠庨泦鍚堜腑绉婚櫎 -// * -// * @param key -// * @param value -// */ -// public void removeList(String key, Object value) { -// List coll = this.getList(key, Object.class); -// coll.remove(value); + cache.setCacheObject(key, JsonUtils.objToJson(coll)); + } + + + /** + * 浠庨泦鍚堜腑绉婚櫎 + * + * @param key + * @param value + */ + public void removeList(String key, Object value) { + List coll = this.getList(key, Object.class); + coll.remove(value); // cacheManager.getCache(TEMP_CACHE_NAME).put(key, JsonUtils.objToJson(coll)); -// } -// -// /** -// * 鑾峰彇闆嗗悎 -// * -// * @param key -// */ -// public List getList(String key, Class classz) { -// String v = get(key); -// if (ObjectUtil.isNotNull(v)) { -// return JsonUtils.jsonToList(v, classz.getClass()); -// } -// return Lists.newArrayList(); -// } -// -// -// /** -// * 涓存椂淇濆瓨 榛樿5min -// */ -// public void tempSave(String key, String value) { + } + + /** + * 鑾峰彇闆嗗悎 + * + * @param key + */ + public List getList(String key, Class classz) { + String v = get(key); + if (ObjectUtil.isNotNull(v)) { + return JsonUtils.jsonToList(v, classz.getClass()); + } + return Lists.newArrayList(); + } + + + /** + * 涓存椂淇濆瓨 榛樿5min + */ + public void tempSave(String key, String value) { // cacheManager.getCache(TEMP_CACHE_NAME).put(key, value); -// } -// -// /** -// * 鑾峰彇涓存椂瀛樺偍鍙橀噺 -// * -// * @param key -// */ + } + + /** + * 鑾峰彇涓存椂瀛樺偍鍙橀噺 + * + * @param key + */ // public String getTemp(String key) { // Cache.ValueWrapper valueWrapper = cacheManager.getCache(TEMP_CACHE_NAME).get(key); // if (ObjectUtil.isNotNull(valueWrapper) && ObjectUtil.isNotNull(valueWrapper.get())) { @@ -128,6 +137,6 @@ // public void removeTemp(String key) { // cacheManager.getCache(TEMP_CACHE_NAME).evict(key); // } -// -// -//} + + +} diff --git a/ltkj-system/src/main/java/com/ltkj/tduck/utils/SortUtils.java b/ltkj-system/src/main/java/com/ltkj/tduck/utils/SortUtils.java index 56e135a..c59f3ce 100644 --- a/ltkj-system/src/main/java/com/ltkj/tduck/utils/SortUtils.java +++ b/ltkj-system/src/main/java/com/ltkj/tduck/utils/SortUtils.java @@ -1,109 +1,109 @@ -//package com.ltkj.tduck.utils; -// -// -//import cn.hutool.core.util.ObjectUtil; -//import cn.hutool.core.util.StrUtil; -//import com.baomidou.mybatisplus.core.toolkit.Wrappers; -//import com.ltkj.tduck.constant.FormRedisKeyConstants; -//import com.ltkj.tduck.domain.UserFormItemEntity; -//import com.ltkj.tduck.service.UserFormItemService; -//import lombok.RequiredArgsConstructor; -//import org.springframework.stereotype.Component; -// -//import java.util.Comparator; -//import java.util.List; -// -///** -// * 涓や釜鍓嶆彁:浣嶇疆鐨勪俊鎭褰曞湪浠诲姟鐨勬ā鍨嬩笂(pos瀛楁);涓�鑸袱涓换鍔$殑pos鍊肩浉宸緢澶�(榛樿鏄�65536);鐜板湪鍋囪鏈変换鍔� A, B, C. -// * 鍒椾妇鍑犱釜甯歌鐨勫満鏅�:濡傛灉C瑕佺Щ鍒癆鐨勫墠闈�, 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 A.pos/2;鑻ユ灉C瑕佺Щ鍒癆鍜孊涔嬮棿, -// * 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 (A.pos + B.pos)/2;濡傛灉B瑕佺Щ鍒癈鐨勫悗闈�, 閭d箞鍚庣浼氭妸 B.pos 鏀逛负 C.pos + 65536; -// * 褰撶劧杩欓噷浼氭湁涓瀬绔儏鍐甸渶瑕佸鐞�(鍋囪pos鏄暣鏁�):濡傛灉 A.pos 鏄� 1, B.pos 鏄� 2, C鎯崇Щ鍒癆鍜孊涔嬮棿, 鍏跺疄鏄病鏈変竴涓暣鏁板彲浠ョ敤鐨�, -// * 閽堝杩欑鎯呭喌, 鍚庣浼氶噸鏂扮粰鏁翠釜鍒楄〃鐨勪换鍔¢噸鏂板埛涓�閬峱os鍊�. -// * <p> -// * 鎷栧姩鎺掑簭宸ュ叿绫� -// * 绠楁硶鍙傝�� @link https://www.zhihu.com/question/55789722 -// * -// * @author smalljop -// */ -//@RequiredArgsConstructor -//@Component -//public class SortUtils { -// -// private final CacheUtils cacheUtils; -// -// /** -// * 鎺掑簭榛樿鑷鍥犲瓙 -// */ -// private final Long SORT_DEFAULT_INCR_FACT = 65536L; -// -// private final UserFormItemService formItemService; -// -// -// /** -// * 鑾峰彇鎺掑簭鏁板�� -// * -// * @param formKey 琛ㄥ崟key -// * @return 鍒濆鎺掑簭鏁板�� -// */ -// public Long getInitialSortPosition(String formKey) { -// String redisKey = StrUtil.format(FormRedisKeyConstants.FORM_ITEM_POS_DELTA, formKey); -// // 妯℃澘鍒涘缓鏃� 鍒濆鎺掑簭鏁板�� -// if (StrUtil.isBlank(cacheUtils.get(redisKey))) { -// Long sort = formItemService.getLastItemSort(formKey); -// cacheUtils.save(redisKey, String.valueOf(sort == null ? 1 : sort)); -// } -// return cacheUtils.incr(redisKey, SORT_DEFAULT_INCR_FACT.intValue()); -// } -// -// -// /** -// * * 涓や釜鍓嶆彁:浣嶇疆鐨勪俊鎭褰曞湪浠诲姟鐨勬ā鍨嬩笂(pos瀛楁);涓�鑸袱涓换鍔$殑pos鍊肩浉宸緢澶�(榛樿鏄�65536);鐜板湪鍋囪鏈変换鍔� A, B, C. -// * * 鍒椾妇鍑犱釜甯歌鐨勫満鏅�:濡傛灉C瑕佺Щ鍒癆鐨勫墠闈�, 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 A.pos/2;鑻ユ灉C瑕佺Щ鍒癆鍜孊涔嬮棿, -// * * 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 (A.pos + B.pos)/2;濡傛灉B瑕佺Щ鍒癈鐨勫悗闈�, 閭d箞鍚庣浼氭妸 B.pos 鏀逛负 C.pos + 65536; -// * * 褰撶劧杩欓噷浼氭湁涓瀬绔儏鍐甸渶瑕佸鐞�(鍋囪pos鏄暣鏁�):濡傛灉 A.pos 鏄� 1, B.pos 鏄� 2, C鎯崇Щ鍒癆鍜孊涔嬮棿, 鍏跺疄鏄病鏈変竴涓暣鏁板彲浠ョ敤鐨�, -// * * 閽堝杩欑鎯呭喌, 鍚庣浼氶噸鏂扮粰鏁翠釜鍒楄〃鐨勪换鍔¢噸鏂板埛涓�閬峱os鍊�. -// * 鎺掑簭涔嬪悗閲嶆柊璁$畻 -// * -// * @param beforePosition 涔嬪墠鐨勪綅缃� -// * @param afterPosition 涔嬪悗鐨勪綅缃� -// * @param formKey 琛ㄥ崟key -// * @return 鏈�缁堜綅缃� -// */ -// public Long calcSortPosition(Long beforePosition, Long afterPosition, String formKey) { -// String redisKey = StrUtil.format(FormRedisKeyConstants.FORM_ITEM_POS_DELTA, formKey); -// boolean isCenter = (ObjectUtil.isNotNull(beforePosition) && 0L != beforePosition) && (ObjectUtil.isNotNull(afterPosition) && 0L != afterPosition); -// if (isCenter) { // 鏀惧埌涓棿 -// return (beforePosition + afterPosition) / 2; -// } -// if (ObjectUtil.isNull(beforePosition) || 0L == beforePosition) { // 鏀惧埌鏈�鍓嶉潰 -// return afterPosition / 2; -// } else { // 鏀惧埌鏈�鍚庨潰 -// return cacheUtils.incr(redisKey, SORT_DEFAULT_INCR_FACT.intValue()); -// } -// } -// -// -// /** -// * 鏋佺鎯呭喌鍒锋柊鏁翠釜鍒楄〃 -// * -// * @param beforePosition 涔嬪墠鐨勪綅缃� -// * @param afterPosition 涔嬪悗鐨勪綅缃� -// * @param formKey 琛ㄥ崟key -// * @param sort 鎺掑簭鏁板�� -// */ -// public Boolean sortAllList(Long beforePosition, Long afterPosition, String formKey, Long sort) { -// // 鍗冲皢娌℃湁鏁存暟锛屽埛鏂板叏閮ㄥ垪琛ㄦ帓搴忓�� -// if ((ObjectUtil.isNotNull(beforePosition) && 0L != beforePosition && ObjectUtil.equal(sort, beforePosition + 1)) -// || (ObjectUtil.isNotNull(afterPosition) && 0L != afterPosition && ObjectUtil.equal(sort, 1L))) { -// List<UserFormItemEntity> itemEntityList = formItemService.list(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, formKey)); -// itemEntityList.sort(Comparator.comparing(UserFormItemEntity::getSort)); -// for (int i = 0; i < itemEntityList.size(); i++) { -// itemEntityList.get(i).setSort(SORT_DEFAULT_INCR_FACT * (i + 1)); -// } -// formItemService.updateBatchById(itemEntityList); -// return true; -// } -// return false; -// } -// -//} +package com.ltkj.tduck.utils; + + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ltkj.tduck.constant.FormRedisKeyConstants; +import com.ltkj.tduck.domain.UserFormItemEntity; +import com.ltkj.tduck.service.UserFormItemService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.Comparator; +import java.util.List; + +/** + * 涓や釜鍓嶆彁:浣嶇疆鐨勪俊鎭褰曞湪浠诲姟鐨勬ā鍨嬩笂(pos瀛楁);涓�鑸袱涓换鍔$殑pos鍊肩浉宸緢澶�(榛樿鏄�65536);鐜板湪鍋囪鏈変换鍔� A, B, C. + * 鍒椾妇鍑犱釜甯歌鐨勫満鏅�:濡傛灉C瑕佺Щ鍒癆鐨勫墠闈�, 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 A.pos/2;鑻ユ灉C瑕佺Щ鍒癆鍜孊涔嬮棿, + * 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 (A.pos + B.pos)/2;濡傛灉B瑕佺Щ鍒癈鐨勫悗闈�, 閭d箞鍚庣浼氭妸 B.pos 鏀逛负 C.pos + 65536; + * 褰撶劧杩欓噷浼氭湁涓瀬绔儏鍐甸渶瑕佸鐞�(鍋囪pos鏄暣鏁�):濡傛灉 A.pos 鏄� 1, B.pos 鏄� 2, C鎯崇Щ鍒癆鍜孊涔嬮棿, 鍏跺疄鏄病鏈変竴涓暣鏁板彲浠ョ敤鐨�, + * 閽堝杩欑鎯呭喌, 鍚庣浼氶噸鏂扮粰鏁翠釜鍒楄〃鐨勪换鍔¢噸鏂板埛涓�閬峱os鍊�. + * <p> + * 鎷栧姩鎺掑簭宸ュ叿绫� + * 绠楁硶鍙傝�� @link https://www.zhihu.com/question/55789722 + * + * @author smalljop + */ +@RequiredArgsConstructor +@Component +public class SortUtils { + + private final CacheUtils cacheUtils; + + /** + * 鎺掑簭榛樿鑷鍥犲瓙 + */ + private final Long SORT_DEFAULT_INCR_FACT = 65536L; + + private final UserFormItemService formItemService; + + + /** + * 鑾峰彇鎺掑簭鏁板�� + * + * @param formKey 琛ㄥ崟key + * @return 鍒濆鎺掑簭鏁板�� + */ + public Long getInitialSortPosition(String formKey) { + String redisKey = StrUtil.format(FormRedisKeyConstants.FORM_ITEM_POS_DELTA, formKey); + // 妯℃澘鍒涘缓鏃� 鍒濆鎺掑簭鏁板�� + if (StrUtil.isBlank(cacheUtils.get(redisKey))) { + Long sort = formItemService.getLastItemSort(formKey); + cacheUtils.save(redisKey, String.valueOf(sort == null ? 1 : sort)); + } + return cacheUtils.incr(redisKey, SORT_DEFAULT_INCR_FACT.intValue()); + } + + + /** + * * 涓や釜鍓嶆彁:浣嶇疆鐨勪俊鎭褰曞湪浠诲姟鐨勬ā鍨嬩笂(pos瀛楁);涓�鑸袱涓换鍔$殑pos鍊肩浉宸緢澶�(榛樿鏄�65536);鐜板湪鍋囪鏈変换鍔� A, B, C. + * * 鍒椾妇鍑犱釜甯歌鐨勫満鏅�:濡傛灉C瑕佺Щ鍒癆鐨勫墠闈�, 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 A.pos/2;鑻ユ灉C瑕佺Щ鍒癆鍜孊涔嬮棿, + * * 閭d箞鍚庣浼氭妸 C.pos 鏀逛负 (A.pos + B.pos)/2;濡傛灉B瑕佺Щ鍒癈鐨勫悗闈�, 閭d箞鍚庣浼氭妸 B.pos 鏀逛负 C.pos + 65536; + * * 褰撶劧杩欓噷浼氭湁涓瀬绔儏鍐甸渶瑕佸鐞�(鍋囪pos鏄暣鏁�):濡傛灉 A.pos 鏄� 1, B.pos 鏄� 2, C鎯崇Щ鍒癆鍜孊涔嬮棿, 鍏跺疄鏄病鏈変竴涓暣鏁板彲浠ョ敤鐨�, + * * 閽堝杩欑鎯呭喌, 鍚庣浼氶噸鏂扮粰鏁翠釜鍒楄〃鐨勪换鍔¢噸鏂板埛涓�閬峱os鍊�. + * 鎺掑簭涔嬪悗閲嶆柊璁$畻 + * + * @param beforePosition 涔嬪墠鐨勪綅缃� + * @param afterPosition 涔嬪悗鐨勪綅缃� + * @param formKey 琛ㄥ崟key + * @return 鏈�缁堜綅缃� + */ + public Long calcSortPosition(Long beforePosition, Long afterPosition, String formKey) { + String redisKey = StrUtil.format(FormRedisKeyConstants.FORM_ITEM_POS_DELTA, formKey); + boolean isCenter = (ObjectUtil.isNotNull(beforePosition) && 0L != beforePosition) && (ObjectUtil.isNotNull(afterPosition) && 0L != afterPosition); + if (isCenter) { // 鏀惧埌涓棿 + return (beforePosition + afterPosition) / 2; + } + if (ObjectUtil.isNull(beforePosition) || 0L == beforePosition) { // 鏀惧埌鏈�鍓嶉潰 + return afterPosition / 2; + } else { // 鏀惧埌鏈�鍚庨潰 + return cacheUtils.incr(redisKey, SORT_DEFAULT_INCR_FACT.intValue()); + } + } + + + /** + * 鏋佺鎯呭喌鍒锋柊鏁翠釜鍒楄〃 + * + * @param beforePosition 涔嬪墠鐨勪綅缃� + * @param afterPosition 涔嬪悗鐨勪綅缃� + * @param formKey 琛ㄥ崟key + * @param sort 鎺掑簭鏁板�� + */ + public Boolean sortAllList(Long beforePosition, Long afterPosition, String formKey, Long sort) { + // 鍗冲皢娌℃湁鏁存暟锛屽埛鏂板叏閮ㄥ垪琛ㄦ帓搴忓�� + if ((ObjectUtil.isNotNull(beforePosition) && 0L != beforePosition && ObjectUtil.equal(sort, beforePosition + 1)) + || (ObjectUtil.isNotNull(afterPosition) && 0L != afterPosition && ObjectUtil.equal(sort, 1L))) { + List<UserFormItemEntity> itemEntityList = formItemService.list(Wrappers.<UserFormItemEntity>lambdaQuery().eq(UserFormItemEntity::getFormKey, formKey)); + itemEntityList.sort(Comparator.comparing(UserFormItemEntity::getSort)); + for (int i = 0; i < itemEntityList.size(); i++) { + itemEntityList.get(i).setSort(SORT_DEFAULT_INCR_FACT * (i + 1)); + } + formItemService.updateBatchById(itemEntityList); + return true; + } + return false; + } + +} -- Gitblit v1.8.0