Procházet zdrojové kódy

[task-1697] 删除bo数据之后,将数据对应的流程数据清除

Li Yuan před 1 rokem
rodič
revize
ae4803a69b

+ 19 - 4
ibps-bpmn-root/modules/bpmn-biz/src/main/java/com/lc/ibps/bpmn/service/impl/BpmProcInstServiceImpl.java

@@ -47,10 +47,7 @@ import com.lc.ibps.bpmn.domain.BpmInst;
 import com.lc.ibps.bpmn.domain.BpmInstHis;
 import com.lc.ibps.bpmn.domain.BpmTask;
 import com.lc.ibps.bpmn.model.define.BpmProcExtendDefine;
-import com.lc.ibps.bpmn.persistence.entity.BpmApprovePo;
-import com.lc.ibps.bpmn.persistence.entity.BpmDefinePo;
-import com.lc.ibps.bpmn.persistence.entity.BpmInstPo;
-import com.lc.ibps.bpmn.persistence.entity.BpmTaskPo;
+import com.lc.ibps.bpmn.persistence.entity.*;
 import com.lc.ibps.bpmn.repository.*;
 import com.lc.ibps.bpmn.utils.BpmUtil;
 import com.lc.ibps.cloud.entity.APIResult;
@@ -774,6 +771,24 @@ public class BpmProcInstServiceImpl implements BpmProcInstService {
 		return true;
 	}
 
+	public void delProcInstByBizKeys(String[] bizKeys){
+		if(bizKeys == null) return;
+		for(String bizKey : bizKeys){
+			IBpmProcInst procInst = bpmInstRepository.getInfoByBizKey(bizKey);
+			if(procInst != null){
+				bpmInstRepository.newInstance().remove(procInst.getId());
+				logger.info(String.format("deleted process instance history with id %s",procInst.getId()));
+			}else {
+				BpmInstHisPo hisPo = bpmInstHisRepository.getByBizKey(bizKey);
+				if(hisPo != null){
+					bpmInstHisRepository.newInstance().delete(hisPo.getId());
+					logger.info(String.format("deleted process instance history with id %s",hisPo.getId()));
+				}
+			}
+		}
+
+	}
+
 	/*
 	 * (non-Javadoc)
 	 *

+ 2 - 0
ibps-bpmnbase-root/modules/bpmn-api/src/main/java/com/lc/ibps/bpmn/api/service/BpmProcInstService.java

@@ -187,6 +187,8 @@ public interface BpmProcInstService extends IScript {
 	 * @return
 	 */
 	boolean delProcInst(String processInstId);
+
+	void delProcInstByBizKeys(String[] bizKeys);
 	
 	/**
 	 * 挂起流程实例

+ 4 - 2
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/sysdata/controller/UpdateDataTableController.java

@@ -124,11 +124,13 @@ public class UpdateDataTableController {
         // 解决 不传where 条件的时候 报错  不传where的时候 删除所有数据
         if (StringUtils.isEmpty(tableName)) {
             apiResult.setState(StateEnum.ERROR.getCode());
-            apiResult.setMessage("注意:所有参数均不能为空");
+            apiResult.setMessage("注意:tableName不能为空");
             return apiResult;
         }
         if (StringUtils.isEmpty(paramWhere)){
-            updateDataTableService.batchDeleteNoWhere(tableName);
+            apiResult.setState(StateEnum.ERROR.getCode());
+            apiResult.setMessage("注意:ID不能为空");
+            return apiResult;
         }else {
             updateDataTableService.batchDelete(tableName,paramWhere);
         }

+ 1 - 1
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/sysdata/dao/UpdateDataTableDao.java

@@ -69,7 +69,7 @@ public interface UpdateDataTableDao {
     //物料出库修改数量
     int upDateMaterial(@Param("list")List<Material> material);
     //批量删除
-    int batchDelete(@Param("tableName")String tableName,@Param("key")String key,@Param("array")List<Object> array);
+    int batchDelete(@Param("tableName")String tableName,@Param("key")String key,@Param("array")List<String> array);
 
     //批量删除
     int batchDeleteNoWhere(@Param("tableName")String tableName);

+ 6 - 1
ibps-provider-root/modules/provider-business/src/main/java/com/lc/ibps/sysdata/services/impl/UpdateDataTableImpl.java

@@ -5,10 +5,12 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.lc.ibps.api.base.constants.StateEnum;
 import com.lc.ibps.base.bo.exception.BoBaseException;
+import com.lc.ibps.base.core.util.AppUtil;
 import com.lc.ibps.base.core.util.BeanUtils;
 import com.lc.ibps.base.core.util.I18nUtil;
 import com.lc.ibps.base.framework.id.UniqueIdUtil;
 import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.bpmn.api.service.BpmProcInstService;
 import com.lc.ibps.bpmn.provider.BpmInstProvider;
 import com.lc.ibps.cloud.entity.APIPageList;
 import com.lc.ibps.cloud.entity.APIPageResult;
@@ -469,8 +471,11 @@ public class UpdateDataTableImpl extends GenericProvider implements UpdateDataTa
             key=entry.getKey();
             value =((String)entry.getValue()).split(",");
         }
-        List array = Arrays.asList(value);
+        List<String> array = Arrays.asList(value);
         int i = updateDataTableDao.batchDelete(tableName,key,array);
+        // delete process instance records.
+        BpmProcInstService bpmProcInstService = AppUtil.getBean(BpmProcInstService.class);
+        bpmProcInstService.delProcInstByBizKeys(value);
         return i;
     }
 

+ 6 - 1
ibps-provider-root/modules/provider-form/src/main/java/com/lc/ibps/form/provider/DataTemplateProvider.java

@@ -15,6 +15,7 @@ import java.util.Map;
 import javax.annotation.Resource;
 
 import com.lc.ibps.base.framework.table.ICommonDao;
+import com.lc.ibps.bpmn.api.service.BpmProcInstService;
 import com.lc.ibps.components.poi.excel.entity.enmus.ExcelType;
 import com.lc.ibps.components.poi.excel.export.styler.ExcelExportStylerColorImpl;
 import com.lc.ibps.components.poi.excel.export.styler.ExcelExportStylerDefaultImpl;
@@ -145,7 +146,7 @@ public class DataTemplateProvider extends GenericProvider implements IDataTempla
 
 	@Resource
 	private ICommonDao<?> commonDao;
-	
+
 	@ApiOperation(value = "数据模版列表(分页条件查询)数据", notes = "数据模版列表(分页条件查询)数据")
 	@Override
 	public APIResult<APIPageList<DataTemplatePo>> query(
@@ -1469,6 +1470,10 @@ public class DataTemplateProvider extends GenericProvider implements IDataTempla
 			BoInstance boInstance = boInstanceRepository.newInstance();
 			boInstance.removeDataObject(DataSaveMode.ALL, boDefPo.getCode(), boDefPo.getVersion(), ids);
 			result.setMessage(I18nUtil.getMessage("com.lc.ibps.form.provider.DataTemplateProvider.removeFormData"));
+			// delete process instance records.
+			BpmProcInstService bpmProcInstService = AppUtil.getBean(BpmProcInstService.class);
+			bpmProcInstService.delProcInstByBizKeys(ids);
+
 		} catch (Exception e) {
 			setExceptionResult(result, StateEnum.ERROR_FORM_DATATPL.getCode(), I18nUtil.getMessage(StateEnum.ERROR_FORM_DATATPL.getCode()+""), e);
 		}