From 5fbf1de68b0f92217daa080f3530ef5a91cf5f7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E8=A3=95=E8=B4=A2?= Date: Sat, 7 Oct 2023 13:59:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=87=E7=BA=A72.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/mdp/form/ctrl/FormDataController.java | 4 +- .../com/mdp/form/service/FormDataService.java | 87 ++++++++++++++----- .../com/mdp/form/service/FormDefService.java | 11 +-- 3 files changed, 70 insertions(+), 32 deletions(-) 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 98c7ce0..7d31956 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 @@ -180,7 +180,7 @@ public class FormDataController { return Result.error("field-required","%s不能为空",field.getTitle()); } } - String bizKey=formDataService.createBizKey(formFields,formData); + String bizKey=formDataService.createBizKey(formDefVo,formData); if(ObjectTools.isNotEmpty(bizKey) && formDataService.count(QueryTools.initQueryWrapper(FormData.class).eq("biz_key",bizKey).eq("form_id",formData.getFormId()))>0){ return Result.error("biz-key-exists","%s已存在",bizKey); }; @@ -243,7 +243,7 @@ public class FormDataController { } } - String bizKey= formDataService.createBizKey(formFields,formData); + String bizKey= formDataService.createBizKey(formDefVo,formData); formData.setBizKey(ObjectTools.isNotEmpty(bizKey)?bizKey:formDataDb.getId()); if(ObjectTools.isNotEmpty(bizKey) && !bizKey.equals(formDataDb.getBizKey())){ if(formDataService.count(QueryTools.initQueryWrapper(FormData.class).eq("biz_key",bizKey).eq("form_id",formData.getFormId()))>0){ 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 b11e8df..c0aefd4 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 @@ -1,13 +1,17 @@ package com.mdp.form.service; +import com.alibaba.fastjson.JSONObject; 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.DateUtils; import com.mdp.core.utils.ObjectTools; import com.mdp.form.FormUtil; import com.mdp.form.entity.*; +import com.mdp.safe.client.entity.User; +import com.mdp.safe.client.utils.LoginUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -70,34 +74,71 @@ public class FormDataService extends BaseService { /** * 创建业务主键 - * @param formFields + * @param formDefVo * @param formData * @return */ - public String createBizKey(List formFields,FormData formData){ - - List pks=new ArrayList<>(); - List pkFields=formFields.stream().filter(k->k.getBkey().endsWith("1")).collect(Collectors.toList()); - if(pkFields==null || pkFields.size()==0){//没有业务主键,则取id + public String createBizKey(FormDefVo formDefVo,FormData formData){ + User user= LoginUtils.getCurrentUserInfo(); + FormDef formDef=formDefVo.getFormDef(); + if(ObjectTools.isEmpty(formDef.getPks())){ return ""; } - Map formDataMap= BaseUtils.toMap(formData); - FormField pk=pkFields.get(0); - String isBizKey=pk.getBkey(); - if(isBizKey.startsWith("1")){ - pks.add(formData.getCuserid()); + String[] pkIds1=formDef.getPks().split(":"); + String ctimeFormat=""; + if(pkIds1.length>1){ + ctimeFormat=pkIds1[1]; } - if(isBizKey.charAt(1)=='1'){ - pks.add(formData.getDeptid()); + String[] pkIds=pkIds1[0].split(","); + List extInfosPkIds= Arrays.stream(pkIds).filter(k->k.indexOf(".")>=0).collect(Collectors.toList()); + Map extInfos=new HashMap<>(); + if(extInfosPkIds.size()>0){ + extInfos= JSONObject.parseObject(formData.getExtInfos()); } - for (FormField pkField : pkFields) { - Object pkValue= formDataMap.get(pkField.getIdCamel()); - if(ObjectTools.isEmpty(pkValue)){ - throw new BizException(LangTips.errMsg("pk-field-required","%s不能为空",pkField.getTitle())); + List bizKeys=new ArrayList<>(); + Map formDataMap=null; + for (String pkId : pkIds) { + if(pkId.indexOf(".")<0){ + if(pkId.equals("ctime")){ + String formate=transNum2String(ctimeFormat); + String ctime=DateUtils.format(formData.getCtime(),formate); + bizKeys.add(ctime); + }else if("cuserid".equals(pkId)){ + bizKeys.add(formData.getCuserid()); + }else if("deptid".equals(pkId)){ + bizKeys.add(formData.getDeptid()); + }else{ + if(formDataMap==null){ + formDataMap=BaseUtils.toMap(formData); + } + String val= (String) formDataMap.get(pkId); + if(ObjectTools.isEmpty(val)){ + throw new BizException(LangTips.errMsg("pk-field-required","%s不能为空",pkId)); + + } + } + }else{ + String pkIdTrim=pkId.replaceAll("\\w*[.]",""); + + String v= (String) extInfos.get(pkIdTrim); + if(ObjectTools.isEmpty(v)){ + throw new BizException(LangTips.errMsg("pk-field-required","%s不能为空",pkId)); + } + bizKeys.add(v); } - pks.add((String) formDataMap.get(pkField.getIdCamel())); } - return pks.stream().collect(Collectors.joining(",")); + return bizKeys.stream().collect(Collectors.joining(",")); + } + + public String transNum2String(String num){ + Map m=new HashMap<>(); + m.put("1","yyyy"); + m.put("2","yyyy-MM"); + m.put("3","yyyy-MM-dd"); + m.put("4","yyyy-MM-dd HH"); + m.put("5","yyyy-MM-dd HH:mm"); + m.put("6","yyyy-MM-dd HH:mm:ss"); + return m.get(num); } /** @@ -122,7 +163,7 @@ public class FormDataService extends BaseService { public int insertOrUpdate(FormDataVo formData, boolean checkFstate) { String formId=formData.getFormId(); FormDefVo formDefVo=formFieldService.getFormFieldFromCache(formId); - String bizKey=this.createBizKey(formDefVo.getFormFields(), formData); + String bizKey=this.createBizKey(formDefVo, formData); formData.setBizKey(bizKey); if(StringUtils.isEmpty(formData.getId())){ formData.setId(this.createKey("id")); @@ -215,7 +256,7 @@ public class FormDataService extends BaseService { List needUpdateList=new ArrayList<>(); for (FormDataVo formData : formDatas) { - String bizKey=createBizKey(formFields,formData); + String bizKey=createBizKey(fromDefVo,formData); formData.setBizKey(bizKey); FormData fd=this.getDbFormDataByBizKey(formId,formData.getBizKey()); if(fd==null) {//如果通过bizKey查不出来 @@ -309,7 +350,7 @@ public class FormDataService extends BaseService { } } if(!needUpdateFormDataMap.isEmpty()){ - String bizKey=this.createBizKey(formDefVo.getFormFields(), formDataOrigin); + String bizKey=this.createBizKey(formDefVo, formDataOrigin); if(needUpdateBizKey){ needUpdateFormDataMap.put("bizKey", bizKey); } @@ -326,7 +367,7 @@ public class FormDataService extends BaseService { if(formDatasMap!=null && formDatasMap.size()>0) { FormDataVo formDataVo=BaseUtils.fromMap(formDatasMap, FormDataVo.class); FormDefVo formDefVo=this.formFieldService.getFormFieldFromCache(formId); - String bizKey=this.createBizKey(formDefVo.getFormFields(),formDataVo); + String bizKey=this.createBizKey(formDefVo,formDataVo); formDataVo.setBizKey(bizKey); if(StringUtils.isEmpty(formDataVo.getId())) { formDataVo.setId(this.createKey("id")); 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 269f763..dda3cfd 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 @@ -102,14 +102,11 @@ public class FormDefService extends BaseService { List formFields=formDefVo.getFormFields(); for (FormField formField : formFields) { - String fieldBizKey=formField.getBkey(); - if(StringUtils.isEmpty(fieldBizKey) ) { - throw new BizException("is-biz-key-err-001", "isBizKey", "表单字段定义的主键编码错误,长度应为3位 格式位 111 第一位代表创建人是否为主键,第二位代表创建部门是否为主键,第三位代表该字段是否为主键"); - }else if( fieldBizKey.length()!=3) { - throw new BizException("is-biz-key-err-001", "isBizKey", "表单字段定义的主键编码错误,长度应为3位 格式位 111 第一位代表创建人是否为主键,第二位代表创建部门是否为主键,第三位代表该字段是否为主键"); - } formField.setFormId(formDef.getId()); - throw new BizException("id-required","字段编码id不能为空"); + if(ObjectTools.isEmpty(formField.getId())){ + throw new BizException("id-required","字段编码id不能为空"); + } + } super.save(formDef); this.ffs.saveBatch(formFields);