diff --git a/src/main/java/neatlogic/module/process/api/form/ProcessTaskFormDataPublicApi.java b/src/main/java/neatlogic/module/process/api/form/ProcessTaskFormDataPublicApi.java index 5c991ad7cc7a566521858dbef99311c5be095c95..bc74e12bedf681b549d65f3f32632036fbdb8f65 100644 --- a/src/main/java/neatlogic/module/process/api/form/ProcessTaskFormDataPublicApi.java +++ b/src/main/java/neatlogic/module/process/api/form/ProcessTaskFormDataPublicApi.java @@ -1,13 +1,12 @@ package neatlogic.module.process.api.form; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.common.constvalue.ApiParamType; -import neatlogic.framework.process.dao.mapper.ProcessTaskMapper; import neatlogic.framework.process.dto.ProcessTaskFormAttributeDataVo; import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.publicapi.PublicApiComponentBase; import neatlogic.module.process.service.ProcessTaskService; -import com.alibaba.fastjson.JSONObject; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -18,8 +17,6 @@ public class ProcessTaskFormDataPublicApi extends PublicApiComponentBase { @Resource private ProcessTaskService processTaskService; - @Resource - private ProcessTaskMapper processTaskMapper; @Override public String getToken() { @@ -47,7 +44,7 @@ public class ProcessTaskFormDataPublicApi extends PublicApiComponentBase { public Object myDoService(JSONObject jsonObj) throws Exception { Long processTaskId = jsonObj.getLong("processTaskId"); processTaskService.checkProcessTaskParamsIsLegal(processTaskId); - return processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); + return processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(processTaskId); } } diff --git a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDeleteApi.java b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDeleteApi.java index 57251a7023fe966da8aaa854ae60f966cff98a31..aa9801c5393997c9a98ae4f6584ca3adb6a352f3 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDeleteApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDeleteApi.java @@ -40,6 +40,7 @@ import neatlogic.framework.restful.annotation.Param; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; import com.alibaba.fastjson.JSONObject; +import neatlogic.module.process.service.ProcessTaskService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -68,6 +69,9 @@ public class ProcessTaskDeleteApi extends PrivateApiComponentBase { @Resource private IProcessStepHandlerUtil IProcessStepHandlerUtil; + @Resource + private ProcessTaskService processTaskService; + @Override public String getToken() { return "processtask/delete"; @@ -122,7 +126,7 @@ public class ProcessTaskDeleteApi extends PrivateApiComponentBase { } // 表单 processtask_form processtask_formattribute_data taskMapper.deleteProcessTaskFormByProcessTaskId(processTaskId); - taskMapper.deleteProcessTaskFormAttributeDataByProcessTaskId(processTaskId); + processTaskService.deleteProcessTaskFormAttributeDataByProcessTaskId(processTaskId); // 关注人 processtask_focus taskMapper.deleteProcessTaskFocusByProcessTaskId(processTaskId); // 流程汇聚 processtask_converge diff --git a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftGetApi.java b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftGetApi.java index c1d1353a13d4df5035caf7062af04ee1f4b0af8b..1d9cc110610b0f300ce64b00397ce85e35fbfc4b 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftGetApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/ProcessTaskDraftGetApi.java @@ -208,7 +208,7 @@ public class ProcessTaskDraftGetApi extends PrivateApiComponentBase { labelHandlerMap.put(formAttributeVo.getLabel(), formAttributeVo.getHandler()); } Map formAttributeDataMap = new HashMap<>(); - List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(fromProcessTaskId); + List processTaskFormAttributeDataList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(fromProcessTaskId); for (ProcessTaskFormAttributeDataVo processTaskFormAttributeDataVo : processTaskFormAttributeDataList) { formAttributeDataMap.put(processTaskFormAttributeDataVo.getAttributeUuid(), processTaskFormAttributeDataVo.getDataObj()); } diff --git a/src/main/java/neatlogic/module/process/api/processtask/SearchProcessTaskFileApi.java b/src/main/java/neatlogic/module/process/api/processtask/SearchProcessTaskFileApi.java index a20ea7e6abf24819a6b99d274813589b79146af7..41a5df3b1ba4331be9a529d73867590c8db165bd 100644 --- a/src/main/java/neatlogic/module/process/api/processtask/SearchProcessTaskFileApi.java +++ b/src/main/java/neatlogic/module/process/api/processtask/SearchProcessTaskFileApi.java @@ -16,6 +16,9 @@ package neatlogic.module.process.api.processtask; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.auth.core.AuthAction; import neatlogic.framework.common.constvalue.ApiParamType; import neatlogic.framework.common.dto.BasePageVo; @@ -32,9 +35,7 @@ import neatlogic.framework.process.stephandler.core.ProcessStepInternalHandlerFa import neatlogic.framework.restful.annotation.*; import neatlogic.framework.restful.constvalue.OperationTypeEnum; import neatlogic.framework.restful.core.privateapi.PrivateApiComponentBase; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; +import neatlogic.module.process.service.ProcessTaskService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -42,10 +43,7 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Comparator; -import java.util.Date; -import java.util.List; +import java.util.*; import java.util.stream.Collectors; @Service @@ -58,6 +56,9 @@ public class SearchProcessTaskFileApi extends PrivateApiComponentBase { @Resource private ProcessTaskMapper processTaskMapper; + @Resource + private ProcessTaskService processTaskService; + @Resource private FileMapper fileMapper; @@ -99,9 +100,12 @@ public class SearchProcessTaskFileApi extends PrivateApiComponentBase { List fileList = processTaskMapper.getFileDetailListByProcessTaskId(processTaskId); List fileIdList = new ArrayList<>(); // 表单附件 - List formDataList = processTaskMapper.getProcessTaskFormAttributeDataListByProcessTaskIdAndFormType(processTaskId, FormHandler.FORMUPLOAD.getHandler()); + List formDataList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(processTaskId); if (formDataList.size() > 0) { for (ProcessTaskFormAttributeDataVo dataVo : formDataList) { + if (!Objects.equals(dataVo.getHandler(), FormHandler.FORMUPLOAD.getHandler())) { + continue; + } String data = dataVo.getData(); if (StringUtils.isNotBlank(data)) { try { diff --git a/src/main/java/neatlogic/module/process/api/workcenter/WorkcenterDataExportApi.java b/src/main/java/neatlogic/module/process/api/workcenter/WorkcenterDataExportApi.java index f39815649e4ec27509a3e7a3dc1d6148e4c9bf46..adf3392f3773afcf4d226fe5f8586fdd36a472eb 100644 --- a/src/main/java/neatlogic/module/process/api/workcenter/WorkcenterDataExportApi.java +++ b/src/main/java/neatlogic/module/process/api/workcenter/WorkcenterDataExportApi.java @@ -45,6 +45,7 @@ import neatlogic.framework.util.$; import neatlogic.framework.util.FileUtil; import neatlogic.module.process.dao.mapper.ProcessMapper; import neatlogic.module.process.service.NewWorkcenterService; +import neatlogic.module.process.service.ProcessTaskService; import neatlogic.module.process.sql.decorator.SqlBuilder; import neatlogic.module.process.workcenter.column.handler.ProcessTaskCurrentStepColumn; import neatlogic.module.process.workcenter.column.handler.ProcessTaskCurrentStepNameColumn; @@ -97,6 +98,9 @@ public class WorkcenterDataExportApi extends PrivateBinaryStreamApiComponentBase @Resource ProcessTaskMapper processTaskMapper; + @Resource + private ProcessTaskService processTaskService; + @Override public String getToken() { return "workcenter/export"; @@ -259,7 +263,7 @@ public class WorkcenterDataExportApi extends PrivateBinaryStreamApiComponentBase // 以channel当前关联的流程为准,如果流程没有关联表单或关联的表单没有属性,则无论当前工单是否有表单,都不查询 if (CollectionUtils.isNotEmpty(formAttributeList)) { // 遍历当前工单的所有表单属性,找出数据行数最多的属性,该属性的数据行数作为当前工单需要合并的行数 - List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(taskVo.getId()); + List processTaskFormAttributeDataList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(taskVo.getId()); if (processTaskFormAttributeDataList.size() > 0) { processTaskFormAttributeDataMap = processTaskFormAttributeDataList.stream().collect(Collectors.toMap(AttributeDataVo::getAttributeLabel, e -> e)); for (FormAttributeVo formAttributeVo : formAttributeList) { diff --git a/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java b/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java index a9d9c2eedcb473db586f2eefe9e5465638ee43b4..edd6c7903242bbc7ea207634e22072f71b8dc36c 100644 --- a/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java +++ b/src/main/java/neatlogic/module/process/audithandler/handler/FormAuditHandler.java @@ -117,7 +117,7 @@ public class FormAuditHandler implements IProcessTaskStepAuditDetailHandler { ProcessTaskAuditFormAttributeDataVo auditFormAttributeDataVo = new ProcessTaskAuditFormAttributeDataVo(); auditFormAttributeDataVo.setAttributeUuid(attributeUuid); auditFormAttributeDataVo.setAttributeLabel(formAttributeVo.getLabel()); - auditFormAttributeDataVo.setType(formAttributeVo.getHandler()); + auditFormAttributeDataVo.setHandler(formAttributeVo.getHandler()); auditFormAttributeDataList.add(auditFormAttributeDataVo); // 在此之前如果该属性的值,在数据库中没有对应的旧数据 if (oldProcessTaskFormAttributeDataVo == null) { @@ -128,18 +128,18 @@ public class FormAuditHandler implements IProcessTaskStepAuditDetailHandler { // 现在要保存该属性的值不为null,则将该属性值保存到数据库中,但标记为已修改 auditFormAttributeDataVo.setModified(1); auditFormAttributeDataVo.setDataObj(newProcessTaskFormAttributeDataVo.getDataObj()); - auditFormAttributeDataVo.setSort(newProcessTaskFormAttributeDataVo.getSort()); +// auditFormAttributeDataVo.setSort(newProcessTaskFormAttributeDataVo.getSort()); } } // 如果现在接口参数中没有该属性值,则表示不修改该属性值 else if (newProcessTaskFormAttributeDataVo == null) { // 将该属性旧值添加到stepFormAttributeDataMap,记录该步骤流转时该属性值 auditFormAttributeDataVo.setDataObj(oldProcessTaskFormAttributeDataVo.getDataObj()); - auditFormAttributeDataVo.setSort(oldProcessTaskFormAttributeDataVo.getSort()); +// auditFormAttributeDataVo.setSort(oldProcessTaskFormAttributeDataVo.getSort()); auditFormAttributeDataVo.setModified(0); } else { auditFormAttributeDataVo.setDataObj(newProcessTaskFormAttributeDataVo.getDataObj()); - auditFormAttributeDataVo.setSort(newProcessTaskFormAttributeDataVo.getSort()); +// auditFormAttributeDataVo.setSort(newProcessTaskFormAttributeDataVo.getSort()); if (Objects.equals(oldProcessTaskFormAttributeDataVo.getDataObj(), newProcessTaskFormAttributeDataVo.getDataObj())) { // 如果新表单属性值与旧表单属性值相同,就不用replace更新数据了 oldProcessTaskFormAttributeDataMap.remove(attributeUuid); @@ -160,7 +160,7 @@ public class FormAuditHandler implements IProcessTaskStepAuditDetailHandler { Map oldContentMap = new HashMap<>(); for (Map.Entry entry : oldProcessTaskFormAttributeDataMap.entrySet()) { ProcessTaskFormAttributeDataVo attributeDataVo = entry.getValue(); - IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(attributeDataVo.getType()); + IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(attributeDataVo.getHandler()); if (handler != null) { String result = null; Object value = handler.valueConversionText(attributeDataVo, @@ -190,7 +190,7 @@ public class FormAuditHandler implements IProcessTaskStepAuditDetailHandler { content.put("oldContent", oldContent); } String newContent = null; - IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(attributeDataVo.getType()); + IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(attributeDataVo.getHandler()); if (handler != null) { String result = null; Object value = handler.valueConversionText(attributeDataVo, diff --git a/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java b/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java index 99fb433bd345cf8b2aa7145078a4fd82a7104da7..5e12427ae3347043842499e8ca0b5e30504839c3 100644 --- a/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java +++ b/src/main/java/neatlogic/module/process/condition/handler/ProcessTaskFormAttributeCondition.java @@ -46,6 +46,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.google.common.base.Objects; +import neatlogic.module.process.service.ProcessTaskService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; @@ -61,6 +62,9 @@ public class ProcessTaskFormAttributeCondition extends ProcessTaskConditionBase @Resource private SelectContentByHashMapper selectContentByHashMapper; + @Resource + private ProcessTaskService processTaskService; + @Override public String getName() { return ProcessFieldType.FORM.getValue(); @@ -125,7 +129,7 @@ public class ProcessTaskFormAttributeCondition extends ProcessTaskConditionBase } else { AttributeDataVo attributeDataVo = new AttributeDataVo(); attributeDataVo.setAttributeUuid(attributeUuid); - attributeDataVo.setType(formAttribute.getHandler()); + attributeDataVo.setHandler(formAttribute.getHandler()); if (value instanceof String) { attributeDataVo.setData((String) value); } else if (value instanceof JSONArray) { @@ -255,11 +259,11 @@ public class ProcessTaskFormAttributeCondition extends ProcessTaskConditionBase if (StringUtils.isNotBlank(formContent)) { resultObj.put("formConfig", formContent); IFormCrossoverService formCrossoverService = CrossoverServiceFactory.getApi(IFormCrossoverService.class); - List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskStepVo.getProcessTaskId()); + List processTaskFormAttributeDataList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(processTaskStepVo.getProcessTaskId()); for (ProcessTaskFormAttributeDataVo processTaskFormAttributeDataVo : processTaskFormAttributeDataList) { - if (java.util.Objects.equals(processTaskFormAttributeDataVo.getType(), FormHandler.FORMRADIO.getHandler()) - || java.util.Objects.equals(processTaskFormAttributeDataVo.getType(), FormHandler.FORMCHECKBOX.getHandler()) - || java.util.Objects.equals(processTaskFormAttributeDataVo.getType(), FormHandler.FORMSELECT.getHandler())) { + if (java.util.Objects.equals(processTaskFormAttributeDataVo.getHandler(), FormHandler.FORMRADIO.getHandler()) + || java.util.Objects.equals(processTaskFormAttributeDataVo.getHandler(), FormHandler.FORMCHECKBOX.getHandler()) + || java.util.Objects.equals(processTaskFormAttributeDataVo.getHandler(), FormHandler.FORMSELECT.getHandler())) { Object value = formCrossoverService.getFormSelectAttributeValueByOriginalValue(processTaskFormAttributeDataVo.getDataObj()); resultObj.put(processTaskFormAttributeDataVo.getAttributeUuid(), value); } else { diff --git a/src/main/java/neatlogic/module/process/fulltextindex/ProcessTaskFullTextIndexHandler.java b/src/main/java/neatlogic/module/process/fulltextindex/ProcessTaskFullTextIndexHandler.java index 74ce0ab4d043ac96b9947fd302d695aa231ae595..72b827b623c53fc766fd7b1c5003488759657bdf 100644 --- a/src/main/java/neatlogic/module/process/fulltextindex/ProcessTaskFullTextIndexHandler.java +++ b/src/main/java/neatlogic/module/process/fulltextindex/ProcessTaskFullTextIndexHandler.java @@ -28,6 +28,7 @@ import neatlogic.framework.process.dao.mapper.ProcessTaskMapper; import neatlogic.framework.process.dao.mapper.SelectContentByHashMapper; import neatlogic.framework.process.dto.*; import neatlogic.framework.process.fulltextindex.ProcessFullTextIndexType; +import neatlogic.module.process.service.ProcessTaskService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -49,6 +50,9 @@ public class ProcessTaskFullTextIndexHandler extends FullTextIndexHandlerBase { @Resource private SelectContentByHashMapper selectContentByHashMapper; + @Resource + private ProcessTaskService processTaskService; + @Override protected String getModuleId() { return "process"; @@ -78,11 +82,11 @@ public class ProcessTaskFullTextIndexHandler extends FullTextIndexHandlerBase { //fullTextIndexVo.addFieldContent("serial_number", new FullTextIndexVo.WordVo(processTaskVo.getSerialNumber())); //fullTextIndexVo.addFieldContent("id", new FullTextIndexVo.WordVo(processTaskVo.getId().toString())); //表单 - List processTaskFormAttributeDataVoList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(fullTextIndexVo.getTargetId()); + List processTaskFormAttributeDataVoList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(fullTextIndexVo.getTargetId()); if (CollectionUtils.isNotEmpty(processTaskFormAttributeDataVoList)) { for (ProcessTaskFormAttributeDataVo attributeDataVo : processTaskFormAttributeDataVoList) { if (StringUtils.isNotBlank(attributeDataVo.getData())) { - IFormAttributeHandler handler = FormAttributeHandlerFactory.getHandler(attributeDataVo.getType()); + IFormAttributeHandler handler = FormAttributeHandlerFactory.getHandler(attributeDataVo.getHandler()); if(handler != null) { List dataList = handler.indexFieldContentList(attributeDataVo.getData()); if (CollectionUtils.isNotEmpty(dataList)) { diff --git a/src/main/java/neatlogic/module/process/notify/handler/param/FormParamHandler.java b/src/main/java/neatlogic/module/process/notify/handler/param/FormParamHandler.java index 1c8c59ade474f6a9d565d8c379aacf30855847ee..6dd8071bfee79c2710f4bbf2225b7631c792d26b 100644 --- a/src/main/java/neatlogic/module/process/notify/handler/param/FormParamHandler.java +++ b/src/main/java/neatlogic/module/process/notify/handler/param/FormParamHandler.java @@ -33,6 +33,7 @@ import neatlogic.framework.process.dto.ProcessTaskVo; import neatlogic.framework.process.notify.constvalue.ProcessTaskNotifyParam; import neatlogic.framework.process.notify.core.ProcessTaskNotifyParamHandlerBase; import com.alibaba.fastjson.JSONObject; +import neatlogic.module.process.service.ProcessTaskService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; @@ -56,6 +57,9 @@ public class FormParamHandler extends ProcessTaskNotifyParamHandlerBase { @Resource private SelectContentByHashMapper selectContentByHashMapper; + @Resource + private ProcessTaskService processTaskService; + @Override public String getValue() { return ProcessTaskNotifyParam.FORM_TABLE.getValue(); @@ -79,7 +83,7 @@ public class FormParamHandler extends ProcessTaskNotifyParamHandlerBase { return null; } Map attributeDataMap = new HashMap<>(); - List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskVo.getId()); + List processTaskFormAttributeDataList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(processTaskVo.getId()); if (CollectionUtils.isNotEmpty(processTaskFormAttributeDataList)) { attributeDataMap = processTaskFormAttributeDataList.stream().collect(Collectors.toMap(e -> e.getAttributeUuid(), e -> e)); } @@ -92,7 +96,7 @@ public class FormParamHandler extends ProcessTaskNotifyParamHandlerBase { if (attributeDataVo == null) { attributeDataVo = new ProcessTaskFormAttributeDataVo(); attributeDataVo.setAttributeUuid(formAttribute.getUuid()); - attributeDataVo.setType(formAttribute.getHandler()); + attributeDataVo.setHandler(formAttribute.getHandler()); } attributeDataVo.setAttributeLabel(formAttribute.getLabel()); IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(formAttribute.getHandler()); diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskService.java b/src/main/java/neatlogic/module/process/service/ProcessTaskService.java index cf53b426ad7d257f43f088a513f047266b5d873e..1329641f92a5e486ad53cdc5dd9a31152c2e214a 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskService.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskService.java @@ -456,4 +456,21 @@ public interface ProcessTaskService { * @return */ List getFormAttributeListByProcessTaskId(Long processTaskId); + + /** + * 根据工单id获取表单属性数据列表 + * @param processTaskId 工单id + * @return + */ + List getProcessTaskFormAttributeDataListByProcessTaskId(Long processTaskId); + + /** + * 根据工单id和表单属性uuid获取表单属性数据 + * @param processTaskId 工单id + * @param attributeUuid 表单属性uuid + * @return + */ + ProcessTaskFormAttributeDataVo getProcessTaskFormAttributeDataByProcessTaskIdAndAttributeUuid(Long processTaskId, String attributeUuid); + + void deleteProcessTaskFormAttributeDataByProcessTaskId(Long processTaskId); } diff --git a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java index e4176fa6f00cfb1cff648823900eb1073c6fae12..52a709c773d2edddf5b915350782e03a4cd18c67 100644 --- a/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java +++ b/src/main/java/neatlogic/module/process/service/ProcessTaskServiceImpl.java @@ -39,6 +39,7 @@ import neatlogic.framework.exception.user.UserNotFoundException; import neatlogic.framework.file.dao.mapper.FileMapper; import neatlogic.framework.file.dto.FileVo; import neatlogic.framework.form.dao.mapper.FormMapper; +import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; import neatlogic.framework.form.exception.FormActiveVersionNotFoundExcepiton; @@ -264,7 +265,7 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC String formContent = selectContentByHashMapper.getProcessTaskFromContentByProcessTaskId(processTaskId); if (StringUtils.isNotBlank(formContent)) { processTaskVo.setFormConfig(JSONObject.parseObject(formContent)); - List processTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskVo.getId()); + List processTaskFormAttributeDataList = getProcessTaskFormAttributeDataListByProcessTaskId(processTaskVo.getId()); for (ProcessTaskFormAttributeDataVo processTaskFormAttributeDataVo : processTaskFormAttributeDataList) { processTaskVo.getFormAttributeDataMap().put(processTaskFormAttributeDataVo.getAttributeUuid(), processTaskFormAttributeDataVo.getDataObj()); } @@ -2026,6 +2027,50 @@ public class ProcessTaskServiceImpl implements ProcessTaskService, IProcessTaskC return formVersionVo.getFormAttributeList(); } + @Override + public List getProcessTaskFormAttributeDataListByProcessTaskId(Long processTaskId) { + List formAttributeDataIdList = processTaskMapper.getProcessTaskFormAttributeDataIdListByProcessTaskId(processTaskId); + if (CollectionUtils.isEmpty(formAttributeDataIdList)) { + return new ArrayList<>(); + } + List attributeDataList = formMapper.getFormAttributeDataListByIdList(formAttributeDataIdList); + if (CollectionUtils.isEmpty(attributeDataList)) { + return new ArrayList<>(); + } + List processTaskFormAttributeDataList = new ArrayList<>(); + for (AttributeDataVo attributeDataVo : attributeDataList) { + processTaskFormAttributeDataList.add(new ProcessTaskFormAttributeDataVo(processTaskId, attributeDataVo)); + } + return processTaskFormAttributeDataList; + } + + @Override + public ProcessTaskFormAttributeDataVo getProcessTaskFormAttributeDataByProcessTaskIdAndAttributeUuid(Long processTaskId, String attributeUuid) { + List formAttributeDataIdList = processTaskMapper.getProcessTaskFormAttributeDataIdListByProcessTaskId(processTaskId); + if (CollectionUtils.isEmpty(formAttributeDataIdList)) { + return null; + } + List attributeDataList = formMapper.getFormAttributeDataListByIdList(formAttributeDataIdList); + if (CollectionUtils.isEmpty(attributeDataList)) { + return null; + } + for (AttributeDataVo attributeDataVo : attributeDataList) { + if (Objects.equals(attributeDataVo.getAttributeUuid(), attributeUuid)) { + return new ProcessTaskFormAttributeDataVo(processTaskId, attributeDataVo); + } + } + return null; + } + + @Override + public void deleteProcessTaskFormAttributeDataByProcessTaskId(Long processTaskId) { + List formAttributeDataIdList = processTaskMapper.getProcessTaskFormAttributeDataIdListByProcessTaskId(processTaskId); + if (CollectionUtils.isNotEmpty(formAttributeDataIdList)) { + formMapper.deleteFormAttributeDataByIdList(formAttributeDataIdList); + processTaskMapper.deleteProcessTaskFormAttributeByProcessTaskId(processTaskId); + } + } + /** * 根据fileId 和 processTaskIdList 获取对应用户是否有该工单附件的下载权限 * diff --git a/src/main/java/neatlogic/module/process/stephandler/component/TimerProcessComponent.java b/src/main/java/neatlogic/module/process/stephandler/component/TimerProcessComponent.java index 7f7d72550ed085e204dcdc007a20c6b926a158d5..2faa1cf6a6afdeaae4cae5f1d50706d73017f7ea 100644 --- a/src/main/java/neatlogic/module/process/stephandler/component/TimerProcessComponent.java +++ b/src/main/java/neatlogic/module/process/stephandler/component/TimerProcessComponent.java @@ -35,12 +35,14 @@ import neatlogic.framework.scheduler.dto.JobObject; import neatlogic.framework.scheduler.exception.ScheduleHandlerNotFoundException; import neatlogic.module.process.schedule.plugin.ProcessTaskStepTimerCompleteJob; import com.alibaba.fastjson.JSONObject; +import neatlogic.module.process.service.ProcessTaskService; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import javax.annotation.Resource; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; @@ -60,6 +62,9 @@ import java.util.Set; @Component public class TimerProcessComponent extends ProcessStepHandlerBase { + @Resource + private ProcessTaskService processTaskService; + private final Logger logger = LoggerFactory.getLogger(TimerProcessComponent.class); @Override @@ -135,10 +140,7 @@ public class TimerProcessComponent extends ProcessStepHandlerBase { } else if ("form".equals(type)) { String attributeUuid = config.getString("attributeUuid"); if (StringUtils.isNotBlank(attributeUuid)) { - ProcessTaskFormAttributeDataVo searchVo = new ProcessTaskFormAttributeDataVo(); - searchVo.setProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); - searchVo.setAttributeUuid(attributeUuid); - ProcessTaskFormAttributeDataVo dataVo = processTaskMapper.getProcessTaskFormAttributeDataByProcessTaskIdAndAttributeUuid(searchVo); + ProcessTaskFormAttributeDataVo dataVo = processTaskService.getProcessTaskFormAttributeDataByProcessTaskIdAndAttributeUuid(currentProcessTaskStepVo.getProcessTaskId(), attributeUuid); if (dataVo != null) { String value = dataVo.getData(); if (StringUtils.isNotBlank(value)) { diff --git a/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java b/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java index 1409823c0497cf2926207bfc5e5c7dc12dc86551..d705ecd5e680e27bc2bd8ed41ca2056ed241f850 100644 --- a/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java +++ b/src/main/java/neatlogic/module/process/stephandler/utilhandler/ProcessStepHandlerUtil.java @@ -16,6 +16,9 @@ package neatlogic.module.process.stephandler.utilhandler; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import neatlogic.framework.asynchronization.threadlocal.UserContext; import neatlogic.framework.asynchronization.threadpool.TransactionSynchronizationPool; import neatlogic.framework.common.RootComponent; @@ -23,6 +26,8 @@ import neatlogic.framework.common.constvalue.GroupSearch; import neatlogic.framework.crossover.CrossoverServiceFactory; import neatlogic.framework.dao.mapper.UserMapper; import neatlogic.framework.exception.user.UserNotFoundException; +import neatlogic.framework.form.dao.mapper.FormMapper; +import neatlogic.framework.form.dto.AttributeDataVo; import neatlogic.framework.form.dto.FormAttributeVo; import neatlogic.framework.form.dto.FormVersionVo; import neatlogic.framework.form.exception.FormAttributeRequiredException; @@ -38,9 +43,6 @@ import neatlogic.framework.process.stepremind.core.IProcessTaskStepRemindType; import neatlogic.framework.process.workerpolicy.core.IWorkerPolicyHandler; import neatlogic.framework.process.workerpolicy.core.WorkerPolicyHandlerFactory; import neatlogic.module.process.thread.*; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; import org.apache.commons.collections4.MapUtils; @@ -64,6 +66,8 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil { private ChannelMapper channelMapper; @Resource private ProcessTagMapper processTagMapper; + @Resource + private FormMapper formMapper; /** * @Description: 触发动作 @@ -920,7 +924,17 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil { } /* 获取旧表单数据 **/ - List oldProcessTaskFormAttributeDataList = processTaskMapper.getProcessTaskStepFormAttributeDataByProcessTaskId(processTaskId); + List oldProcessTaskFormAttributeDataList = new ArrayList<>(); + List formAttributeDataIdList = processTaskMapper.getProcessTaskFormAttributeDataIdListByProcessTaskId(processTaskId); + if (CollectionUtils.isNotEmpty(formAttributeDataIdList)) { + List attributeDataList = formMapper.getFormAttributeDataListByIdList(formAttributeDataIdList); + if (CollectionUtils.isNotEmpty(attributeDataList)) { + for (AttributeDataVo attributeDataVo : attributeDataList) { + oldProcessTaskFormAttributeDataList.add(new ProcessTaskFormAttributeDataVo(processTaskId, attributeDataVo)); + } + } + } + Map oldProcessTaskFormAttributeDataMap = oldProcessTaskFormAttributeDataList.stream().collect(Collectors.toMap(e -> e.getAttributeUuid(), e -> e)); List newProcessTaskFormAttributeDataList = new ArrayList<>(); @@ -931,12 +945,17 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil { Object data = formAttributeDataMap.get(attributeUuid); ProcessTaskFormAttributeDataVo formAttributeDataVo = new ProcessTaskFormAttributeDataVo(); + ProcessTaskFormAttributeDataVo oldProcessTaskFormAttributeData = oldProcessTaskFormAttributeDataMap.get(attributeUuid); + if (oldProcessTaskFormAttributeData != null) { + formAttributeDataVo.setId(oldProcessTaskFormAttributeData.getId()); + } formAttributeDataVo.setProcessTaskId(processTaskId); formAttributeDataVo.setAttributeUuid(attributeUuid); formAttributeDataVo.setAttributeLabel(formAttributeVo.getLabel()); - formAttributeDataVo.setType(formAttributeVo.getHandler()); + formAttributeDataVo.setHandler(formAttributeVo.getHandler()); formAttributeDataVo.setDataObj(data); - formAttributeDataVo.setSort(i); + formAttributeDataVo.setFormUuid(formAttributeVo.getFormUuid()); +// formAttributeDataVo.setSort(i); newProcessTaskFormAttributeDataList.add(formAttributeDataVo); } i++; @@ -967,7 +986,8 @@ public class ProcessStepHandlerUtil implements IProcessStepHandlerUtil { dataVo.setData(dataObj.toString()); } } - processTaskMapper.insertProcessTaskFormAttributeData(dataVo); + formMapper.insertFormAttributeData(dataVo); + processTaskMapper.insertProcessTaskFormAttribute(dataVo); } } } diff --git a/src/main/java/neatlogic/module/process/workerpolicy/handler/FormWorkerPolicyHandler.java b/src/main/java/neatlogic/module/process/workerpolicy/handler/FormWorkerPolicyHandler.java index 4be216730060fbd908d3479c2efc5abef3b9df5d..de77b2677a2487a658d0846397b0b41c954cb694 100644 --- a/src/main/java/neatlogic/module/process/workerpolicy/handler/FormWorkerPolicyHandler.java +++ b/src/main/java/neatlogic/module/process/workerpolicy/handler/FormWorkerPolicyHandler.java @@ -70,6 +70,8 @@ public class FormWorkerPolicyHandler implements IWorkerPolicyHandler { /** 选择的表单属性uuid **/ JSONArray attributeUuidArray = workerPolicyVo.getConfigObj().getJSONArray("attributeUuidList"); if (CollectionUtils.isNotEmpty(attributeUuidArray)) { + List processTaskFormAttributeDataList = processTaskService.getProcessTaskFormAttributeDataListByProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); + Map processTaskFormAttributeDataMap = processTaskFormAttributeDataList.stream().collect(Collectors.toMap(e -> e.getAttributeUuid(), e -> e)); List formAttributeList = processTaskService.getFormAttributeListByProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); Map formAttributeMap = formAttributeList.stream().collect(Collectors.toMap(e -> e.getUuid(), e -> e)); List attributeUuidList = attributeUuidArray.toJavaList(String.class); @@ -78,11 +80,7 @@ public class FormWorkerPolicyHandler implements IWorkerPolicyHandler { if (formAttributeVo == null) { continue; } - ProcessTaskFormAttributeDataVo processTaskFormAttributeDataVo = new ProcessTaskFormAttributeDataVo(); - processTaskFormAttributeDataVo.setProcessTaskId(currentProcessTaskStepVo.getProcessTaskId()); - processTaskFormAttributeDataVo.setAttributeUuid(attributeUuid); - ProcessTaskFormAttributeDataVo processTaskFormAttributeData = processTaskMapper - .getProcessTaskFormAttributeDataByProcessTaskIdAndAttributeUuid(processTaskFormAttributeDataVo); + ProcessTaskFormAttributeDataVo processTaskFormAttributeData = processTaskFormAttributeDataMap.get(attributeUuid); if (processTaskFormAttributeData == null) { continue; } @@ -91,7 +89,7 @@ public class FormWorkerPolicyHandler implements IWorkerPolicyHandler { continue; } /** 只有表单属性类型为用户选择器才生效 **/ - if (FormHandler.FORMUSERSELECT.getHandler().equals(processTaskFormAttributeData.getType())) { + if (FormHandler.FORMUSERSELECT.getHandler().equals(processTaskFormAttributeData.getHandler())) { IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(FormHandler.FORMUSERSELECT.getHandler()); if (handler != null) { JSONObject detailedData = handler.getDetailedData(processTaskFormAttributeData, formAttributeVo.getConfigObj()); @@ -125,7 +123,7 @@ public class FormWorkerPolicyHandler implements IWorkerPolicyHandler { } } } - } else if (FormHandler.FORMSELECT.getHandler().equals(processTaskFormAttributeData.getType())) { + } else if (FormHandler.FORMSELECT.getHandler().equals(processTaskFormAttributeData.getHandler())) { IFormAttributeDataConversionHandler handler = FormAttributeDataConversionHandlerFactory.getHandler(FormHandler.FORMSELECT.getHandler()); if (handler != null) { JSONObject detailedData = handler.getDetailedData(processTaskFormAttributeData, formAttributeVo.getConfigObj()); diff --git a/src/main/resources/neatlogic/resources/process/sqlscript/ddl.sql b/src/main/resources/neatlogic/resources/process/sqlscript/ddl.sql index ebcdcea9c0a0734739de16ff8976ff0525392121..8ccc821f5437ca8a101ad39a5fe8bce3c2bc692e 100644 --- a/src/main/resources/neatlogic/resources/process/sqlscript/ddl.sql +++ b/src/main/resources/neatlogic/resources/process/sqlscript/ddl.sql @@ -541,18 +541,13 @@ CREATE TABLE IF NOT EXISTS `processtask_form_content` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工单表单内容表'; -- ---------------------------- --- Table structure for processtask_formattribute_data +-- Table structure for processtask_formattribute -- ---------------------------- -CREATE TABLE IF NOT EXISTS `processtask_formattribute_data` ( +CREATE TABLE IF NOT EXISTS `processtask_formattribute` ( `processtask_id` bigint NOT NULL COMMENT '工单id', - `type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '插件类型', - `attribute_label` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '属性名', - `attribute_uuid` char(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '属性uuid', - `data` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '工单属性值,json格式', - `sort` int DEFAULT NULL COMMENT '排序', - PRIMARY KEY (`processtask_id`,`attribute_uuid`) USING BTREE, - KEY `idx_attribute_uuid` (`attribute_uuid`) USING BTREE -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工单关联的属性当前值'; + `form_attribute_data_id` bigint NOT NULL COMMENT '表单属性值id', + PRIMARY KEY (`processtask_id`,`form_attribute_data_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='工单与表单属性值关系表'; -- ---------------------------- -- Table structure for processtask_import_audit