package com.x.teamwork.assemble.control.jaxrs.extfield; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import com.x.base.core.entity.JpaObject; import com.x.base.core.project.annotation.FieldDescribe; import com.x.base.core.project.bean.WrapCopier; import com.x.base.core.project.bean.WrapCopierFactory; import com.x.base.core.project.cache.ApplicationCache; import com.x.base.core.project.http.ActionResult; import com.x.base.core.project.http.EffectivePerson; import com.x.base.core.project.jaxrs.WoId; import com.x.base.core.project.logger.Logger; import com.x.base.core.project.logger.LoggerFactory; import com.x.teamwork.core.entity.Dynamic; import com.x.teamwork.core.entity.CustomExtFieldRele; public class ActionDelete extends BaseAction { private static Logger logger = LoggerFactory.getLogger(ActionDelete.class); protected ActionResult execute(HttpServletRequest request, EffectivePerson effectivePerson, String flag) throws Exception { ActionResult result = new ActionResult<>(); CustomExtFieldRele customExtFieldRele = null; Wo wo = new Wo(); Boolean check = true; if ( StringUtils.isEmpty( flag ) ) { check = false; Exception exception = new CustomExtFieldReleFlagForQueryEmptyException(); result.error( exception ); } if( Boolean.TRUE.equals( check ) ){ try { customExtFieldRele = customExtFieldReleQueryService.get(flag); if ( customExtFieldRele == null) { check = false; Exception exception = new CustomExtFieldReleNotExistsException(flag); result.error( exception ); } } catch (Exception e) { check = false; Exception exception = new CustomExtFieldReleQueryException(e, "根据指定flag查询扩展属性关联信息对象时发生异常。flag:" + flag); result.error(exception); logger.error(e, effectivePerson, request, null); } } if( Boolean.TRUE.equals( check ) ){ try { customExtFieldRelePersistService.delete(flag, effectivePerson ); // 更新缓存 ApplicationCache.notify( CustomExtFieldRele.class ); wo.setId( customExtFieldRele.getId() ); } catch (Exception e) { check = false; Exception exception = new CustomExtFieldReleQueryException(e, "根据指定flag删除扩展属性关联信息对象时发生异常。flag:" + flag); result.error(exception); logger.error(e, effectivePerson, request, null); } } if( Boolean.TRUE.equals( check ) ){ try { Dynamic dynamic = dynamicPersistService.projectExtFieldReleDeleteDynamic( customExtFieldRele, effectivePerson); if( dynamic != null ) { List dynamics = new ArrayList<>(); dynamics.add( WoDynamic.copier.copy( dynamic ) ); if( wo != null ) { wo.setDynamics(dynamics); } } } catch (Exception e) { logger.error(e, effectivePerson, request, null); } } result.setData( wo ); return result; } public static class Wo extends WoId { @FieldDescribe("操作引起的动态内容") List dynamics = new ArrayList<>(); public List getDynamics() { return dynamics; } public void setDynamics(List dynamics) { this.dynamics = dynamics; } } public static class WoDynamic extends Dynamic{ private static final long serialVersionUID = -5076990764713538973L; public static WrapCopier copier = WrapCopierFactory.wo( Dynamic.class, WoDynamic.class, null, JpaObject.FieldsInvisible); private Long rank = 0L; public Long getRank() { return rank; } public void setRank(Long rank) { this.rank = rank; } } }