新增和修改接口
需求:通过案件编码判断是更新还是新增,如果有这个案件编码就更新数据,没有这个案件编码就新增数据。
第一步
创建实体类和接收类
实体类
import lombok.Data;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.Where;
import javax.persistence.*;
import java.util.Date;
@Data
@Entity
@Table(name = "T_UMSM_EVENT_")// 表名与实体名不一致 todo
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class TUmEvent_ implements java.io.Serializable{
// @SequenceGenerator(name = "generator" , allocationSize = 1, initialValue = 1, sequenceName = "SEQ")
// @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "generator")
@Id
@SequenceGenerator(name = "generator", allocationSize = 1, initialValue = 1, sequenceName = "test2_autoinc")
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "generator")
@Column(name = "EVENT_ID")
private Long eventId;
@Column(name = "INS_ID")
private Long insId;
@Column(name = "DEF_ID")
private Integer defId;
// @Where( clause= "EVENTCODE = EVENTCODE")
@Column(name = "EVENTCODE")
private String eventCode;
@Column(name = "EVENT_CLASS")
private String eventClass;
@Column(name = "EVENT_DESC")
private String eventDesc;
@Column(name = "LOCATION_DESC")
private String locationDesc;
@Column(name = "LOCATIONX")
private Double locationX;
@Column(name = "LOCATIONY")
private Double locationY;
@Column(name = "KEYWORD")
private String keyWord;
@Column(name = "NOTE")
private String note;
@Column(name = "CREATETIME")
private Date createTime;
@Column(name = "CREATOR")
private Long creator;
@Column(name = "CREATEDEPT")
private Long createDept;
@Column(name = "SUPERVISOR")
private Integer supervisor;
@Column(name = "SUPERVISEDEPT")
private Integer superviseDept;
@Column(name = "VERSION")
private Integer version;
@Column(name = "ISDONE")
private String isDone;
@Column(name = "STATUS")
private String status;
@Column(name = "EVENTSOURCE_CODE")
private String eventSourceCode;
@Column(name = "COMPLAINANT")
private String complainant;
@Column(name = "CONTACTMODE")
private String contactMode;
@Column(name = "MOBILEEVENT_CODE")
private String mobileEventCode;
@Column(name = "DELAY")
private String delay;
@Column(name = "ISSCORE")
private Integer isSCore;
@Column(name = "ADVERT_ID")
private Integer advertId;
@Column(name = "ISSPECIAL")
private String isSpecial;
@Column(name = "SPECIALPLACE_ID")
private Integer specialPlaceId;
@Column(name = "SPECIALPLACE_XZQYID")
private Integer specialPlaceXzqyId;
@Column(name = "IS_SWAP")
private Integer isSwap;
@Column(name = "SWAP_OBJECT")
private String swapObject;
@Column(name = "MODIFY_TIME")
private Date modifyTime;
@Column(name = "XZQY_ID")
private Integer xzqyId;
@Column(name = "CURRENT_STEP_NAME")
private String currentStepName;
@Column(name = "CURRENT_DEPT")
private String currentDept;
@Column(name = "CURRENT_DEAL_PEOPLE")
private String currentDealPeople;
}
接收类
import lombok.Data;
import javax.persistence.Column;
import java.util.Date;
@Data
public class ShowUmEvent {
private Integer defId;
private String eventCode;
private String eventClass;
private String eventDesc;
private Integer xzqyId;
private String status;
private Date createTime;
private String currentStepName;
private String currentDept;
private String currentDealPeople;
}
第二步
创建EventService类、BaseService类、BaseDao类,并创建saveOrUpdate方法
EventService类
import com.zhongkai.model.code.TUmEvent_;
import com.zhongkai.service.BaseService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import java.util.List;
public class EventService extends BaseService {
public void saveOrUpdate(TUmEvent_ event) throws Exception {
String sql2 = "from TUmEvent_ where EVENTCODE='" + event.getEventCode()+"'";
List<TUmEvent_> list = this.baseDao.findByHql(sql2);//根据案件编号去查出案件
if (CollectionUtils.isNotEmpty(list)) {//存在就更新
for (TUmEvent_ tUmEvent_ : list) {
// if (Objects.isNull(tUmEvent_)) continue;
Long eventId = tUmEvent_.getEventId();
// if (Objects.isNull(eventId)) continue;
BeanUtils.copyProperties(event, tUmEvent_);
tUmEvent_.setEventId(eventId);
this.baseDao.saveOrUpdate(tUmEvent_);// 有主键才会更新
}
} else {//不存在就新增
this.baseDao.saveOrUpdate(event);
}
}
}
BaseService类
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import com.zhongkai.dao.BaseDao;
import com.zhongkai.model.system.TSysConfig;
import com.zhongkai.model.system.TSysLog;
public class BaseService {
@Autowired
protected BaseDao baseDao;
/**
* 参数获取及设置服务
*
* @param code:参数代码
* @param defaultValue:若找不到记录,则返回该默认值
**/
public String getSysConfig(String code, String defaultValue) throws Exception {
TSysConfig config = (TSysConfig) baseDao.getFirst("TSysConfig", "configCode=?", new Object[]{code});
if (config != null)
return config.getConfigValue();
return defaultValue;
}
public Map<String, String> getSysConfig(Object[] codeArray, String defaultValue) throws Exception {
List<TSysConfig> configList = null;
Map<String, String> map = new HashMap<String, String>();
if (codeArray != null && codeArray.length > 0) {
StringBuffer where = new StringBuffer();
for (int i = 0; i < codeArray.length; i++) {
if (i != codeArray.length - 1) {
where.append(" configCode = ? or ");
} else {
where.append(" configCode = ?");
}
}
configList = baseDao.findByCondition("TSysConfig", where.toString(), codeArray);
if (configList != null && configList.size() > 0) {
for (int i = 0; i < configList.size(); i++) {
String configValue = configList.get(i).getConfigValue() == null ? defaultValue : configList.get(i).getConfigValue();
map.put(configList.get(i).getConfigCode(), configValue);
}
}
}
return map;
}
public String getKey(String keyname) throws Exception {
Object[] inParams = new Object[]{keyname};
Object[] outParams = new Object[]{""};
int[] outParamtypes = new int[]{java.sql.Types.VARCHAR};
Object[] results = baseDao.execProcedure("SP_KEYGENERATOR(?,?)", inParams, outParams, outParamtypes);
if (results != null && results.length > 0)
return results[0].toString();
return null;
}
/**
* 保存输入报文
**/
public void inLog(String logAction, HttpServletRequest request) throws Exception {
TSysLog log = new TSysLog();
log.setLogId(null);
log.setLogType("01");
log.setLogTime(new Date());
log.setLogIp(request.getRemoteAddr());
log.setLogAction(logAction);
baseDao.save(log);
}
/**
* 保存输出报文
**/
public void outLog(String logAction, HttpServletRequest request) throws Exception {
TSysLog log = new TSysLog();
log.setLogId(null);
log.setLogType("02");
log.setLogTime(new Date());
log.setLogIp(request.getRemoteAddr());
log.setLogAction(logAction);
baseDao.save(log);
}
/**
* 保存输入报文时发生异常,则将报文信息保存到日志文件当中
**/
public void inLogForException(String method, String logAction, HttpServletRequest request, Logger log) {
StringBuffer logError = new StringBuffer("手机端调用接口-").append(method).append(":保存输入报文时发生异常。");
logError.append("IP:").append(request.getRemoteAddr()).append(",");
logError.append("时间:").append(new Date());
logError.append("报文:").append(logAction);
log.error(logError.toString());
}
/**
* 保存输出报文时发生异常,则将报文信息保存到日志文件当中
**/
public void outLogForException(String method, String logAction, HttpServletRequest request, Logger log) {
StringBuffer logError = new StringBuffer("手机端调用接口-").append(method).append(":保存输出报文时发生异常。");
logError.append("IP:").append(request.getRemoteAddr()).append(",");
logError.append("时间:").append(new Date());
logError.append("报文:").append(logAction);
log.error(logError.toString());
}
public void saveOrUpdateByMerge(Object object) throws Exception {
baseDao.merge(object);
}
public void flush() throws Exception {
baseDao.flush();
}
public void clear() throws Exception {
baseDao.clear();
}
}
BaseDao类
public class BaseDao extends HibernateDaoSupport {
private Logger log = Logger.getLogger(this.getClass());
public void saveOrUpdate(Object object) {
log.debug("saveOrUpdate " + object.getClass().getName() + " instance");
try {
getHibernateTemplate().saveOrUpdate(object);
log.debug("saveOrUpdate successful");
} catch (RuntimeException re) {
log.error("saveOrUpdate failed", re);
throw re;
}
}
public void execBySql(String sql) {
log.debug("exec by sql:" + sql);
try {
Session session = getSession();
SQLQuery query = session.createSQLQuery(sql);
query.executeUpdate();
log.debug("exec successful");
} catch (RuntimeException re) {
log.error("exec failed", re);
throw re;
}
}
}
第三步
创建LogEventAnnotation接口、EventController类
LogEventAnnotation接口
import com.zhongkai.web.enums.UEventType;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface LogEventAnnotation {
/**
* 菜单名
*/
public String EventmenuName() default "";
/**
* 要执行的操作类型,比如:增加操作
*/
public UEventType uEventType() default UEventType.LOGIN;
/**
* 要执行的具体操作
*/
public String uEventName() default "";
}
EventController类
@Slf4j
public class EventController extends BaseController {
@Autowired
private EventService eventService;
/**
* 添加或更新
*/
@LogEventAnnotation(EventmenuName = "事件详情",uEventType = UEventType.SAVE,uEventName = "新增修改事件")
public void addEvent(HttpServletRequest request, HttpServletResponse response, ShowUmEvent form) throws Exception{
boolean flag = true;
try{
TUmEvent_ event_= new TUmEvent_();
event_.setModifyTime(new Date());
event_.setDefId(form.getDefId());
event_.setEventCode(form.getEventCode());
event_.setEventClass(form.getEventClass());
event_.setEventDesc(form.getEventDesc());
event_.setXzqyId(form.getXzqyId());
event_.setStatus(form.getStatus());
if (form.getCreateTime() != null){
event_.setCreateTime(form.getCreateTime());
}else{
event_.setCreateTime(new Date());
}
event_.setCurrentStepName(form.getCurrentStepName());
event_.setCurrentDept(form.getCurrentDept());
event_.setCurrentDealPeople(form.getCurrentDealPeople());
eventService.saveOrUpdate(event_);
}catch (Exception e){
flag =false;
e.printStackTrace();
}
}
}
第四步
测试
删除接口
需求:根据案件编码删除案件
第一步
在EventService类创建delete方法
public void delete(String eventCode) throws Exception{
String sql="delete from T_UMSM_EVENT_ where eventCode = "+eventCode;
baseDao.execBySql(sql);
}
第二步
在EventController类创建delEvent方法
@LogEventAnnotation(EventmenuName = "事件详情",uEventType = UEventType.DELETE,uEventName = "删除事件")
public void delEvent(HttpServletRequest request, HttpServletResponse response) throws Exception{
boolean flag=true;
try{
String eventCode = String.valueOf(request.getParameter("eventCode"));
eventService.delete(eventCode);
}catch (Exception e){
flag = false;
e.printStackTrace();
}
}
第三步
测试