diff --git a/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureInfoManageController.java b/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureInfoManageController.java index 488945d..aa1bbe8 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureInfoManageController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureInfoManageController.java @@ -10,7 +10,6 @@ import com.budwk.app.base.result.Result; import com.budwk.app.sys.models.Sys_home_activity; import com.budwk.app.zhgh.activity.basic.models.ActivityBasicSettings; import com.budwk.app.zhgh.activity.culture.models.ActivityTissue; -import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson; import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService; import io.swagger.annotations.ApiOperation; import org.nutz.aop.interceptor.ioc.TransAop; @@ -81,14 +80,18 @@ public class ActivityCultureInfoManageController { return Result.success(); } + /** + * 删除指定文化活动及其关联流程。 + * + * @param id 文化活动主表 ID,由活动列表当前行传入 + * @return Result 成功响应,code 为 0;不返回业务数据 + */ @At @Aop(TransAop.READ_COMMITTED) @SLog(tag = "文化活动", msg = "删除了一条活动") @SaCheckPermission(value = {"activity.culture.infoManage.school", "activity.culture.infoManage.union", "activity.culture.infoManage.club"}, mode = SaMode.OR) public Result doDelete(@Valid String id) { - activityCultureService.delete(id); - activityCultureService.dao().clear(ActivityTissuePerson.class, Cnd.where(ActivityTissuePerson::getTissueId, "=", id)); - activityCultureService.dao().delete(Sys_home_activity.class, id); + activityCultureService.doDeleteActivity(id); return Result.success(); } diff --git a/src/main/java/com/budwk/app/zhgh/activity/culture/service/ActivityCultureService.java b/src/main/java/com/budwk/app/zhgh/activity/culture/service/ActivityCultureService.java index 8c38bed..124bb70 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/culture/service/ActivityCultureService.java +++ b/src/main/java/com/budwk/app/zhgh/activity/culture/service/ActivityCultureService.java @@ -21,6 +21,13 @@ public interface ActivityCultureService extends BaseService { void doEditActivity(ActivityTissue tissue); + /** + * 删除文化活动及关联的 WF 流程任务、实例;未发起流程时仅删除业务数据。 + * + * @param id 文化活动主表 ID,同时作为 WF 流程的 businessNo + */ + void doDeleteActivity(String id); + Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type); NutMap findOne(String id); diff --git a/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java index c56742b..9fc5161 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java @@ -5,6 +5,8 @@ import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.model.Audit; import com.budwk.app.base.param.PageForm; import com.budwk.app.base.service.impl.BaseServiceImpl; +import com.budwk.app.flow.engine.FlowEngine; +import com.budwk.app.sys.models.Sys_home_activity; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.culture.models.ActivityTissue; @@ -12,11 +14,13 @@ import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson; import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService; import com.budwk.app.zhgh.club.model.SysClub; import com.budwk.app.zhgh.club.service.SysClubService; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Strings; @@ -40,6 +44,9 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl @Inject private SysClubService sysClubService; + @Inject + private FlowEngine flowEngine; + @Override public List getUnionData(String activityScopeGroupId) { if (StrUtil.isBlank(activityScopeGroupId)) { @@ -74,6 +81,21 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl } + /** + * 在同一事务内删除活动、活动人员、首页活动展示及关联 WF 任务和实例。 + * + * @param id 文化活动主表 ID,同时作为 WF 流程的 businessNo + */ + @Override + @Aop(TransAop.READ_COMMITTED) + public void doDeleteActivity(String id) { + delete(id); + dao().clear(ActivityTissuePerson.class, Cnd.where(ActivityTissuePerson::getTissueId, "=", id)); + dao().delete(Sys_home_activity.class, id); + // 复用其他“我的申请”页面的删除能力;无流程实例的校工会活动、草稿会直接跳过流程清理。 + flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id); + } + @Override public void doEditActivity(ActivityTissue tissue) { update(tissue);