package cn.ksource.web.facade.releaseManage;
|
|
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.Repository;
|
|
import cn.ksource.beans.GG_RECORD;
|
import cn.ksource.beans.SC_WORKFLOW_RELEASE;
|
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.util.TreeUtil;
|
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.change.ChangeFacade;
|
import cn.ksource.web.facade.dsl.DSLFacade;
|
import cn.ksource.web.service.WorkOrderCodeService;
|
import cn.ksource.web.service.record.RecordService;
|
import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService;
|
|
@SuppressWarnings("unchecked")
|
@Repository
|
public class ReleaseFacadeImpl implements ReleaseFacade{
|
@Autowired
|
private BaseDao baseDao;
|
@Autowired
|
private DSLFacade dslFacade;
|
@Autowired
|
private ChangeFacade changeFacade;
|
|
@Autowired
|
private WorkOrderCodeService workOrderCodeService;
|
|
@Autowired
|
private WorkFlowSupportService workFlowSupportService;
|
@Autowired
|
private RecordService recordService;
|
@Autowired
|
private WorkflowCoreService workflowCoreService;
|
|
/**
|
* 获取我的发布管理数据
|
* @param request
|
* @return
|
*/
|
private Map getMyRealseSupportMap(HttpServletRequest request){
|
String userId = WebUtil.getLoginedUserId(request);
|
//String partnerId = WebUtil.getLoginedPartnerId(request);
|
String flowState = request.getParameter("flowState");
|
String nodeState = request.getParameter("nodeState");
|
String customerId = request.getParameter("customerId");
|
String projectId = request.getParameter("projectId");
|
String subCustomerId = request.getParameter("subCustomerId");
|
int businessType = Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE;
|
//工单编号
|
String orderCode = request.getParameter("orderCode");
|
String orderName = request.getParameter("orderName");
|
String startDate = request.getParameter("startDate");
|
String endDate = request.getParameter("endDate");
|
|
SqlParameter param = new SqlParameter();
|
param.addValue("userId", userId)
|
//.addValue("partnerId", partnerId)
|
.addValue("flowState", flowState)
|
.addValue("nodeState", nodeState)
|
.addValue("customerId", customerId)
|
.addValue("projectId", projectId)
|
.addValue("subCustomerId", subCustomerId)
|
.addValue("businessType", businessType)
|
.addValue("orderCode", "%"+orderCode+"%")
|
.addValue("orderName", "%"+orderName+"%")
|
.addValue("startDate", startDate+"000000")
|
.addValue("endDate", endDate+"666666");
|
|
|
StringBuilder builder = new StringBuilder();
|
builder.append(" select r.NAME,b.CURRENT_DEALER_NAME,r.PROJECT_NAME,r.RELEASE_REASON,n.*,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
|
builder.append(" r.ORDER_CODE,r.ID ORDERID,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE ");
|
builder.append(" from SC_WORKFLOW_RELEASE r ");
|
builder.append(" inner join WORKFLOW_BASE B on r.FLOW_ID = b.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)){
|
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(" where b.PARTNER_ID =:partnerId ");
|
//工单类型
|
builder.append(" AND b.BUSINESSTYPE = :businessType");
|
//工单状态
|
if(StringUtil.notEmpty(flowState)) {
|
builder.append(" AND b.WFSTATE =:flowState ");
|
|
}
|
|
//客户
|
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(projectId)) {
|
builder.append(" AND b.PROJECT_ID = :projectId ");
|
}
|
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND r.ORDER_CODE LIKE :orderCode");
|
}
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND r.NAME LIKE :orderName");
|
}
|
if(StringUtil.notEmpty(startDate)) {
|
builder.append(" AND b.CREATETIME >=:startDate");
|
}
|
if(StringUtil.notEmpty(endDate)) {
|
builder.append(" AND b.CREATETIME <=:endDate");
|
}
|
|
|
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 int queryMyRealseCount(HttpServletRequest request) {
|
Map supportMap = getMyRealseSupportMap(request);
|
String sql = " select count(*) from ( " + supportMap.get("sql").toString() +" ) t ";
|
SqlParameter param = (SqlParameter)supportMap.get("param");
|
return baseDao.queryForInteger(sql,param);
|
}
|
|
@Override
|
public List<Map> queryMyRealseData(HttpServletRequest request) {
|
Map supportMap = getMyRealseSupportMap(request);
|
String sql = supportMap.get("sql").toString();
|
SqlParameter param = (SqlParameter)supportMap.get("param");
|
return baseDao.queryforSplitPage(request, sql, param);
|
}
|
|
@Override
|
public List queryLinkDeviceList(String flowId) {
|
String sql = " select c.id,c.ciname,c.position,c.SEARCHCODE seachcode from cmdb_ci_base c " +
|
" inner join CMDB_CI_REF_ORDER r on c.ID = r.CI_ID " +
|
" where r.FLOW_ID=:flowId ";
|
return baseDao.queryForList(sql,new SqlParameter().addValue("flowId", flowId));
|
}
|
|
|
|
@Override
|
public List queryLinkOrderList(String orderId) {
|
String sql = " select b.id,businesstype,wfname,wfstate,order_code,createtime from workflow_base b " +
|
" inner join ORDER_REF_ORDER r on b.ID = r.RELATE_FLOW_ID " +
|
" where r.BUSINESS_ID = :orderId" ;
|
List<Map> list = baseDao.queryForList(sql,new SqlParameter().addValue("orderId", orderId));
|
for(Map map:list){
|
map.put("businesstype_text", Constants.mapWORKFLOW_BUSINESS_TYPE_Label(ConvertUtil.obj2Str(map.get("businesstype"))));
|
}
|
return list;
|
}
|
|
@Override
|
public Map getChangeInfoById(String changeId) {
|
String sql = "select oa_id,id change_id,name,customer_id,customer_name,project_id,project_name from sc_workflow_change where id = :changeId ";
|
return baseDao.queryForMap(sql, new SqlParameter("changeId", changeId));
|
}
|
|
@Override
|
public String saveRelease(HttpServletRequest request, SC_WORKFLOW_RELEASE release) {
|
String orderId = request.getParameter("orderId");
|
String flowId = request.getParameter("flowId");
|
//String partnerId = WebUtil.getLoginedPartnerId(request);
|
String configDataJson = request.getParameter("configDataJson");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
//服务目录
|
String serivceListId = request.getParameter("serivceListId");
|
String serivceList = request.getParameter("serivceListName");
|
String first_category_id = "";
|
String first_category_name = "";
|
String second_category_id = "";
|
String second_category_name = "";
|
String third_category_id = "";
|
String third_category_name = "";
|
if(StringUtil.notEmpty(serivceListId) && StringUtil.notEmpty(serivceList)) {
|
String[] serivceListIds = serivceListId.split("-");
|
String[] serivceLists = serivceList.split(Constants.splitMark);
|
first_category_id = serivceListIds[0];
|
first_category_name = serivceLists[0];
|
second_category_id = serivceListIds[1];
|
second_category_name = serivceLists[1];
|
third_category_id = serivceListIds[2];
|
third_category_name = serivceLists[2];
|
}
|
release.setFirst_category_id(first_category_id);
|
release.setFirst_category_name(first_category_name);
|
release.setSecond_category_id(second_category_id);
|
release.setSecond_category_name(second_category_name);
|
release.setThird_category_id(third_category_id);
|
release.setThird_category_name(third_category_name);
|
|
//工单编号
|
String order_code = workOrderCodeService.getReleaseOrderCode();
|
release.setOrder_code(order_code);
|
release.setRelease_user_id(userId);
|
release.setRelease_user_name(userName);
|
release.setCreate_time(DateUtil.getCurrentDate14());
|
//release.setPartner_id(partnerId);
|
release.setRelation_configure(configDataJson);
|
if(StringUtil.isNotBlank(orderId)){
|
release.setId(orderId);
|
}
|
release.insertOrUpdate();
|
//更新workflow_base中的信息
|
SqlParameter baseParam = new SqlParameter("wfname",release.getName()).addValue("customer_id", release.getCustomer_id()).addValue("customer_name", release.getCustomer_name()).addValue("sub_customer_id", release.getSub_customer_id()).addValue("sub_customer_name", release.getSub_customer_name()).addValue("orderId", release.getId());
|
baseDao.execute("UPDATE WORKFLOW_BASE SET WFNAME = :wfname,CUSTOMER_ID = :customer_id,CUSTOMER_NAME = :customer_name,SUB_CUSTOMER_ID = :sub_customer_id,SUB_CUSTOMER_NAME = :sub_customer_name WHERE BUSINESS_ID = :orderId", baseParam);
|
orderId = release.getId();
|
|
if(StringUtil.isNotBlank(release.getSource_change_id())){//从变更升级
|
SqlParameter param = new SqlParameter();
|
param.addValue("changeId", release.getSource_change_id())
|
.addValue("orderId", orderId);
|
baseDao.execute("update sc_workflow_change set release_id = :orderId where id=:changeId ", param);
|
}
|
|
|
String[] linkOrderIds = request.getParameterValues("linkOrderId");
|
String[] linkDeviceIds = request.getParameterValues("linkDeviceId");
|
|
if(StringUtil.isBlank(flowId)||flowId.equals(orderId)){
|
String sql = " update sc_workflow_release set flow_id = :orderId where id=:orderId ";
|
baseDao.execute(sql, new SqlParameter("orderId",orderId));
|
flowId = orderId;
|
}
|
//添加关联信息
|
workFlowSupportService.saveLinkOrders(flowId,linkOrderIds);
|
workFlowSupportService.saveLinkDevices(flowId,linkDeviceIds);
|
//配置库数据
|
//String sysInfoJson = request.getParameter("sysInfoJson");
|
//saveSysInfo(orderId,sysInfoJson);
|
return orderId;
|
}
|
|
@Override
|
public SysInfoMsg doOrganizationDSL(HttpServletRequest request){
|
String orderId = request.getParameter("orderId");
|
String nodeId = request.getParameter("nodeId");
|
String flowId = request.getParameter("flowId");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
//发送到审批环节
|
String sql = "select project_id from sc_workflow_release where id = :orderId" ;
|
SqlParameter param = new SqlParameter("orderId",orderId);
|
String projectId = baseDao.queryForString(sql,param);
|
String nextTemplateId = request.getParameter("nextTemplateId");
|
|
List<Map> userList = new ArrayList<Map>();
|
Map dealer = new HashMap();
|
dealer.put("USER_ID",request.getParameter("dealId"));
|
dealer.put("USER_NAME",request.getParameter("dealName"));
|
dealer.put("IS_ADMIN","1");
|
userList.add(dealer);
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setNextUserList(userList);
|
support.setOrderId(orderId);
|
support.setNextNodeTemplateId(nextTemplateId);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
support.setNote(request.getParameter("bz"));
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
|
if(orderId.equals(flowId)){
|
flowId = baseDao.queryForString(" select FLOW_ID from sc_workflow_release where id=:orderId ",new SqlParameter("orderId",orderId));
|
param.addValue("flowId", flowId);
|
sql = " update CMDB_CI_REF_ORDER set FLOW_ID = :flowId where FLOW_ID = :orderId ";
|
baseDao.execute(sql, param);
|
sql = " update ORDER_REF_ORDER set BUSINESS_ID = :flowId where BUSINESS_ID = :orderId ";
|
baseDao.execute(sql, param);
|
//更新DSL
|
sql = " update PROJECT_DSL set FLOW_ID = :flowId where FLOW_ID = :orderId ";
|
baseDao.execute(sql, param);
|
sql = " update DSL_VERSION set CREATE_FLOW_ID = :flowId where CREATE_FLOW_ID = :orderId ";
|
baseDao.execute(sql, param);
|
sql = " update CMDB_DSL_LINK set FLOW_ID = :flowId where FLOW_ID = :orderId ";
|
baseDao.execute(sql, param);
|
sql = " update DSL_ORDER_LINK set FLOW_ID = :flowId where FLOW_ID = :orderId ";
|
baseDao.execute(sql, param);
|
}
|
|
//增加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("创建发布:"+userName+"创建了发布流程");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
return msg;
|
}
|
|
@Override
|
public Map getDSLInfo(String configureId, String thirdCateId, String flowId, String partnerId) {
|
SqlParameter param = new SqlParameter();
|
param.addValue("configureId", configureId)
|
.addValue("thirdCateId", thirdCateId)
|
.addValue("flowId", flowId)
|
.addValue("partnerId", partnerId);
|
|
StringBuilder builder = new StringBuilder();
|
//查询dsl基本信息
|
builder.append(" select id,pid,'name',note,lv from CONFIG_DSL where state=1 and THIRD_CATEGORY_ID=:thirdCateId and PARTNER_ID=:partnerId order by lv,sort_id asc ");
|
List<Map> dataList = baseDao.queryForList(builder.toString(),param);
|
//查询dsl附件信息
|
builder.setLength(0);
|
builder.append(" select *,TRUNCATE(FILE_SIZE/(1024*1024),2) FILE_SIZE_M from GG_FILES WHERE DEL_FLAG = 1 ");
|
builder.append(" and BUSINESS_ID = :flowId and EXTEND1 =:configureId and EXTEND2 = :secondDslId ");
|
if(dataList!=null&&dataList.size()>0){
|
for(Map data:dataList){
|
if(data.get("lv")!=null&&data.get("lv").toString().equals("2")){
|
param.addValue("secondDslId", data.get("id"));
|
data.put("files", baseDao.queryForList(builder.toString(), param));
|
}
|
}
|
}
|
Map root = TreeUtil.createTreeByListMap(dataList);
|
builder.setLength(0);
|
builder.append(" select VERSION_NO from config_dsl_pro where configure_id =:configureId and release_flow_id=:flowId ");
|
String versionNo = baseDao.queryForString(builder.toString(),param);
|
root.put("versionNo",versionNo);
|
return root;
|
}
|
|
@Override
|
public Map getNextNode(Map<String, String> params) {
|
String nodeId = params.get("nodeId");
|
String flowId = params.get("flowId");
|
Map nextNode = new HashMap();
|
nextNode.put("userId", "");
|
nextNode.put("userName", "");
|
String templateId = Constants.RELEASE_APPLY;
|
if (nodeId==null||StringUtil.isBlank(nodeId)) {
|
nextNode.put("nodeId", Constants.RELEASE_APPROVE);
|
nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.RELEASE_APPROVE));
|
}else{
|
StringBuilder sql = new StringBuilder("select b.node_template_id from workflow_base a,workflow_node b where a.current_node_id = b.id and a.id = :flowId ");
|
templateId = baseDao.queryForString(sql.toString(), new SqlParameter("flowId", flowId));
|
if(templateId.equals(Constants.RELEASE_APPLY)){
|
nextNode.put("nodeId", Constants.RELEASE_APPROVE);
|
nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.RELEASE_APPROVE));
|
}else if(templateId.equals(Constants.RELEASE_APPROVE)){
|
nextNode.put("nodeId", Constants.RELEASE_EXECUTE);
|
nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.RELEASE_EXECUTE));
|
}/*else if(templateId.equals(Constants.CIADD_APPLY)){
|
nextNode.put("nodeId", Constants.CIADD_APPROVE);
|
nextNode.put("nodeName", Constants.getmapRELEASE_NODE(Constants.CIADD_APPROVE));
|
}*/
|
}
|
nextNode.put("curTemplateId", templateId);
|
return nextNode;
|
}
|
|
@Override
|
public SysInfoMsg doApproveAssign(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
/*String noticeUserId = request.getParameter("noticeUserId");*/
|
String executeUserId = request.getParameter("dealId");
|
String executeUserName = request.getParameter("dealName");
|
SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById();
|
release.setExecute_id(executeUserId);
|
release.setExecute_name(executeUserName);
|
release.update();
|
/*if(StringUtil.isNotBlank(noticeUserId)){
|
return doRealseApprove(request);
|
}else{*/
|
return doReleaseNotice(request);
|
/*}*/
|
}
|
|
@Override
|
public SysInfoMsg doReleaseNotice(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String nodeId = request.getParameter("nodeId");
|
String flowId = request.getParameter("flowId");
|
String note = request.getParameter("bz");
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
|
SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById();
|
|
List<Map> userList = new ArrayList<Map>();
|
Map executorMap = new HashMap();
|
executorMap.put("USER_ID", release.getExecute_id());
|
executorMap.put("USER_NAME", release.getExecute_name());
|
executorMap.put("IS_ADMIN", "1");
|
userList.add(executorMap);
|
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setNote(note);
|
support.setNextUserList(userList);
|
support.setNextNodeTemplateId(Constants.RELEASE_EXECUTE);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
|
//增加处理记录
|
String dealUserName="";
|
for(Map map:userList){
|
if(StringUtil.isNotBlank(dealUserName)){
|
dealUserName = dealUserName + "," + map.get("USER_NAME");
|
}else{
|
dealUserName = dealUserName + map.get("USER_NAME");
|
}
|
}
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("工单流转:"+userName+"将工单发送给了"+dealUserName);
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
return msg;
|
}
|
|
@Override
|
public SysInfoMsg doReleaseExec(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String nodeId = request.getParameter("nodeId");
|
String flowId = request.getParameter("flowId");
|
String flowNote = request.getParameter("flowNote");
|
String execStep = request.getParameter("execStep");
|
String backStep = request.getParameter("backStep");
|
String execSituation=request.getParameter("execSituation");
|
/*String hours = request.getParameter("hours");
|
new WORKFLOW_NODE(nodeId).getInstanceById().setWorking_hours(hours).update();*/
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById();
|
release.setExec_step(execStep);
|
release.setBack_step(backStep);
|
release.setRelease_result(ConvertUtil.obj2Int(execSituation));
|
release.update();
|
//发送到审核
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setNote(flowNote);
|
|
support.setEverDealflag(true);
|
support.setEverNodeTemplateId(Constants.RELEASE_APPROVE);
|
support.setNextNodeTemplateId(Constants.RELEASE_APPROVAL);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
|
//查询发布审批主负责人()
|
Map<String, String> lastNode = changeFacade.queryUserByTemplateId(flowId, Constants.RELEASE_APPROVE);
|
|
//增加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("工单流转:"+userName+"将工单发送给了"+lastNode.get("CURRENT_DEALER_NAME"));
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
return msg;
|
}
|
|
|
|
@Override
|
public SysInfoMsg doReleaseApproval(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String nodeId = request.getParameter("nodeId");
|
String flowId = request.getParameter("flowId");
|
String flowNote = request.getParameter("flowNote");
|
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
|
SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById();
|
//发送到OA
|
if(StringUtil.isNotBlank(release.getOa_id())){
|
//发送到关键用户确认
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setNodeId(nodeId);
|
support.setUserName(userName);
|
support.setUserId(userId);
|
support.setNote(flowNote);
|
support.setEverDealflag(true);
|
support.setEverNodeTemplateId(Constants.RELEASE_APPROVAL);
|
support.setNextNodeTemplateId(Constants.RELEASE_REVIEW);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
SysInfoMsg msg = workFlowSupportService.doOrderFlow(support);
|
|
|
//增加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("工单流转:"+userName+"将工单发送给了"+workFlowSupportService.getEverNodeExecutor(flowId,Constants.RELEASE_APPROVAL).get(0).get("USER_NAME"));
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
|
//发送消息到oa
|
/*Map param = new HashMap();
|
param.put("OA_ID", release.getOa_id());
|
param.put("Order_ID", release.getId());
|
WebServiceConfig cfg = WebServiceConfig.getInstance();
|
try {
|
KmMaintainWebService service = (KmMaintainWebService)WebServiceClient.callService(cfg.getAddress(), cfg.getServiceClass());
|
service.addPublishExecute(JsonUtil.map2Json(param));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}*/
|
return msg;
|
}else{
|
doOrderFinish(request);
|
return null;
|
}
|
}
|
|
@Override
|
public void doOrderFinish(HttpServletRequest request){
|
String orderId = request.getParameter("orderId");
|
String nodeId = request.getParameter("nodeId");
|
String flowNote = request.getParameter("flowNote");
|
String sucessFlag = request.getParameter("sucessFlag");
|
if (StringUtil.isBlank(sucessFlag)) {
|
sucessFlag = "1";
|
}
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String sql = " update sc_workflow_release set sucess_flag =:sucessFlag where id=:orderId ";
|
baseDao.execute(sql, new SqlParameter().addValue("sucessFlag",sucessFlag)
|
.addValue("orderId", orderId));
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById();
|
String flowId = release.getFlow_id();
|
//环节流转
|
WorkFlowSupportEntity support = new WorkFlowSupportEntity();
|
support.setFlowId(flowId);
|
support.setUserName(userName);
|
support.setUserName(userId);
|
support.setNodeId(nodeId);
|
support.setNote(flowNote);
|
support.setFlowEndflag(true);
|
support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
workFlowSupportService.doOrderFlow(support);
|
|
//保存dsl操作记录
|
dslFacade.saveConfigDslDealRecord(flowId);
|
//更新dsl关系
|
dslFacade.updateConfigDslWhenFinish(flowId);
|
//配置关系保存到记录表
|
changeFacade.saveRelationWhenClose(flowId);
|
//保存配置关系-结束工单
|
changeFacade.updateRelationWhenFinish(flowId);
|
//增加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("工单结束:"+userName+"结束了工单");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(flowId);
|
recordService.addRecord(record);
|
}
|
|
@Override
|
public List querySysInfoList(String orderId) {
|
String sql = " select * from SC_WORKFLOW_RELEASE_BUSINESS_SYS where BUSINESS_ID = :orderId" ;
|
return baseDao.queryForList(sql,new SqlParameter().addValue("orderId", orderId));
|
}
|
|
@Override
|
public boolean doAnswer(HttpServletRequest request) {
|
String flowId = request.getParameter("flowId");
|
String nodeId = request.getParameter("nodeId");
|
WORKFLOW_BASE base = new WORKFLOW_BASE(flowId).getInstanceById();
|
WORKFLOW_NODE node = new WORKFLOW_NODE(nodeId).getInstanceById();
|
NodeAnswerEntity entity = new NodeAnswerEntity();
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
entity.setUser_id(user.get("ID").toString());
|
entity.setUser_name(user.get("ZSXM").toString());
|
boolean flag = workflowCoreService.answerNode(base, node, entity);
|
return flag;
|
}
|
|
@Override
|
public SysInfoMsg doSendBack(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String nodeId = request.getParameter("nodeId");
|
String lastNodeTemplateId = request.getParameter("lastNodeTemplateId");
|
String note = request.getParameter("backNote");
|
String flowId = new SC_WORKFLOW_RELEASE(orderId).getInstanceById().getInstanceById().getFlow_id();
|
Map user = WebUtil.getLoginUser(request).getLoginUser();
|
String userName = user.get("ZSXM").toString();
|
String userId = user.get("Id").toString();
|
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_RELEASE);
|
SysInfoMsg msg = workFlowSupportService.doOrderSendback(support);
|
return msg;
|
}
|
|
@Override
|
public void doCloseFlow(HttpServletRequest request) {
|
String orderId = request.getParameter("orderId");
|
String closeNote = request.getParameter("closeNote");
|
String nodeId = request.getParameter("nodeId");
|
String userName = WebUtil.getLoginUser(request).getLoginUser().get("ZSXM").toString();
|
String userId = WebUtil.getLoginedUserId(request);
|
SC_WORKFLOW_RELEASE release = new SC_WORKFLOW_RELEASE(orderId).getInstanceById();
|
WORKFLOW_BASE base = new WORKFLOW_BASE(release.getFlow_id()).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);
|
|
String flowId = base.getId();
|
//保存dsl操作记录
|
dslFacade.saveConfigDslDealRecord(flowId);
|
//更新dsl关系
|
dslFacade.updateConfigDslWhenClose(flowId);
|
//配置关系保存到记录表
|
changeFacade.saveRelationWhenClose(flowId);
|
//删除变更中的配置关系
|
changeFacade.delRelationWhenClose(flowId);
|
|
//增加处理记录
|
GG_RECORD record = new GG_RECORD();
|
record.setDeal_content("工单关闭:"+userName+"关闭了工单");
|
record.setDeal_time(DateUtil.getCurrentDate14());
|
// record.setDeal_user_id(userId);
|
record.setDeal_user_name(userName);
|
record.setBusiness_id(node.getFlowid());
|
recordService.addRecord(record);
|
}
|
|
@Override
|
public Map getSurveyNum(HttpServletRequest request) {
|
Map result = new HashMap();
|
//String partnerId = WebUtil.getLoginedPartnerId(request);
|
SqlParameter param = new SqlParameter();
|
param.addValue("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
|
List<Map> projects = new ArrayList<Map>();
|
//projects = WebUtil.getProjects(request);
|
StringBuilder builder = new StringBuilder();
|
builder.append(" select COUNT(b.ID) num,n.NODE_TEMPLATE_ID ");
|
builder.append(" from WORKFLOW_BASE b,WORKFLOW_NODE n ");
|
builder.append(" where b.CURRENT_NODE_ID = n.ID AND b.BUSINESSTYPE = :businessType ");
|
builder.append(" AND b.WFSTATE=1 AND n.NODE_TEMPLATE_ID is not null ");
|
/*//过滤项目
|
builder = getProjectSql(builder,projects);*/
|
//工单类型
|
builder.append(" GROUP BY n.NODE_TEMPLATE_ID ");
|
List<Map> queryList = baseDao.queryForList(builder.toString(),param);
|
if(queryList!=null&&queryList.size()>0){
|
for(Map map:queryList){
|
if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_APPLY)){
|
result.put("applyNum", map.get("num"));
|
}else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_APPROVE)){
|
result.put("approveNum", map.get("num"));
|
}else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_EXECUTE)){
|
result.put("excNum", map.get("num"));
|
}else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_APPROVAL)){
|
result.put("approvalNum", map.get("num"));
|
}else if(map.get("NODE_TEMPLATE_ID").toString().equals(Constants.RELEASE_REVIEW)){
|
result.put("reviewNum", map.get("num"));
|
}
|
}
|
}
|
return result;
|
}
|
|
@Override
|
public List<Map> queryRealseData(HttpServletRequest request) {
|
StringBuilder builder = new StringBuilder();
|
//String partnerId = WebUtil.getLoginedPartnerId(request);
|
String flowState = request.getParameter("flowState");
|
String orderCode = request.getParameter("orderCode");
|
String projectId = request.getParameter("projectId");
|
String customerId = request.getParameter("customerId");
|
String subCustomerId = request.getParameter("subCustomerId");
|
String nodeTemplateId = request.getParameter("nodeTemplateId");
|
String nodeTempId = request.getParameter("nodeTempId");
|
String orderName = request.getParameter("orderName");
|
String startDate = request.getParameter("startDate");
|
String endDate = request.getParameter("endDate");
|
|
Map paramMap = new HashMap();
|
paramMap.put("projectId", projectId);
|
paramMap.put("customerId", customerId);
|
paramMap.put("subCustomerId", subCustomerId);
|
//paramMap.put("partnerId", partnerId);
|
paramMap.put("flowState", flowState);
|
paramMap.put("orderCode", "%"+orderCode+"%");
|
paramMap.put("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
paramMap.put("nodeTempId", nodeTempId);
|
paramMap.put("nodeTemplateId", nodeTemplateId);
|
paramMap.put("startDate", startDate+"000000");
|
paramMap.put("endDate", startDate+"666666");
|
paramMap.put("orderName", "%"+orderName+"%");
|
|
builder = getAllRemindSql(request);
|
return baseDao.queryforSplitPage(request, builder.toString(), paramMap);
|
}
|
|
|
|
@Override
|
public int queryRealseCount(HttpServletRequest request) {
|
StringBuilder builder = new StringBuilder();
|
//String partnerId = WebUtil.getLoginedPartnerId(request);
|
String flowState = request.getParameter("flowState");
|
String orderCode = request.getParameter("orderCode");
|
String projectId = request.getParameter("projectId");
|
String customerId = request.getParameter("customerId");
|
String subCustomerId = request.getParameter("subCustomerId");
|
String nodeTemplateId = request.getParameter("nodeTemplateId");
|
String orderName = request.getParameter("orderName");
|
String startDate = request.getParameter("startDate");
|
String endDate = request.getParameter("endDate");
|
|
Map paramMap = new HashMap();
|
//paramMap.put("partnerId", partnerId);
|
paramMap.put("flowState", flowState);
|
paramMap.put("projectId", projectId);
|
paramMap.put("customerId", customerId);
|
paramMap.put("subCustomerId", subCustomerId);
|
paramMap.put("orderCode", "%"+orderCode+"%");
|
paramMap.put("businessType", Constants.WORKFLOW_BASE_BUSINESS_TYPE_RELEASE);
|
String nodeTempId = request.getParameter("nodeTempId");
|
paramMap.put("nodeTempId", nodeTempId);
|
paramMap.put("nodeTemplateId", nodeTemplateId);
|
paramMap.put("startDate", startDate+"000000");
|
paramMap.put("endDate", endDate+"666666");
|
paramMap.put("orderName", "%"+orderName+"%");
|
|
builder = getAllRemindSql(request);
|
String sql = "select count(*) from ( " + builder.toString() + " ) t" ;
|
return baseDao.queryForInteger(sql.toString(),paramMap);
|
}
|
|
/**
|
* 服务台工单列表
|
* @param request
|
* @return
|
*/
|
private StringBuilder getAllRemindSql(HttpServletRequest request){
|
String flowState = request.getParameter("flowState");
|
String projectId = request.getParameter("projectId");
|
String customerId = request.getParameter("customerId");
|
String subCustomerId = request.getParameter("subCustomerId");
|
String nodeTemplateId = request.getParameter("nodeTemplateId");
|
String nodeTempId = request.getParameter("nodeTempId");
|
|
|
/*List<Map> projects = new ArrayList<Map>();
|
if(StringUtil.notEmpty(customerId) && StringUtil.notEmpty(projectId)) {
|
|
} else if (StringUtil.notEmpty(customerId) && !StringUtil.notEmpty(projectId)) {
|
//通过当前客户查询出所有的项目信息
|
projects = slaProjectFacade.queryProjects(request, customerId);
|
} else {
|
projects = WebUtil.getProjects(request);
|
}*/
|
|
StringBuilder builder = new StringBuilder();
|
builder.append(" select n.FLOWSTATE NODESTATE,b.CURRENT_DEALER_NAME,b.PROJECT_NAME,r.RELEASE_REASON,b.ID FLOWID,b.WFNAME,b.CREATERNAME,b.CREATETIME,b.CURRENT_NODE_NAME,b.BUSINESSTYPE, ");
|
builder.append(" r.ORDER_CODE,r.ID ORDERID,b.CUSTOMER_NAME,b.SUB_CUSTOMER_NAME,B.WFSTATE ");
|
builder.append(" from SC_WORKFLOW_RELEASE r ");
|
builder.append(" inner join WORKFLOW_BASE b on r.FLOW_ID = b.ID ");
|
builder.append(" inner join WORKFLOW_NODE N on b.CURRENT_NODE_ID = n.ID ");
|
builder.append(" where 1=1 ");
|
//工单类型
|
builder.append(" AND b.BUSINESSTYPE = :businessType");
|
//工单状态
|
if(StringUtil.notEmpty(flowState)) {
|
builder.append(" AND b.WFSTATE =:flowState ");
|
}
|
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.notEmpty(customerId) && StringUtil.notEmpty(projectId)) {
|
builder.append(" AND b.CUSTOMER_ID = :customerId AND b.PROJECT_ID = :projectId ");
|
} else {
|
builder = getProjectSql(builder,projects);
|
}*/
|
|
|
//客户
|
if(StringUtil.isNotBlank(customerId)) {
|
builder.append(" AND b.CUSTOMER_ID = :customerId ");
|
}
|
//下属单位
|
if(StringUtil.isNotBlank(subCustomerId)) {
|
builder.append(" AND b.SUB_CUSTOMER_ID = :subCustomerId ");
|
|
}
|
//工单编号
|
String orderCode = request.getParameter("orderCode");
|
if(StringUtil.notEmpty(orderCode)) {
|
builder.append(" AND r.ORDER_CODE LIKE :orderCode");
|
}
|
|
String orderName = request.getParameter("orderName");
|
if(StringUtil.notEmpty(orderName)) {
|
builder.append(" AND r.ORDER_CODE LIKE :orderName");
|
}
|
|
String startDate = request.getParameter("startDate");
|
if(StringUtil.notEmpty(startDate)) {
|
builder.append(" AND b.CREATETIME >= :startDate");
|
}
|
|
String endDate = request.getParameter("endDate");
|
if(StringUtil.notEmpty(endDate)) {
|
builder.append(" AND b.CREATETIME <= :endDate");
|
}
|
|
|
|
if(StringUtil.notEmpty(nodeTempId)) {
|
builder.append(" AND EXISTS (SELECT n.ID FROM WORKFLOW_NODE n WHERE b.CURRENT_NODE_ID = n.ID AND n.NODE_TEMPLATE_ID = :nodeTempId ) ");
|
}
|
|
builder.append(" order by b.CREATETIME desc ");
|
return builder;
|
}
|
|
}
|