/**
* RCardDao.java 2010/06/24
*/
package com.ycsoft.business.dao.resource.device;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Component;
import com.ycsoft.beans.device.RDeviceReclaim;
import com.ycsoft.commons.constants.StatusConstants;
import com.ycsoft.commons.helper.DateHelper;
import com.ycsoft.commons.helper.StringHelper;
import com.ycsoft.daos.abstracts.BaseEntityDao;
import com.ycsoft.daos.core.JDBCException;
import com.ycsoft.daos.core.Pager;
import com.ycsoft.sysmanager.dto.resource.DeviceReclaimDto;
/**
* RCardDao -> R_CARD table's operator
*/
@Component
public class RDeviceReclaimDao extends BaseEntityDao<RDeviceReclaim> {
/**
*
*/
private static final long serialVersionUID = 4303009976635007765L;
/**
* default empty constructor
*/
public RDeviceReclaimDao() {
}
public void updateReclaimDevice(Integer doneCode, String deviceId, String status,
String confirm_optr, String confirm_time) throws JDBCException {
String sql = "update r_device_reclaim set status=?,confirm_optr=?,confirm_time=?" +
" where done_code=? and device_id=?";
this.executeUpdate(sql, status, confirm_optr, confirm_time, doneCode, deviceId);
}
public void updateStatus(Integer doneCode, String deviceId,String status) throws JDBCException {
String sql = "update r_device_reclaim set status=? where done_code=? and device_id=?";
this.executeUpdate(sql, status, doneCode, deviceId);
}
/**
* 查找未确认的待回收设备
* @param deviceId
* @return
* @throws JDBCException
*/
public RDeviceReclaim queryDeviceReclaim(String deviceId) throws JDBCException {
String sql = "select * from r_device_reclaim r where r.device_id=? and r.status=?";
return createQuery(sql, deviceId,StatusConstants.UNCONFIRM).first();
}
public Pager<DeviceReclaimDto> queryDeviceReclaim(String depotId, String query,
String startDate, String endDate, String deviceType,String confirmType,String isHistory,Integer start, Integer limit)
throws JDBCException {
String cond = "";
if(StringHelper.isNotEmpty(query)){
cond = " and t.device_code like '%"+query+"%'";
}
if(StringHelper.isNotEmpty(startDate)){
cond += " and to_char(t.create_time,'yyyy-MM-dd')>='"+startDate+"'";
}
if(StringHelper.isNotEmpty(endDate)){
cond += " and to_char(t.create_time,'yyyy-MM-dd')<='"+endDate+"'";
}
if(StringHelper.isNotEmpty(deviceType)){
cond += " and t.device_type='"+deviceType+"'";
}
if(StringHelper.isNotEmpty(isHistory)){
if(!isHistory.equals("All")){
cond += " and t.is_history='"+isHistory+"'";
}
}else{
cond += " and t.is_history='F'";//默认查询正在执行的订单
}
if(StringHelper.isNotEmpty(confirmType)){
//如果不为CONFIRM
if(!"CONFIRM".equals(confirmType)){
cond += " and t.status<>'CONFIRM'";
}else{
cond += " and t.status='"+confirmType+"'";
}
}
String sql = "select * from (select r.*,d.device_type,d.depot_status,b.stb_id device_code,c.card_id pair_device_code,m.modem_mac pair_device_modem_code" +
" from r_device_reclaim r,r_device d,r_stb b,r_card c,r_modem m " +
" where r.device_id=d.device_id and d.device_id=b.device_id and r.depot_id=? " +
" and b.pair_card_id=c.device_id(+) and b.pair_modem_id=m.device_id(+)" +
" union all "+
"select r.*,d.device_type,d.depot_status,c.card_id device_code ,'','' from" +
" r_device_reclaim r,r_device d,r_card c " +
" where r.device_id=d.device_id and d.device_id=c.device_id and r.depot_id=? " +
" and r.device_id not in(select t2.device_id from r_stb t1,r_device_reclaim t2 " +
" where t1.pair_card_id= t2.device_id and t2.depot_id=?)" +
" union all "+
"select r.*,d.device_type,d.depot_status,m.modem_mac device_code ,'','' from" +
" r_device_reclaim r,r_device d,r_modem m " +
" where r.device_id=d.device_id and d.device_id=m.device_id and r.depot_id=?" +
" and r.device_id not in(select t2.device_id from r_stb t1,r_device_reclaim t2 " +
" where t1.pair_modem_id= t2.device_id and t2.depot_id=?)" +
") t" +
" where 1=1"+cond+" order by t.create_time desc";
return this.createQuery(DeviceReclaimDto.class, sql, depotId, depotId,depotId,depotId,
depotId).setStart(start).setLimit(limit).page();
}
public void updateReclaimConfirm(Integer doneCode, String deviceId,
String optrId) throws JDBCException {
String sql = "update r_device_reclaim set CONFIRM_OPTR=?,CONFIRM_TIME=?,status=?" +
" where device_id=? and done_code=?";
this.executeUpdate(sql, optrId, DateHelper.now(),
StatusConstants.CONFIRM, deviceId, doneCode);
}
public void updateReclaimHistory(String deviceId,String deptId) throws JDBCException {
String sql = "update r_device_reclaim set is_history='T'" +
" where device_id=? and dept_id=?";
this.executeUpdate(sql, deviceId, deptId);
}
public RDeviceReclaim queryReclaimDevice(Integer doneCode, String deviceId) throws Exception {
List<Object> params = new ArrayList<Object>();
params.add(doneCode);
String sql = "select * from r_device_reclaim where done_code=? ";
if(StringHelper.isNotEmpty(deviceId)){
sql += "and device_id=?";
params.add(deviceId);
}
return this.createQuery(sql, params.toArray()).first();
}
}