package com.xcgl.projecttaskplan.service.impl; import com.xcgl.projecttaskplan.service.ProjectTaskPlanServiceI; import org.apache.commons.lang.StringUtils; import org.jeecgframework.core.common.service.impl.CommonServiceImpl; import com.xcgl.projecttaskplan.entity.ProjectTaskPlanEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.Map; import java.util.UUID; import java.io.Serializable; import org.jeecgframework.core.util.ApplicationContextUtil; import org.jeecgframework.core.util.MyClassLoader; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter; @Service("projectTaskPlanService") @Transactional public class ProjectTaskPlanServiceImpl extends CommonServiceImpl implements ProjectTaskPlanServiceI { public void delete(ProjectTaskPlanEntity entity) throws Exception{ super.delete(entity); //执行删除操作增强业务 this.doDelBus(entity); } public Serializable save(ProjectTaskPlanEntity entity) throws Exception{ String[] projectids = new String[]{}; if(StringUtils.isNotBlank(entity.getProjectids())){ projectids = entity.getProjectids().split("\\,"); } Serializable t = super.save(entity); //执行新增操作增强业务 this.doAddBus(entity,projectids); return t; } public void saveOrUpdate(ProjectTaskPlanEntity entity) throws Exception{ String[] projectids = new String[]{}; super.saveOrUpdate(entity); if(StringUtils.isNotBlank(entity.getProjectids())){ projectids = entity.getProjectids().split("\\,"); } //执行更新操作增强业务 this.doUpdateBus(entity,projectids); } /** * 新增操作增强业务 * @param t * @return */ private void doAddBus(ProjectTaskPlanEntity t , String[] projectids) throws Exception{ //保存多选的项目 String PlanProjectSql = "INSERT INTO p_plan_project (id, planid, projectid) VALUES (UUID(), ?, ?)"; for(String projectid:projectids) { executeSql(PlanProjectSql, t.getId(),projectid); } //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } /** * 更新操作增强业务 * @param t * @return */ private void doUpdateBus(ProjectTaskPlanEntity t , String[] projectids) throws Exception{ //先删除原有的项目信息 String delSql = "delete from p_plan_project where planid = ?"; executeSql(delSql, t.getId()); //保存多选的项目 String PlanProjectSql = "INSERT INTO p_plan_project (id, planid, projectid) VALUES (UUID(), ?, ?)"; for (String projectid : projectids) { executeSql(PlanProjectSql, t.getId(), projectid); } //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } /** * 删除操作增强业务 * @param id * @return */ private void doDelBus(ProjectTaskPlanEntity t) throws Exception{ //先删除原有 String delSql = "delete from p_plan_project where planid = ?"; executeSql(delSql, t.getId()); //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } private Map populationMap(ProjectTaskPlanEntity t){ Map map = new HashMap(); map.put("id", t.getId()); map.put("create_name", t.getCreateName()); map.put("create_by", t.getCreateBy()); map.put("create_date", t.getCreateDate()); map.put("update_name", t.getUpdateName()); map.put("update_by", t.getUpdateBy()); map.put("update_date", t.getUpdateDate()); map.put("code", t.getCode()); map.put("name", t.getName()); map.put("description", t.getDescription()); map.put("tasktype", t.getTasktype()); map.put("cron", t.getCron()); map.put("status", t.getStatus()); map.put("ownerrole", t.getOwnerrole()); return map; } /** * 替换sql中的变量 * @param sql * @param t * @return */ public String replaceVal(String sql,ProjectTaskPlanEntity t){ sql = sql.replace("#{id}",String.valueOf(t.getId())); sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName())); sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy())); sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate())); sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName())); sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy())); sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate())); sql = sql.replace("#{code}",String.valueOf(t.getCode())); sql = sql.replace("#{name}",String.valueOf(t.getName())); sql = sql.replace("#{description}",String.valueOf(t.getDescription())); sql = sql.replace("#{tasktype}",String.valueOf(t.getTasktype())); sql = sql.replace("#{cron}",String.valueOf(t.getCron())); sql = sql.replace("#{status}",String.valueOf(t.getStatus())); sql = sql.replace("#{ownerrole}",String.valueOf(t.getOwnerrole())); sql = sql.replace("#{UUID}",UUID.randomUUID().toString()); return sql; } /** * 执行JAVA增强 */ private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map data) throws Exception { if(StringUtil.isNotEmpty(cgJavaValue)){ Object obj = null; try { if("class".equals(cgJavaType)){ //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断 obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance(); }else if("spring".equals(cgJavaType)){ obj = ApplicationContextUtil.getContext().getBean(cgJavaValue); } if(obj instanceof CgformEnhanceJavaInter){ CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj; javaInter.execute("P_ProjectTaskPlan",data); } } catch (Exception e) { e.printStackTrace(); throw new Exception("执行JAVA增强出现异常!"); } } } }