diff --git a/mdp-form/src/main/java/com/mdp/form/ctrl/FormDataController.java b/mdp-form/src/main/java/com/mdp/form/ctrl/FormDataController.java index 5eab3c6..c9bd253 100644 --- a/mdp-form/src/main/java/com/mdp/form/ctrl/FormDataController.java +++ b/mdp-form/src/main/java/com/mdp/form/ctrl/FormDataController.java @@ -2,6 +2,12 @@ package com.mdp.form.ctrl; import java.util.*; import java.util.stream.Collectors; + +import com.mdp.core.utils.BaseUtils; +import com.mdp.core.utils.ObjectTools; +import com.mdp.form.entity.FormDefVo; +import com.mdp.form.entity.FormField; +import com.mdp.form.service.FormFieldService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -45,6 +51,10 @@ public class FormDataController { @Autowired private FormDataService formDataService; + + @Autowired + private FormFieldService formFieldService; + @ApiOperation( value = "表单数据表-查询列表",notes=" ") @ApiEntityParams(FormData.class) @ApiResponses({ @@ -75,6 +85,13 @@ public class FormDataController { if(StringUtils.isEmpty(formData.getFlowState())) { formData.setFlowState("0"); } + + FormDefVo formDefVo=formFieldService.getFormFieldFromCache(formData.getFormId()); + if(formDefVo==null){ + throw new BizException("formDef-0","表单不存在"); + } + List formFields=formDefVo.getFormFields(); + User user=LoginUtils.getCurrentUserInfo(); formData.setUserid(user.getUserid()); formData.setCuserid(user.getUserid()); @@ -83,10 +100,30 @@ public class FormDataController { formData.setDeptName(user.getDeptName()); formData.setCreateTime(new Date()); formData.setLastTime(new Date()); + + + + /** + * 必输项检查 + */ + Map formDataMap=BaseUtils.toMap(formData); + for (FormField field : formFields) { + Object pkValue= formDataMap.get(field.getFieldIdCamel()); + if("1".equals(field.getIsRequired()) && ObjectTools.isEmpty(pkValue)){ + return Result.error("field-required","%s不能为空",field.getFieldTitle()); + } + } + String bizKey=formDataService.createBizKey(formFields,formData); + if(formDataService.count(QueryTools.initQueryWrapper(FormData.class).eq("biz_key",bizKey).eq("form_id",formData.getFormId()))>0){ + return Result.error("biz-key-exists","%s已存在",bizKey); + }; + formData.setBizKey(bizKey); formDataService.save(formData); return Result.ok("add-ok","添加成功!"); } + + @ApiOperation( value = "表单数据表-删除",notes=" ") @ApiResponses({ @ApiResponse(code = 200, message = "{tips:{isOk:true/false,msg:'成功/失败原因',tipscode:'失败时错误码'}}") @@ -103,6 +140,13 @@ public class FormDataController { }) @RequestMapping(value="/edit",method=RequestMethod.POST) public Result editFormData(@RequestBody FormData formData) { + if(ObjectTools.isEmpty(formData.getId())){ + return Result.error("id-0","主键不能为空"); + } + FormData formDataDb=formDataService.getById(formData.getId()); + if(formDataDb==null){ + return Result.error("data-0","数据已不存在"); + } formData.setLastTime(new Date()); if(formData.getCreateTime()==null) { formData.setCreateTime(new Date()); @@ -114,6 +158,30 @@ public class FormDataController { if(StringUtils.isEmpty(formData.getFlowState())) { formData.setFlowState("0"); } + + FormDefVo formDefVo=formFieldService.getFormFieldFromCache(formData.getFormId()); + if(formDefVo==null){ + throw new BizException("formDef-0","表单不存在"); + } + List formFields=formDefVo.getFormFields(); + /** + * 必输项检查 + */ + Map formDataMap=BaseUtils.toMap(formData); + for (FormField field : formFields) { + Object pkValue= formDataMap.get(field.getFieldIdCamel()); + if("1".equals(field.getIsRequired()) && ObjectTools.isEmpty(pkValue)){ + return Result.error("field-required","%s不能为空",field.getFieldTitle()); + } + } + + String bizKey= formDataService.createBizKey(formFields,formData); + formData.setBizKey(bizKey); + if(!bizKey.equals(formDataDb.getBizKey())){ + if(formDataService.count(QueryTools.initQueryWrapper(FormData.class).eq("biz_key",bizKey).eq("form_id",formData.getFormId()))>0){ + return Result.error("biz-key-exists","%s已存在",bizKey); + }; + } formDataService.updateById(formData); return Result.ok("edit-ok","修改成功!"); } diff --git a/mdp-form/src/main/java/com/mdp/form/ctrl/FormDefController.java b/mdp-form/src/main/java/com/mdp/form/ctrl/FormDefController.java index 88025f4..a32068c 100644 --- a/mdp-form/src/main/java/com/mdp/form/ctrl/FormDefController.java +++ b/mdp-form/src/main/java/com/mdp/form/ctrl/FormDefController.java @@ -3,6 +3,7 @@ package com.mdp.form.ctrl; import java.util.*; import java.util.stream.Collectors; +import com.mdp.core.utils.ObjectTools; import com.mdp.form.entity.FormDefVo; import com.mdp.form.service.FormDataService; import org.slf4j.Logger; @@ -120,9 +121,9 @@ public class FormDefController { if(count>0) { return Result.error("has-form-data-001","该表单下还有%s条数据,请先删除数据 后删除表单",count); }else { - int i =formDefService.deleteByPk(formDef); + formDefService.removeById(formDef.getId()); } - formDefService.removeById(formDef); + return Result.ok("del-ok","删除成功!"); } diff --git a/mdp-form/src/main/java/com/mdp/form/ctrl/FormFieldController.java b/mdp-form/src/main/java/com/mdp/form/ctrl/FormFieldController.java index 53caddc..43882f1 100644 --- a/mdp-form/src/main/java/com/mdp/form/ctrl/FormFieldController.java +++ b/mdp-form/src/main/java/com/mdp/form/ctrl/FormFieldController.java @@ -19,25 +19,14 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import io.swagger.annotations.*; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.mdp.core.entity.Result; -import com.mdp.core.query.QueryTools; -import static com.mdp.core.utils.BaseUtils.*; -import com.mdp.core.entity.Tips; import com.mdp.core.entity.LangTips; import com.mdp.core.err.BizException; -import com.mdp.core.utils.RequestUtils; -import com.mdp.core.utils.NumberUtil; import com.mdp.safe.client.entity.User; import com.mdp.safe.client.utils.LoginUtils; import com.mdp.swagger.ApiEntityParams; -import io.swagger.annotations.*; import springfox.documentation.annotations.ApiIgnore; -import javax.servlet.http.HttpServletRequest; - import com.mdp.form.service.FormFieldService; import com.mdp.form.entity.FormField; @@ -54,8 +43,6 @@ public class FormFieldController { @Autowired private FormDefService formDefService; - @Autowired - FormFieldCacheService formFieldCacheService; @ApiOperation( value = "表单字段定义-查询列表",notes=" ") @ApiEntityParams(FormField.class) @@ -68,21 +55,11 @@ public class FormFieldController { User user=LoginUtils.getCurrentUserInfo(); String formId=(String) params.get("formId"); if(!StringUtils.hasText(formId)){ - return ResponseHelper.failed("formId-0","formId不能为空"); + return Result.error("formId-0","formId不能为空"); } - FormDefVo formDefVo=this.formFieldCacheService.getFromFields(formId); - if(formDefVo==null ) { - FormDef formDef=this.formDefService.selectOneById(formId); - if(formDef==null){ - return ResponseHelper.failed("formDef-0","表单不存在"); - } - FormField formFieldQuery=new FormField(); - formFieldQuery.setFormId(formId); - List formFields = formFieldService.selectListByWhere(formFieldQuery); //列出FormField列表 - formDefVo=new FormDefVo(); - formDefVo.setFormDef(formDef); - formDefVo.setFormFields(formFields); - formFieldCacheService.putFormFields(formId, formDefVo); + FormDefVo formDefVo=this.formFieldService.getFormFieldFromCache(formId); + if(formDefVo==null ) { + return Result.error("formDef-0","表单不存在"); } return Result.ok("query-ok","查询成功").setData(formDefVo).setTotal(1).put("formDef",formDefVo.getFormDef()); }catch (BizException e) { diff --git a/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java b/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java index a811e42..b733aa2 100644 --- a/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java +++ b/mdp-form/src/main/java/com/mdp/form/service/FormDataService.java @@ -3,7 +3,9 @@ package com.mdp.form.service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.mdp.core.entity.LangTips; import com.mdp.core.utils.BaseUtils; +import com.mdp.core.utils.ObjectTools; import com.mdp.form.FormUtil; import com.mdp.form.entity.*; import org.slf4j.Logger; @@ -67,6 +69,38 @@ public class FormDataService extends BaseService { } + /** + * 创建业务主键 + * @param formFields + * @param formData + * @return + */ + public String createBizKey(List formFields,FormData formData){ + + List pks=new ArrayList<>(); + List pkFields=formFields.stream().filter(k->k.getIsBizKey().endsWith("1")).collect(Collectors.toList()); + if(pkFields==null || pkFields.size()==0){ + throw new BizException("pkfields-0","表单主键不存在,请设置表单主键"); + } + Map formDataMap= BaseUtils.toMap(formData); + FormField pk=pkFields.get(0); + String isBizKey=pk.getIsBizKey(); + if(isBizKey.startsWith("1")){ + pks.add(formData.getCuserid()); + } + if(isBizKey.charAt(1)=='1'){ + pks.add(formData.getDeptid()); + } + for (FormField pkField : pkFields) { + Object pkValue= formDataMap.get(pkField.getFieldIdCamel()); + if(ObjectTools.isEmpty(pkValue)){ + throw new BizException(LangTips.errMsg("pk-field-required","%s不能为空",pkField.getFieldTitle())); + } + pks.add((String) formDataMap.get(pkField.getFieldIdCamel())); + } + return pks.stream().collect(Collectors.joining(",")); + } + /** * 流程结束时调用更新数据状态未2 审核结束 * @param flowState diff --git a/mdp-form/src/main/java/com/mdp/form/service/FormDefService.java b/mdp-form/src/main/java/com/mdp/form/service/FormDefService.java index ae673fa..ab45683 100644 --- a/mdp-form/src/main/java/com/mdp/form/service/FormDefService.java +++ b/mdp-form/src/main/java/com/mdp/form/service/FormDefService.java @@ -125,9 +125,8 @@ public class FormDefService extends BaseService { formField.setFormId(formDef.getId()); formField.setId(ffs.createKey("id")); } - this.updateByPk(formDef); + this.save(formDef); this.ffs.deleteByFormId(formDef.getId()); - this.ffs.batchDelete( formFields); this.ffs.saveBatch(formFields); formFieldCacheService.putFormFields(formDef.getId(), formDefVo); diff --git a/mdp-form/src/main/java/com/mdp/form/service/FormFieldCacheService.java b/mdp-form/src/main/java/com/mdp/form/service/FormFieldCacheService.java index 949f261..6fb30af 100644 --- a/mdp-form/src/main/java/com/mdp/form/service/FormFieldCacheService.java +++ b/mdp-form/src/main/java/com/mdp/form/service/FormFieldCacheService.java @@ -20,7 +20,7 @@ public class FormFieldCacheService { redisTemplate.expire(cachKey+"_"+formId, 100, TimeUnit.DAYS); } - public FormDefVo getFromFields(String formId) { + public FormDefVo getFormFields(String formId) { return (FormDefVo) redisTemplate.opsForHash().get(cachKey+"_"+formId, formId); } diff --git a/mdp-form/src/main/java/com/mdp/form/service/FormFieldService.java b/mdp-form/src/main/java/com/mdp/form/service/FormFieldService.java index c755a46..88ead5a 100644 --- a/mdp-form/src/main/java/com/mdp/form/service/FormFieldService.java +++ b/mdp-form/src/main/java/com/mdp/form/service/FormFieldService.java @@ -13,9 +13,6 @@ import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.mdp.core.service.BaseService; -import static com.mdp.core.utils.BaseUtils.*; -import com.mdp.core.entity.Tips; -import com.mdp.core.err.BizException; import com.mdp.form.entity.FormField; import com.mdp.form.mapper.FormFieldMapper; @@ -56,7 +53,7 @@ public class FormFieldService extends BaseService { public FormDefVo getFormFieldFromCache(String formId){ - FormDefVo formDefVo=this.formFieldCacheService.getFromFields(formId); + FormDefVo formDefVo=this.formFieldCacheService.getFormFields(formId); if(formDefVo==null) { formDefVo=new FormDefVo(); FormDef formDef=formDefService.selectOneById(formId);