package cn.ksource.web.facade.uc.order;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import cn.ksource.beans.SC_WORKFLOW_CI_REMIND;
|
import cn.ksource.core.dao.BaseDao;
|
import cn.ksource.core.dao.SqlParameter;
|
import cn.ksource.core.page.PageInfo;
|
import cn.ksource.core.util.ConvertUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.service.order.OrderService;
|
|
@Service("ucCiRemindFacade")
|
public class UcCiRemindFacadeImpl implements UcCiRemindFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
|
@Autowired
|
private OrderService orderService;
|
|
@Override
|
public int queryRemindOrderCount(Map<String,String> params) {
|
StringBuilder builder = new StringBuilder();
|
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
|
|
builder = getAllRemindSql(builder,params);
|
String sql = "select count(*) from ( " + builder.toString() + " ) t" ;
|
return baseDao.queryForInteger(sql.toString(),params);
|
}
|
|
@Override
|
public PageInfo queryRemindOrderList(PageInfo pageInfo,Map<String,String> params) {
|
|
StringBuilder builder = new StringBuilder();
|
|
params.put("businessType", ConvertUtil.obj2StrBlank(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
|
|
builder = getAllRemindSql(builder,params);
|
return baseDao.queryforSplitPageInfo(pageInfo, builder.toString(), params);
|
}
|
|
/**
|
* 服务台工单列表
|
* @param request
|
* @return
|
*/
|
private StringBuilder getAllRemindSql(StringBuilder builder,Map<String,String> params){
|
String flowState = params.get("flowState");
|
String subCustomerId = params.get("subCustomerId");
|
|
|
builder.append(" SELECT b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, t.PLAN_EXECUTION_DATE, ");
|
builder.append(" r.ORDER_CODE,r.ID ORDERID,r.SERVICE_CONTENT,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE ");
|
builder.append(" FROM SC_WORKFLOW_CI_REMIND r ");
|
builder.append(" INNER JOIN WORKFLOW_BASE B on r.FLOW_ID = b.ID INNER JOIN CI_REMIND_TIMERTASK t on r.FLOW_ID = t.FLOW_ID");
|
builder.append(" WHERE b.BUSINESSTYPE = :businessType ");
|
//工单状态
|
if(StringUtil.notEmpty(flowState)) {
|
builder.append(" AND B.WFSTATE =:flowState ");
|
}
|
|
builder.append(" AND B.CUSTOMER_ID = :cusId ");
|
|
|
//下属单位
|
if(StringUtil.isNotBlank(subCustomerId)) {
|
builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
|
|
}
|
//工单编号
|
String orderCode = params.get("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND r.ORDER_CODE LIKE :orderCode");
|
params.put("orderCode", "%"+orderCode+"%");
|
}
|
builder.append(" ORDER BY b.CREATETIME DESC,t.PLAN_EXECUTION_DATE DESC");
|
|
return builder;
|
}
|
|
@Override
|
public List<Map> getRemindCiList(String orderId) {
|
StringBuilder sql = new StringBuilder();
|
sql.append(" select b.ID CIID,r.USER_NAME,r.DEAL_STATE,r.ID,c.NAME CATENAME,c.ID CATEID,b.CINAME,b.SEARCHCODE,b.POSITION from SC_WORKFLOW_CI_REMIND_DETAIL r ");
|
sql.append(" inner join cmdb_ci_base b ");
|
sql.append(" on r.CI_ID = b.ID ");
|
sql.append(" inner join cmdb_ci_category c ");
|
sql.append(" on b.LV3_ID = c.ID ");
|
sql.append(" where r.ORDER_ID = :orderId ");
|
return baseDao.queryForList(sql.toString(),new SqlParameter("orderId",orderId));
|
}
|
|
@Override
|
public Map getRemindeItem(String flowId) {
|
Map param = new HashMap();
|
param.put("flowId",flowId);
|
StringBuilder sql = new StringBuilder();
|
sql.append("SELECT * FROM SC_WORKFLOW_CI_REMIND c ");
|
sql.append(" WHERE c.FLOW_ID=:flowId");
|
Map remindMap=baseDao.queryForMap(sql.toString(), param);
|
Map map =new HashMap();
|
if(remindMap!=null && remindMap.size()>0){
|
//服务工程师
|
StringBuilder selSql=new StringBuilder();
|
selSql.append("SELECT A.CURRENT_DEALER_NAME,B.SJHM FROM workflow_node A,GG_USER B WHERE A.CURRENT_DEALER_ID=B.ID AND A.FLOWID=:flowId AND A.IS_ADMIN=1 AND A.NODE_TEMPLATE_ID=:nodeId");
|
Map dealerMap=baseDao.queryForMap(selSql.toString(),new SqlParameter().addValue("flowId", flowId).addValue("nodeId", Constants.REMIND_DEAL));
|
System.out.println(dealerMap);
|
map.put("dealerMap", dealerMap);
|
//应维护配置数量
|
sql.setLength(0);
|
param.put("orderId",remindMap.get("ID"));
|
sql.append("SELECT ID FROM SC_WORKFLOW_CI_REMIND_DETAIL WHERE ORDER_ID=:orderId");
|
List detailCountList=baseDao.queryForList(sql.toString(),param);
|
map.put("detailCount", detailCountList.size());
|
if(detailCountList==null || detailCountList.size()==0)map.put("detailCount", 0);
|
//实际维护配置数量
|
sql.setLength(0);
|
param.put("state",Constants.CI_REMIND_DETAIL_STATE_ONE);
|
sql.append("SELECT ID FROM SC_WORKFLOW_CI_REMIND_DETAIL WHERE ORDER_ID=:orderId AND DEAL_STATE=:state");
|
List detailStateCountList=baseDao.queryForList(sql.toString(),param);
|
map.put("detailStateCount", detailStateCountList.size());
|
if(detailStateCountList==null || detailStateCountList.size()==0)map.put("detailStateCount", 0);
|
//审核人
|
sql.setLength(0);
|
sql.append("SELECT * FROM WORKFLOW_NODE WHERE NODE_TEMPLATE_ID=:templateId AND FLOWID=:flowId ORDER BY CREATETIME DESC");
|
param.put("templateId", "04e5ae6861fd4ef6bbc521e30b4d11bc");
|
param.put("flowId", flowId);
|
List<Map> nodeList=baseDao.queryForList(sql.toString(), param);
|
if(nodeList!=null && nodeList.size()>0){
|
map.put("node", nodeList.get(0));
|
}
|
//文档列表
|
String fileSql = "select * from GG_FILES where EXTEND1=:BUSINESS_ID AND DEL_FLAG = 1 order by ORDERNUM";
|
List<Map> fileList = baseDao.queryForList(fileSql,new SqlParameter("BUSINESS_ID",flowId));
|
map.put("fileList", fileList);
|
//涉及工单列表
|
List<Map> orderList=orderService.queryLinkOrders(flowId);
|
if(orderList!=null && orderList.size()>0){
|
for(Map orderMap:orderList){
|
orderMap.put("WFSTATE", Constants.getWORKFLOW_BASE_WFSTATE_Label(orderMap.get("WFSTATE").toString()));
|
}
|
}
|
map.put("orderList", orderList);
|
}
|
map.put("remindMap", remindMap);
|
return map;
|
}
|
|
@Override
|
public Map getPatrolInfo(String patrolId) {
|
String sql = " select * from SC_WORKFLOW_CI_REMIND_DETAIL where id = :patrolId";
|
SqlParameter param = new SqlParameter();
|
param.addValue("patrolId", patrolId);
|
return baseDao.queryForMap(sql, param);
|
}
|
|
@Override
|
public Map getRemindDetail(String orderId) {
|
Map param=new HashMap();
|
param.put("orderId", orderId);
|
StringBuilder sql=new StringBuilder();
|
sql.append("SELECT c.USER_NAME,c.ORDER_NOTE,b.CINAME,b.POSITION,c.FINISH_TIME,c.DEAL_STATE FROM SC_WORKFLOW_CI_REMIND_DETAIL c,CMDB_CI_BASE b ");
|
sql.append(" WHERE c.CI_ID=b.ID AND c.ORDER_ID=:orderId");
|
List<Map> detailList=baseDao.queryForList(sql.toString(),param);
|
if(detailList!=null && detailList.size()>0){
|
for(Map map :detailList){
|
map.put("DEAL_STATE", Constants.getmapCI_REMIND_DETAIL_STATE(Integer.parseInt(map.get("DEAL_STATE").toString())));
|
}
|
}
|
SC_WORKFLOW_CI_REMIND remind = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById();
|
Map map = new HashMap();
|
map.put("remind", remind);
|
map.put("detailList", detailList);
|
return map;
|
}
|
|
}
|