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.SC_WORKFLOW_CI_HEALTH;
|
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.util.ConvertUtil;
|
import cn.ksource.core.util.DateUtil;
|
import cn.ksource.core.util.JsonUtil;
|
import cn.ksource.core.util.StringUtil;
|
import cn.ksource.core.web.SysInfoMsg;
|
import cn.ksource.core.web.WebUtil;
|
import cn.ksource.core.workflow.NodeAnswerEntity;
|
import cn.ksource.core.workflow.NodeFinishEntity;
|
import cn.ksource.core.workflow.WorkflowCoreService;
|
import cn.ksource.web.Constants;
|
import cn.ksource.web.entity.WorkFlowSupportEntity;
|
import cn.ksource.web.facade.health.HealthFacade;
|
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
|
|
@Service
|
public class EwHealthFacadeImpl implements EwHealthFacade {
|
@Autowired
|
private BaseDao baseDao;
|
@Autowired
|
private WorkflowCoreService workflowCoreService;
|
@Autowired
|
private HealthFacade healthFacade;
|
@Autowired
|
private WorkFlowSupportService workFlowSupportService;
|
@Override
|
public int ewMyHealthCount(HttpServletRequest request) {
|
Map supportMap = getMyHealthListSql(request);
|
String sql = "select count(*) from ( " + supportMap.get("sql").toString() + " ) t";
|
return baseDao.queryForInteger(sql,(Map)supportMap.get("param"));
|
}
|
|
@Override
|
public List ewMyHealthData(HttpServletRequest request) {
|
Map supportMap = getMyHealthListSql(request);
|
List<Map> list = baseDao.queryforSplitPage(request, supportMap.get("sql").toString(), (Map)supportMap.get("param"));
|
return list;
|
}
|
/**
|
* 我的工单列表
|
* @param request
|
* @return
|
*/
|
private Map getMyHealthListSql(HttpServletRequest request){
|
String userId = WebUtil.getEngineerUserId(request);
|
String flowState = request.getParameter("status");
|
String nodeState = request.getParameter("flowstate");
|
String customerId = request.getParameter("customerId");
|
String subCustomerId = request.getParameter("subCustomerId");
|
String begintime = request.getParameter("begintime");
|
String endtime = request.getParameter("endtime");
|
|
Map paramMap = new HashMap();
|
paramMap.put("userId", userId);
|
paramMap.put("nodeState", nodeState);
|
paramMap.put("flowState", flowState);
|
paramMap.put("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_HEALTH);
|
paramMap.put("customerId", customerId);
|
paramMap.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, ");
|
builder.append(" b.BUSINESSTYPE,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE, ");
|
builder.append(" t.PLAN_EXE_DATE,r.PLAN_TIME,r.ORDER_CODE,r.ID ORDERID,r.CI_RUN_NOTE ");
|
builder.append(" from SC_WORKFLOW_CI_HEALTH r ");
|
builder.append(" inner join WORKFLOW_BASE B on r.FLOW_ID = b.ID ");
|
builder.append(" inner join CI_HEALTH_PLAN_TIMER t on r.ID = t.FLOW_ID ");
|
builder.append(" inner join ");
|
builder.append(" ( ");
|
builder.append(" select * from ( ");
|
builder.append(" select CREATETIME NODETIME,ID NODEID,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 group by FLOWID ");
|
builder.append(" ) n ");
|
builder.append(" on b.ID = n.FLOWID ");
|
builder.append(" where 1=1 ");
|
//工单类型
|
builder.append(" AND b.BUSINESSTYPE = :businessType");
|
//工单状态
|
if(StringUtil.isNotBlank(nodeState)){
|
if(nodeState.equals("end")) {
|
builder.append(" AND (b.WFSTATE = :status1 OR b.WFSTATE = :status2)");
|
paramMap.put("status1", Constants.WORKFLOW_BASE_WFSTATE_EVALUATE);
|
paramMap.put("status2", Constants.WORKFLOW_BASE_WFSTATE_FINISH);
|
}else if(nodeState.equals("close")){
|
builder.append(" AND b.WFSTATE = :status ");
|
paramMap.put("status", 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 ");
|
paramMap.put("begintime", begintime+"000000");
|
}
|
if(StringUtil.notEmpty(endtime)) {
|
builder.append(" AND b.CREATETIME <= :endtime ");
|
paramMap.put("endtime", endtime+"240000");
|
}
|
|
builder.append(" order by b.CREATETIME desc,t.PLAN_EXE_DATE desc ");
|
|
Map supportMap = new HashMap();
|
supportMap.put("sql", builder.toString());
|
supportMap.put("param", paramMap);
|
return supportMap;
|
}
|
|
@Override
|
public String doOrderConfirm(HttpServletRequest request) {
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
|
Map user = WebUtil.getEngineerMsg(request);
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
|
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(nodeId).getInstanceById(), answerEntity);
|
if(!result) {
|
return "2";
|
}
|
return "1";
|
}
|
|
@Override
|
public Map queryHealthCalandar(HttpServletRequest request) {
|
String year = request.getParameter("year");
|
String month = request.getParameter("month");
|
String queryType = request.getParameter("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 params = new HashMap();
|
String selMonth = year+month;
|
String bustype = "7";
|
String userId = WebUtil.getEngineerUserId(request);
|
params.put("selMonth", selMonth);
|
if(StringUtil.isNotBlank(queryType)){
|
params.put("queryType", queryType);
|
}
|
params.put("bustype", bustype);
|
params.put("userId", userId);
|
|
Map result = healthFacade.queryHealthDate(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 int ewHealthCount(HttpServletRequest request) {
|
Map supportMap = getAllHealthSql(request);
|
String sql = "select count(*) from ( " + supportMap.get("sql").toString() + " ) t";
|
return baseDao.queryForInteger(sql,(Map)supportMap.get("param"));
|
|
|
}
|
|
@Override
|
public List ewHealthData(HttpServletRequest request) {
|
Map supportMap = getAllHealthSql(request);
|
List<Map> list = baseDao.queryforSplitPage(request, supportMap.get("sql").toString(), (Map)supportMap.get("param"));
|
return list;
|
}
|
/**
|
* 工单列表
|
* @param request
|
* @return
|
*/
|
private Map getAllHealthSql(HttpServletRequest request){
|
|
String flowState = request.getParameter("flowstate");
|
String customerId = request.getParameter("customerId");
|
String subCustomerId = request.getParameter("subCustomerId");
|
String orderCode = request.getParameter("orderCode");
|
String nodeTemplateId = request.getParameter("node");
|
String begintime = request.getParameter("begintime");
|
String endtime = request.getParameter("endtime");
|
|
Map paramMap = new HashMap();
|
paramMap.put("flowState", flowState);
|
paramMap.put("customerId", customerId);
|
paramMap.put("subCustomerId", subCustomerId);
|
paramMap.put("nodeTemplateId", nodeTemplateId);
|
paramMap.put("orderCode", "%"+orderCode+"%");
|
paramMap.put("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_HEALTH);
|
|
StringBuilder builder = new StringBuilder();
|
builder.append(" select b.PROJECT_NAME,b.BUSINESS_ID,b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
|
builder.append(" t.PLAN_EXE_DATE,r.ORDER_CODE,r.ID ORDERID,r.CI_RUN_NOTE,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE ");
|
builder.append(" from SC_WORKFLOW_CI_HEALTH r ");
|
builder.append(" inner join WORKFLOW_BASE b on r.FLOW_ID = b.ID ");
|
builder.append(" inner join CI_HEALTH_PLAN_TIMER t on r.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(" AND 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 ");
|
paramMap.put("begintime", begintime+"000000");
|
}
|
if(StringUtil.notEmpty(endtime)) {
|
builder.append(" AND b.CREATETIME <= :endtime ");
|
paramMap.put("endtime", endtime+"240000");
|
}
|
|
builder.append(" order by b.CREATETIME desc,t.PLAN_EXE_DATE desc ");
|
|
Map supportMap = new HashMap();
|
supportMap.put("sql",builder);
|
supportMap.put("param", paramMap);
|
return supportMap;
|
}
|
|
@Override
|
public List queryDevices(String flowId) {
|
String sqlString="SELECT C.* FROM SC_WORKFLOW_CI_HEALTH A,SC_WORKFLOW_CI_HEALTH_CIDETAIL B,CMDB_CI_BASE C WHERE A.FLOW_ID=:flowId AND B.ORDER_ID=A.ID AND C.ID=B.CI_ID";
|
return baseDao.queryForList(sqlString, new SqlParameter("flowId",flowId));
|
}
|
|
@Override
|
public Map doDispatch(SC_WORKFLOW_CI_HEALTH health,Map<String, String> param,HttpServletRequest request) {
|
String orderId = param.get("orderId");
|
String flowId = param.get("flowId");
|
String nodeId = param.get("nodeId");
|
String flowNote = param.get("flowNote");
|
String executorIds = param.get("executorIds");
|
String executorNames = param.get("executorNames");
|
String main_executorId = param.get("main_executorId");
|
Map user = WebUtil.getWywEngineerLoginUser(request);
|
String[] ciIdAry = request.getParameterValues("ciId");
|
String items = request.getParameter("items");
|
List itemlist=JsonUtil.json2List(items);
|
//更新基本信息
|
health.setId(orderId).update();
|
//添加巡检设备和指标(edit by peikezhan 2016.07.14)
|
//addPatrolCi(orderId,ciIdAry,itemlist);
|
|
//设定执行人
|
List<Map> userList = new ArrayList<Map>();
|
String[] executorIdAry = executorIds.split(",");
|
String[] executorNameAry = executorNames.split(",");
|
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");
|
}
|
userList.add(tempMap);
|
}
|
|
//环节流转
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setNote(flowNote);
|
support.setUserName(user.get("ZSXM").toString());
|
support.setUserId(user.get("ID").toString());
|
support.setNextNodeTemplateId(Constants.HEALTH_PATROL);
|
support.setNextUserList(userList);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_HEALTH);
|
|
|
Map resultMap = new HashMap();
|
resultMap.put("result", "1");
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
/**
|
* 添加巡检设备
|
* @param orderId
|
* @param ciIdAry(现在应该为CI_HEALTH_PLAN_CILIST表的ID ADD BY peikezhan2016.7.13)
|
*/
|
@Override
|
public void addPatrolCi(String orderId, String[] ciIdAry,List itemList) {
|
//删除巡检设备和巡检项!!!!!!!!!!!!!!!!!
|
baseDao.execute("delete from SC_WORKFLOW_CI_HEALTH_CIDETAIL where order_id = :orderId", new SqlParameter("orderId",orderId));
|
baseDao.execute("delete from SC_WORKFLOW_ITEM_HEALTH_CIDETAIL where order_id = :orderId", new SqlParameter("orderId",orderId));
|
|
if(ciIdAry!=null&&ciIdAry.length>0){
|
ArrayList<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
ArrayList<SqlParameter> paramList_item = new ArrayList<SqlParameter>();
|
for(int i=0;i<ciIdAry.length;i++){
|
SqlParameter param = new SqlParameter();
|
String orderCiId = StringUtil.getUUID();
|
param.addValue("id", orderCiId)
|
.addValue("ciId", ciIdAry[i])
|
.addValue("orderId", orderId);
|
paramList.add(param);
|
//查询设备对应巡检项
|
/*StringBuilder itemSql = new StringBuilder();
|
itemSql.append(" select i.ID ITEM_ID,i.ITEM_NAME from CI_HEALTH_CUSTOMIZE_DETAIL d ");
|
itemSql.append(" inner join CI_HEALTH_CUSTOMER_ITEM r ");
|
itemSql.append(" on d.CUSTOMER_ITEM_ID = r.ID ");
|
itemSql.append(" inner join CI_HEALTH_ITEM i ");
|
itemSql.append(" on r.ITEM_ID = i.ID ");
|
itemSql.append(" where d.CI_PATROL_ID = :ciId ");
|
List<Map> itemList = baseDao.queryForList(itemSql.toString(),new SqlParameter().addValue("ciId", ciIdAry[i]));*/
|
if(itemList!=null&&itemList.size()>0){
|
Map<String,String> map=(Map)itemList.get(i);
|
String itemString=map.get("itemId");
|
if(!StringUtil.isEmpty(itemString)){
|
String items[]=itemString.split("-");
|
for(int k=0;k<items.length;k++){
|
SqlParameter param_item = new SqlParameter();
|
param_item.addValue("id", StringUtil.getUUID())
|
.addValue("orderId", orderId)
|
.addValue("orderCiId", orderCiId)
|
.addValue("ciId", ciIdAry[i])
|
.addValue("itemId", items[k]);
|
paramList_item.add(param_item);
|
}
|
}
|
}
|
}
|
|
//插入设备巡检表
|
String sql = " insert into SC_WORKFLOW_CI_HEALTH_CIDETAIL (ID,CI_ID,ORDER_ID,DEAL_STATE) " +
|
" values (:id,:ciId,:orderId,3)";
|
baseDao.executeBatch(sql, paramList);
|
//插入设备指标项巡检表
|
String sql_item = " insert into SC_WORKFLOW_ITEM_HEALTH_CIDETAIL " +
|
" (ID,ORDER_CI_ID,ORDER_ID,CI_ID,ITEM_ID,DEAL_STATE) " +
|
" values " +
|
" (:id,:orderCiId,:orderId,:ciId,:itemId,3) ";
|
baseDao.executeBatch(sql_item, paramList_item);
|
}
|
}
|
|
/**
|
* 关闭工单(orderId,closeNote,nodeId)
|
* @param request
|
*/
|
@Override
|
public void doCloseWrokFlow(HttpServletRequest request){
|
String orderId = request.getParameter("orderId");
|
String closeNote = request.getParameter("closeNote");
|
String nodeId = request.getParameter("nodeId");
|
String flowId = request.getParameter("flowId");
|
String userName = WebUtil.getWywEngineerLoginUser(request).get("ZSXM").toString();
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
NodeFinishEntity finishEntity = new NodeFinishEntity();
|
finishEntity.setDeal_result(1);
|
finishEntity.setDeal_note_title(userName+"关闭了工单");
|
finishEntity.setDeal_note(closeNote);
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
workflowCoreService.finishNode(base, node, finishEntity);
|
workflowCoreService.closeWorkFlow(base);
|
}
|
|
@Override
|
public Map doSendToManager(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
String flowNote = request.getParameter("flowNote");
|
String ciRunNote = request.getParameter("ciRunNote");
|
String ciErrorNote = request.getParameter("ciErrorNote");
|
String commonJsonList = request.getParameter("commonJsonList");
|
Map user = WebUtil.getWywEngineerLoginUser(request);
|
|
String updateSql = " update SC_WORKFLOW_CI_HEALTH set CI_RUN_NOTE=:ciRunNote, CI_ERROR_NOTE=:ciErrorNote " +
|
" where ID =:orderId ";
|
SqlParameter param = new SqlParameter().addValue("orderId", orderId)
|
.addValue("ciRunNote", ciRunNote)
|
.addValue("ciErrorNote", ciErrorNote);
|
baseDao.execute(updateSql, param);
|
|
//通用指标信息
|
if(StringUtil.isNotBlank(commonJsonList)){
|
saveCommontItem(commonJsonList);
|
}
|
|
//环节流转
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setNote(flowNote);
|
support.setUserName(user.get("ZSXM").toString());
|
support.setUserId(user.get("ID").toString());
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_CI_HEALTH);
|
Integer is_admin = new WORKFLOW_NODE(nodeId).getInstanceById().getIs_admin();
|
if(is_admin!=null&&is_admin==1){
|
support.setNextNodeTemplateId(Constants.HEALTH_APPROVE);
|
support.setEverDealflag(true);
|
support.setEverNodeTemplateId(Constants.HEALTH_DISPATCH);
|
}
|
|
Map resultMap = new HashMap();
|
resultMap.put("result", "1");
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
private void saveCommontItem(String commonJsonList){
|
List<Map> commonList = JsonUtil.json2List(commonJsonList);
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
if(commonList!=null&&commonList.size()>0){
|
for(Map common:commonList){
|
SqlParameter param = new SqlParameter();
|
param.addValue("result", common.get("result"))
|
.addValue("commonId", common.get("commonId"))
|
.addValue("note", common.get("note"));
|
paramList.add(param);
|
}
|
}
|
String sql = " update CI_HEALTH_PATROL_COMMON_RECORD set RESULT_TYPE=:result,NOTE=:note " +
|
" where ID=:commonId ";
|
baseDao.executeBatch(sql,paramList);
|
}
|
|
@Override
|
public SysInfoMsg doEndHealthFlow(HttpServletRequest request) {
|
String orderId = ConvertUtil.obj2StrBlank(request.getParameter("orderId"));
|
String flowId = ConvertUtil.obj2StrBlank(request.getParameter("flowId"));
|
String nodeId = ConvertUtil.obj2StrBlank(request.getParameter("nodeId"));
|
String note = ConvertUtil.obj2StrBlank(request.getParameter("flowNote"));
|
Map user = WebUtil.getWywEngineerLoginUser(request);
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
|
//保存概况
|
StringBuilder sql = getStatisSql();
|
List<Map> list = baseDao.queryForList(sql.toString(),new SqlParameter("orderId",orderId));
|
if(list!=null&&list.size()>0){
|
List<SqlParameter> paramList = new ArrayList<SqlParameter>();
|
for(Map map:list){
|
SqlParameter param = new SqlParameter();
|
param.addValue("id", StringUtil.getUUID())
|
.addValue("orderId", orderId)
|
.addValue("thirdid", map.get("thirdid").toString())
|
.addValue("totalnum", map.get("totalnum").toString())
|
.addValue("realnum", map.get("realnum").toString())
|
.addValue("normalnum", map.get("normalnum").toString())
|
.addValue("warnnum", map.get("warnnum").toString())
|
.addValue("errornum", map.get("errornum").toString());
|
paramList.add(param);
|
}
|
sql.setLength(0);
|
sql.append(" insert into SC_WORKFLOW_CI_HEALTH_CATEGORY ");
|
sql.append(" (ID,BUS_ID,LV3_CATE_ID,TOTAL_NUM,TRUE_NUM,NORMAL_NUM,ALERT_NUM,ERROR_NUM) ");
|
sql.append(" values ");
|
sql.append(" (:id,:orderId,:thirdid,:totalnum,:realnum,:normalnum,:warnnum,:errornum) ");
|
baseDao.executeBatch(sql.toString(), paramList);
|
}
|
|
//环节流转
|
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_HEALTH);
|
support.setFlowEndflag(true);
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
return msg;
|
}
|
|
/**
|
* 获取统计sql
|
* @return
|
*/
|
private StringBuilder getStatisSql(){
|
StringBuilder builder = new StringBuilder();
|
builder.append(" ");
|
builder.append(" select m_total.LV3_ID thirdid,IFNULL(m_total.totalnum,0) totalnum, ");
|
builder.append(" IFNULL(m_real.realnum,0) realnum, ");
|
builder.append(" IFNULL(m_normal.normalnum,0) normalnum, ");
|
builder.append(" IFNULL(m_warn.warnnum,0) warnnum, ");
|
builder.append(" IFNULL(m_error.errornum,0) errornum ");
|
builder.append(" from ");
|
builder.append(" ( ");
|
builder.append(" select count(*) totalnum,b.LV3_ID from SC_WORKFLOW_CI_HEALTH_CIDETAIL d ");
|
builder.append(" inner join cmdb_ci_base b ");
|
builder.append(" on d.CI_ID = b.ID ");
|
builder.append(" where d.ORDER_ID = :orderId ");
|
builder.append(" group by b.LV3_ID ");
|
builder.append(" ) m_total left join ");
|
builder.append(" ( ");
|
builder.append(" select count(*) realnum,b.LV3_ID from SC_WORKFLOW_CI_HEALTH_CIDETAIL d ");
|
builder.append(" inner join cmdb_ci_base b ");
|
builder.append(" on d.CI_ID = b.ID ");
|
builder.append(" where d.ORDER_ID = :orderId ");
|
builder.append(" and d.DEAL_STATE=1 ");
|
builder.append(" group by b.LV3_ID ");
|
builder.append(" ) m_real on m_total.LV3_ID = m_real.LV3_ID ");
|
builder.append(" left join ");
|
builder.append(" ( ");
|
builder.append(" select count(*) normalnum,b.LV3_ID from SC_WORKFLOW_CI_HEALTH_CIDETAIL d ");
|
builder.append(" inner join cmdb_ci_base b ");
|
builder.append(" on d.CI_ID = b.ID ");
|
builder.append(" where d.ORDER_ID = :orderId ");
|
builder.append(" and d.CI_STATE = 1 ");
|
builder.append(" group by b.LV3_ID ");
|
builder.append(" ) m_normal on m_total.LV3_ID = m_normal.LV3_ID ");
|
builder.append(" left JOIN ");
|
builder.append(" ( ");
|
builder.append(" select count(*) warnnum,b.LV3_ID from SC_WORKFLOW_CI_HEALTH_CIDETAIL d ");
|
builder.append(" inner join cmdb_ci_base b ");
|
builder.append(" on d.CI_ID = b.ID ");
|
builder.append(" where d.ORDER_ID = :orderId ");
|
builder.append(" and d.CI_STATE=2 ");
|
builder.append(" group by b.LV3_ID ");
|
builder.append(" ) m_warn on m_total.LV3_ID = m_warn.LV3_ID ");
|
builder.append(" left JOIN ");
|
builder.append(" ( ");
|
builder.append(" select count(*) errornum,b.LV3_ID from SC_WORKFLOW_CI_HEALTH_CIDETAIL d ");
|
builder.append(" inner join cmdb_ci_base b ");
|
builder.append(" on d.CI_ID = b.ID ");
|
builder.append(" where d.ORDER_ID = :orderId ");
|
builder.append(" and d.CI_STATE=3 ");
|
builder.append(" group by b.LV3_ID ");
|
builder.append(" ) m_error on m_total.LV3_ID = m_error.LV3_ID ");
|
return builder;
|
}
|
|
@Override
|
public Map doSendback(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String nodeId = request.getParameter("nodeId");
|
String lastNodeTemplateId = request.getParameter("lastNodeTemplateId");
|
String note = request.getParameter("backNote");
|
Map user = WebUtil.getWywEngineerLoginUser(request);
|
String userName = ConvertUtil.obj2StrBlank(user.get("ZSXM"));
|
String userId = ConvertUtil.obj2StrBlank(user.get("ID"));
|
String flowId = request.getParameter("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_HEALTH);
|
|
Map resultMap = new HashMap();
|
resultMap.put("result", "1");
|
SysInfoMsg msg = workFlowSupportService.doOrderSendback(support);
|
resultMap.put("msg", msg);
|
return resultMap;
|
}
|
|
}
|