package cn.ksource.web.facade.wechat.ewyw;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.lowagie.tools.handout_pdf;
|
|
import cn.ksource.beans.GG_RECORD;
|
import cn.ksource.beans.SC_WORKFLOW_CI_REMIND;
|
import cn.ksource.beans.WORKFLOW_BASE;
|
import cn.ksource.beans.WORKFLOW_NODE;
|
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.DateUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.web.ClientUtil;
|
import cn.ksource.core.web.SysInfoMsg;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.core.workflow.NodeAnswerEntity;
|
import cn.ksource.core.workflow.WorkflowCoreService;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.entity.WorkFlowSupportEntity;
|
import cn.ksource.web.service.order.OrderService;
|
import cn.ksource.web.service.record.RecordService;
|
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
|
|
|
@Service("ewRemindFacade")
|
public class EwRemindFacadeImpl implements EwRemindFacade {
|
|
@Autowired
|
private BaseDao baseDao;
|
@Autowired
|
private OrderService orderService;
|
@Autowired
|
private WorkFlowSupportService workFlowSupportService;
|
@Autowired
|
private WorkflowCoreService workflowCoreService;
|
@Autowired
|
private RecordService recordService;
|
|
/**
|
* 事件工单确认
|
*/
|
@Override
|
public String doOrderConfirm(Map<String, String> param) {
|
String flowId = param.get("flowId");
|
|
String userId = param.get("userId");
|
String userName =param.get("userName");
|
|
NodeAnswerEntity answerEntity = new NodeAnswerEntity();
|
answerEntity.setUser_id(userId);
|
answerEntity.setUser_name(userName);
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
//工单响应
|
boolean result = workflowCoreService.answerNode(base, new WORKFLOW_NODE(base.getCurrent_node_id()).getInstanceById(), answerEntity);
|
if(!result) {
|
return "2";
|
}
|
return "1";
|
}
|
|
|
/**
|
* 我的工单列表
|
*/
|
@Override
|
public PageInfo ewMyRemindData(PageInfo pageInfo,Map<String, String> param) {
|
Map supportMap = getMyRemindListSql(param);
|
PageInfo list=baseDao.queryforSplitPageInfo(pageInfo, supportMap.get("sql").toString(), param);
|
return list;
|
}
|
|
/**
|
* 我的工单数量
|
*/
|
@Override
|
public int ewMyRemindCount(Map<String, String> param) {
|
Map supportMap = getMyRemindListSql(param);
|
String sql = "select count(*) from ( " + supportMap.get("sql").toString() + " ) t";
|
return baseDao.queryForInteger(sql,(Map)supportMap.get("param"));
|
}
|
|
|
/**
|
* 我的工单列表
|
* @param request
|
* @return
|
*/
|
private Map getMyRemindListSql(Map<String, String> param){
|
//String userId = WebUtil.getEngineerUserId(request);
|
String userId =param.get("userId");
|
String flowState = param.get("status");
|
String nodeState = param.get("flowstate");
|
String customerId = param.get("customerId");
|
String subCustomerId = param.get("subCustomerId");
|
String begintime = param.get("begintime");
|
String endtime = param.get("endtime");
|
|
|
//String userId="aba12d6ad3b9432fa3176f91a159c3c1";
|
param.put("userId", userId);
|
param.put("nodeState", nodeState);
|
param.put("flowState", flowState);
|
param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
|
param.put("customerId", customerId);
|
param.put("subCustomerId", subCustomerId);
|
|
|
StringBuilder builder = new StringBuilder();
|
builder.append(" select n.NODESTATE FLOWSTATE,b.BUSINESS_ID,n.*,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
|
builder.append(" t.PLAN_EXECUTION_DATE, 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 ");
|
builder.append(" inner join CI_REMIND_TIMERTASK t on r.FLOW_ID = t.FLOW_ID ");
|
builder.append(" inner join ");
|
builder.append(" ( ");
|
builder.append(" select * from ( ");
|
builder.append(" select ID NODEID, CREATETIME NODETIME,FLOWSTATE NODESTATE,FLOWID from WORKFLOW_NODE ");
|
builder.append(" where CURRENT_DEALER_ID = :userId ");
|
//环节状态
|
if(StringUtil.isNotBlank(nodeState)){
|
if(!nodeState.equals("end") && !nodeState.equals("close")){
|
builder.append("and FLOWSTATE =:nodeState ");
|
}
|
}
|
builder.append(" order by FLOWSTATE asc ");
|
builder.append(" ) t ");
|
builder.append(" group by FLOWID ");
|
builder.append(" ) n ");
|
builder.append(" on b.ID = n.FLOWID ");
|
|
//工单类型
|
builder.append(" AND b.BUSINESSTYPE = :businessType");
|
//工单状态
|
if(StringUtil.isNotBlank(nodeState)){
|
if(nodeState.equals("end")) {
|
builder.append(" AND b.WFSTATE = :status2 ");
|
//param.put("status1", String.valueOf(Constants.WORKFLOW_BASE_WFSTATE_EVALUATE));
|
param.put("status2", String.valueOf(Constants.WORKFLOW_BASE_WFSTATE_FINISH));
|
}else if(nodeState.equals("close")){
|
builder.append(" AND b.WFSTATE = :status ");
|
param.put("status", String.valueOf(Constants.WORKFLOW_BASE_WFSTATE_CLOSE));
|
}
|
}
|
//客户
|
if(StringUtil.isNotBlank(customerId)) {
|
builder.append(" AND b.CUSTOMER_ID = :customerId ");
|
}
|
//下属单位
|
if(StringUtil.isNotBlank(subCustomerId)) {
|
builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
|
if(StringUtil.notEmpty(begintime)) {
|
builder.append(" AND b.CREATETIME >= :begintime ");
|
param.put("begintime", begintime+"000000");
|
}
|
if(StringUtil.notEmpty(endtime)) {
|
builder.append(" AND b.CREATETIME <= :endtime ");
|
param.put("endtime", endtime+"240000");
|
}
|
builder.append(" order by n.NODESTATE ASC,n.NODETIME desc,b.CREATETIME desc ");
|
|
Map supportMap = new HashMap();
|
supportMap.put("sql", builder.toString());
|
supportMap.put("param", param);
|
return supportMap;
|
}
|
/**
|
* 基本信息
|
*/
|
@Override
|
public Map queryRemindInfo(String orderId) {
|
String sql = " select b.WFSTATE,h.*,t.PLAN_EXECUTION_DATE from SC_WORKFLOW_CI_REMIND h ,CI_REMIND_TIMERTASK t, WORKFLOW_BASE b " +
|
" where h.FLOW_ID = t.FLOW_ID and b.ID=h.FLOW_ID and h.id = :orderId ";
|
return baseDao.queryForMap(sql,new SqlParameter("orderId",orderId));
|
}
|
|
/**
|
* 例行维护报告
|
*/
|
@Override
|
public Map getRemindeItem(Map<String, String> param) {
|
String flowId= param.get("flowId");
|
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",String.valueOf(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",String.valueOf(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 queryRemindCalandar(Map<String, String> param) {
|
String year = param.get("year");
|
String month = param.get("month");
|
String queryType = param.get("queryType");
|
if(!StringUtil.notEmpty(year)) {
|
year = DateUtil.getToday("yyyy");
|
}
|
if(!StringUtil.notEmpty(month)) {
|
month = DateUtil.getToday("MM");
|
}
|
String time = new String();
|
long nMonth = DateUtil.getCurrentDate6();
|
String yearMonth = year+month;
|
if(String.valueOf(nMonth).equals(yearMonth)) {
|
time = DateUtil.getToday("yyyyMMdd");
|
} else {
|
time = yearMonth+"01";
|
}
|
//所在周的前一个周日和后一个周六
|
Long[] sunSat = DateUtil.getSundaySaturday(Long.valueOf(time));
|
List<String> weekDays = DateUtil.getBetweenTwoDateCycleList(String.valueOf(sunSat[0]), String.valueOf(sunSat[1]), 2, 1, "yyyyMMdd", "yyyyMMdd");
|
//查询该月的第一天和最后一天
|
String[] dates = StringUtil.queryFirstLastDate(year,month);
|
//查询第一天属于周几
|
long firstDay = ConvertUtil.obj2Long(dates[0].replaceAll("-", ""));
|
long endDay = ConvertUtil.obj2Long(dates[1].replaceAll("-", ""));
|
int week = DateUtil.getDayOfWeek(firstDay);
|
List<String> allDate = new ArrayList<String>();
|
for(int i=week; i>0; i--) {
|
allDate.add(ConvertUtil.obj2StrBlank(DateUtil.getDateAdd(firstDay, -i, 8)));
|
}
|
List<String> list = new ArrayList<String>();
|
list = DateUtil.getBetweenTwoDateList(ConvertUtil.obj2StrBlank(firstDay), ConvertUtil.obj2StrBlank(endDay), 2, "yyyyMMdd");
|
|
for(String str : list) {
|
allDate.add(str.replaceAll("-", ""));
|
}
|
int lastSize = 42-allDate.size();
|
for(int i=1; i<=lastSize; i++) {
|
allDate.add(ConvertUtil.obj2StrBlank(DateUtil.getDateAdd(endDay, i, 8)));
|
}
|
|
List<Map> orderList = new ArrayList<Map>();
|
List<Map> planList = new ArrayList<Map>();
|
Map orderSetMap = new HashMap();
|
Map planSetMap = new HashMap();
|
|
Map<String,String> params = new HashMap<String,String>();
|
params.putAll(param);
|
String selMonth = year+month;
|
String bustype = "6";
|
|
String userId=param.get("userId");
|
|
params.put("selMonth", selMonth);
|
if(StringUtil.isNotBlank(queryType)){
|
params.put("queryType", queryType);
|
}
|
params.put("bustype", bustype);
|
params.put("userId", userId);
|
params.put("customer_id", params.get("customerId"));
|
Map result = queryRemindDate(params);
|
orderList=(List<Map>)result.get("orderDatas");
|
planList=(List<Map>)result.get("planDatas");
|
|
if(orderList!=null&&orderList.size()>0){
|
for(Map map : orderList) {
|
orderSetMap.put(ConvertUtil.obj2StrBlank(map.get("m_date")).replace("-", ""), "1");
|
}
|
}
|
|
if(planList!=null&&planList.size()>0){
|
for(Map map : planList) {
|
planSetMap.put(ConvertUtil.obj2StrBlank(map.get("m_date")).replace("-", ""), "1");
|
}
|
}
|
List resultList = new ArrayList();
|
List weekList = new ArrayList();
|
|
String today = DateUtil.getToday("yyyyMMdd");
|
for(String dateStr : allDate) {
|
if(orderSetMap.containsKey(dateStr)) {
|
Map map = new HashMap();
|
//判断当天是否有工单
|
map.put("hasOrder", true);
|
map.put("dateStr", dateStr);
|
//判断是不是当月,如果不是当月当月颜色不一致
|
String nowMonth = DateUtil.format("MM", dateStr);
|
if(month.equals(nowMonth)) {
|
map.put("nowMonth", 1);
|
} else {
|
map.put("nowMonth", 2);
|
}
|
//展示的日期(天)
|
map.put("showMonth", DateUtil.format("dd", dateStr));
|
//查询是否是当天之前
|
if(dateStr.equals(today)) {
|
map.put("isTody", "1");
|
} else {
|
if(ConvertUtil.obj2Long(today)>ConvertUtil.obj2Long(dateStr)) {
|
map.put("isTody", "0");
|
} else {
|
if(planSetMap.containsKey(dateStr)){
|
map.put("isTody", "2");
|
}
|
|
}
|
}
|
if(weekDays.contains(dateStr)) {
|
weekList.add(map);
|
}
|
resultList.add(map);
|
} else {
|
Map map = new HashMap();
|
map.put("hasOrder", false);
|
String nowMonth = DateUtil.format("MM", dateStr);
|
if(month.equals(nowMonth)) {
|
map.put("nowMonth", 1);
|
} else {
|
map.put("nowMonth", 2);
|
}
|
map.put("showMonth", DateUtil.format("dd", dateStr));
|
if(dateStr.equals(today)) {
|
map.put("isTody", "1");
|
}else {
|
if(ConvertUtil.obj2Long(today)>ConvertUtil.obj2Long(dateStr)) {
|
map.put("isTody", "0");
|
} else {
|
if(planSetMap.containsKey(dateStr)){
|
map.put("isTody", "2");
|
}
|
}
|
}
|
resultList.add(map);
|
|
if(weekDays.contains(dateStr)) {
|
weekList.add(map);
|
}
|
}
|
}
|
|
Map resultMap = new HashMap();
|
resultMap.put("monthDays", resultList);
|
resultMap.put("weekDays", weekList);
|
|
return resultMap;
|
}
|
|
@Override
|
public Map queryRemindDate(Map paramMap) {
|
StringBuilder builder = new StringBuilder();
|
|
String queryType = ConvertUtil.obj2StrBlank(paramMap.get("queryType"));
|
if(queryType.equals("1")){
|
workFlowSupportService.getMyOrderDateSql(builder, paramMap);
|
}else{
|
workFlowSupportService.getAllOrderDateSql(builder, paramMap);
|
}
|
List<Map> orderDatas = baseDao.queryForList(builder.toString(), paramMap);
|
|
Map resultMap = new HashMap();
|
//例行维护计划
|
if(StringUtil.isBlank(queryType)){
|
builder.setLength(0);
|
builder.append(" select DATE_FORMAT(t.PLAN_EXECUTION_DATE,'%Y-%m-%d') m_date from CI_REMIND_TIMERTASK T,CI_REMIND_CUSTOMER_ITEM I ");
|
builder.append(" where t.CUSTOMER_ITEM_ID = i.ID and t.state=1 and DATE_FORMAT(t.PLAN_EXECUTION_DATE,'%Y%m') = :selMonth ");
|
|
List<Map> planDatas = baseDao.queryForList(builder.toString(), paramMap);
|
resultMap.put("planDatas", planDatas);
|
}
|
resultMap.put("orderDatas", orderDatas);
|
resultMap.put(ClientUtil.SUCCESS, true);
|
resultMap.put(ClientUtil.MSG, "成功");
|
return resultMap;
|
}
|
/**
|
* 查询所有事件工单列表
|
*/
|
@Override
|
public PageInfo ewRemindData(PageInfo pageInfo,Map<String, String> param) {
|
|
Map supportMap = getAllRemindSql(param);
|
//List<Map> list = baseDao.queryforSplitPage(request, supportMap.get("sql").toString(), (Map)supportMap.get("param"));
|
PageInfo list=baseDao.queryforSplitPageInfo(pageInfo, supportMap.get("sql").toString(), param);
|
return list;
|
}
|
|
/**
|
* 查询所有事件工单列表总数
|
*/
|
@Override
|
public int ewRemindCount(Map<String, String> param) {
|
|
Map supportMap = getAllRemindSql(param);
|
String sql = "select count(*) from ( " + supportMap.get("sql").toString() + " ) t";
|
return baseDao.queryForInteger(sql,(Map)supportMap.get("param"));
|
|
|
}
|
|
/**
|
* 工单列表
|
* @param request
|
* @return
|
*/
|
private Map getAllRemindSql(Map<String, String> param){
|
|
String flowState = param.get("flowstate");
|
String customerId = param.get("customerId");
|
String subCustomerId = param.get("subCustomerId");
|
String orderCode = param.get("orderCode");
|
String nodeTemplateId = param.get("node");
|
String begintime = param.get("begintime");
|
String endtime = param.get("endtime");
|
|
param.put("flowState", flowState);
|
param.put("customerId", customerId);
|
param.put("subCustomerId", subCustomerId);
|
param.put("nodeTemplateId", nodeTemplateId);
|
param.put("orderCode", "%"+orderCode+"%");
|
param.put("businessType", String.valueOf(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND));
|
|
StringBuilder builder = new StringBuilder();
|
builder.append(" select b.BUSINESS_ID,b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
|
builder.append(" t.PLAN_EXECUTION_DATE,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 ");
|
builder.append(" inner join CI_REMIND_TIMERTASK t on r.FLOW_ID = t.FLOW_ID ");
|
if(StringUtil.isNotBlank(flowState)){
|
if(flowState.equals("11")){
|
builder.append(" inner join WORKFLOW_NODE N on b.CURRENT_NODE_ID = n.ID ");
|
builder.append(" AND N.FLOWSTATE = 1 AND N.CURRENT_DEALER_ID IS NOT NULL ");
|
}
|
}
|
|
//工单类型
|
builder.append(" where b.BUSINESSTYPE = :businessType");
|
if(StringUtil.isNotBlank(nodeTemplateId)){
|
builder.append(" and n.NODE_TEMPLATE_ID IS NOT NULL and n.NODE_TEMPLATE_ID =:nodeTemplateId and b.WFSTATE = 1 ");
|
}
|
|
//客户
|
if(StringUtil.isNotBlank(customerId)) {
|
builder.append(" AND b.CUSTOMER_ID = :customerId ");
|
}
|
//下属单位
|
if(StringUtil.isNotBlank(subCustomerId)) {
|
builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
|
}
|
//工单状态
|
if(StringUtil.isNotBlank(flowState) && !flowState.equals("11")){
|
builder.append(" AND b.WFSTATE = :flowState ");
|
}
|
|
if(StringUtil.notEmpty(begintime)) {
|
builder.append(" AND b.CREATETIME >= :begintime ");
|
param.put("begintime", begintime+"000000");
|
}
|
if(StringUtil.notEmpty(endtime)) {
|
builder.append(" AND b.CREATETIME <= :endtime ");
|
param.put("endtime", endtime+"240000");
|
}
|
|
builder.append(" order by b.CREATETIME desc,t.PLAN_EXECUTION_DATE desc ");
|
|
Map supportMap = new HashMap();
|
supportMap.put("sql",builder);
|
supportMap.put("param", param);
|
return supportMap;
|
}
|
|
/**
|
* 查询所有事件工单列表(根据客户ID)
|
*/
|
@Override
|
public PageInfo ewRemindByCusIdData(PageInfo pageInfo,
|
Map<String, String> param) {
|
Map supportMap = getAllRemindSql(param);
|
PageInfo list=baseDao.queryforSplitPageInfo(pageInfo, supportMap.get("sql").toString(), param);
|
return list;
|
}
|
|
/**
|
* 查询所有事件工单数量(根据客户ID)
|
*/
|
@Override
|
public int ewRemindByCusIdCount(Map<String, String> param) {
|
Map supportMap = getAllRemindSql(param);
|
String sql = "select count(*) from ( " + supportMap.get("sql").toString() + " ) t";
|
return baseDao.queryForInteger(sql,(Map)supportMap.get("param"));
|
}
|
|
@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 doServerDispatch(Map<String, String> param,SC_WORKFLOW_CI_REMIND remind,String[] ciIdAry) {
|
String orderId =param.get("orderId");
|
String nodeId =param.get("nodeId");
|
String executorIds = param.get("executorIds");
|
String executorNames = param.get("executorNames");
|
String main_executorId = param.get("main_executorId");
|
String flowNote = param.get("flowNote");
|
String dealUserName = "";
|
|
String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id();
|
//更新业务表数据
|
remind.setId(orderId).update();
|
//设定执行人
|
List<Map> userList = new ArrayList<Map>();
|
String[] executorIdAry = executorIds.split(",");
|
String[] executorNameAry = executorNames.split(",");
|
|
Map cacheuser = new HashMap();
|
|
for(int i=0;i<executorIdAry.length;i++){
|
Map tempMap = new HashMap();
|
tempMap.put("USER_ID", executorIdAry[i]);
|
tempMap.put("USER_NAME", executorNameAry[i]);
|
if(executorIdAry[i].equals(main_executorId)){
|
tempMap.put("IS_ADMIN", "1");
|
dealUserName=executorNameAry[i];
|
|
}
|
userList.add(tempMap);
|
}
|
|
|
|
String userId=param.get("ID");
|
String userName=param.get("ZSXM");
|
|
|
Map flowMsg = getFlowMsg(flowId,userId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
|
//增加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content(nodeName+":"+userName+",将问题指派给了,"+dealUserName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(nodeId).setNode_name(nodeName);
|
recordService.addRecord(record);
|
|
//环节流转
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setNote(flowNote);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setNextNodeTemplateId(Constants.REMIND_DEAL);
|
support.setNextUserList(userList);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND);
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
//addPatrolCi(orderId,ciIdAry);
|
|
Map resultMap = new HashMap();
|
resultMap.put("result", "1");
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
/**
|
* 例行维护 添加巡检设备信息
|
* */
|
@Override
|
public void addPatrolCi(String orderId, String[] ciIdAry) {
|
baseDao.execute("delete from SC_WORKFLOW_CI_REMIND_DETAIL where order_id = :orderId", new SqlParameter("orderId",orderId));
|
if(ciIdAry!=null&&ciIdAry.length>0){
|
ArrayList<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
for(int i=0;i<ciIdAry.length;i++){
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", StringUtil.getUUID())
|
.addValue("ciId", ciIdAry[i])
|
.addValue("orderId", orderId);
|
paramList.add(param);
|
}
|
String sql = " insert into SC_WORKFLOW_CI_REMIND_DETAIL (ID,CI_ID,ORDER_ID,DEAL_STATE) " +
|
" values (:id,:ciId,:orderId,3)";
|
baseDao.executeBatch(sql, paramList);
|
}
|
}
|
|
/**
|
* 通过orderid获取流程信息
|
*/
|
@Override
|
public Map getFlowMsg(String flowId,String userId) {
|
String selectSql = "SELECT * FROM WORKFLOW_NODE WHERE FLOWID = :flowId AND CURRENT_DEALER_ID = :userId AND FLOWSTATE <> 3 ";
|
return baseDao.queryForMap(selectSql,new SqlParameter("flowId",flowId).addValue("userId", userId));
|
}
|
|
@Override
|
public Map doEngineerPatrol(Map<String, String> param) {
|
String orderId = ConvertUtil.obj2StrBlank(param.get("orderId"));
|
String nodeId = ConvertUtil.obj2StrBlank(param.get("nodeId"));
|
String note = ConvertUtil.obj2StrBlank(param.get("flowNote"));
|
String summary = ConvertUtil.obj2StrBlank(param.get("summary"));
|
|
|
String userName = param.get("ZSXM");
|
String userId = param.get("Id");
|
|
new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().setOrder_note(summary).update();
|
String flowId = new SC_WORKFLOW_CI_REMIND(orderId).getInstanceById().getFlow_id();
|
|
Map flowMsg = getFlowMsg(flowId,userId);
|
String nodeid = ConvertUtil.obj2StrBlank(flowMsg.get("ID"));
|
String nodeName = ConvertUtil.obj2StrBlank(flowMsg.get("NODENAME"));
|
|
//增加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content(nodeName+":"+userName+",已处理维护执行");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
record.setNode_id(nodeId).setNode_name(nodeName);
|
recordService.addRecord(record);
|
|
//环节流转
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setNote(note);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND);
|
Integer is_admin = new WORKFLOW_NODE(nodeId).getInstanceById().getIs_admin();
|
if(is_admin!=null&&is_admin==1){
|
support.setNextNodeTemplateId(Constants.REMIND_APPROVE);
|
support.setEverDealflag(true);
|
support.setEverNodeTemplateId(Constants.REMIND_DISPATCH);
|
}
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
Map resultMap = new HashMap();
|
resultMap.put("result", "1");
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
/**
|
* 回退
|
*/
|
@Override
|
public Map doSendback(Map<String, String> param) {
|
String orderId = param.get("orderId");
|
String nodeId = param.get("nodeId");
|
String lastNodeTemplateId = param.get("lastNodeTemplateId");
|
String note = param.get("backNote");
|
|
String userName = ConvertUtil.obj2StrBlank(param.get("ZSXM"));
|
String userId = ConvertUtil.obj2StrBlank(param.get("ID"));
|
|
String flowId = param.get("flowId");
|
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setNote(note);
|
support.setEverNodeTemplateId(lastNodeTemplateId);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_REMIND);
|
SysInfoMsg msg = workFlowSupportService.doOrderSendback(support);
|
Map resultMap = new HashMap();
|
resultMap.put("result", "1");
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
}
|