package cn.ksource.web.facade.bpbj; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Stack; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import cn.ksource.beans.CMDB_CI_CATEGORY; import cn.ksource.beans.GG_RECORD; import cn.ksource.beans.SC_WORKFLOW_RELEASE; import cn.ksource.beans.SPARE_PART; import cn.ksource.beans.SPARE_PART_APPLY; import cn.ksource.beans.SPARE_PART_DELIVERY; import cn.ksource.beans.SPARE_PART_STORAGE; 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.AjaxUtil; import cn.ksource.core.util.ConvertUtil; import cn.ksource.core.util.DateUtil; import cn.ksource.core.util.JsonUtil; import cn.ksource.core.util.OrderCodeUtil; import cn.ksource.core.util.StringUtil; import cn.ksource.core.util.TwoDimensionCode; import cn.ksource.core.web.SysInfoMsg; import cn.ksource.core.web.WebUtil; import cn.ksource.core.workflow.NodeDealEntity; import cn.ksource.core.workflow.NodeFinishEntity; import cn.ksource.core.workflow.WorkflowBusinessService; import cn.ksource.core.workflow.WorkflowCoreService; import cn.ksource.web.Constants; import cn.ksource.web.entity.WorkFlowSupportEntity; import cn.ksource.web.service.WorkOrderCodeService; import cn.ksource.web.service.record.RecordService; import cn.ksource.web.service.workFlowSupport.WorkFlowSupportService; @Service("SpareAuditingFacade") public class SpareAuditingFacadeImpl implements SpareAuditingFacade { @Resource private BaseDao baseDao; @Autowired private WorkflowBusinessService workflowBusinessService; @Autowired private WorkOrderCodeService workOrderCodeService; @Autowired private WorkFlowSupportService workFlowSupportService; @Autowired private RecordService recordService; @Resource private WorkflowCoreService workflowCoreService; /** * 入库申请列表信息 * @return */ @Override public List getStockList() { return baseDao.queryForList(" select * from SPARE_PART where STATE=1 "); } /** * 入库申请列表信息 * @param pageInfo * @param params * @return */ @Override public PageInfo getStockListData(Map params,PageInfo pageInfo) { StringBuilder sql = new StringBuilder(); Map paramMap = new HashMap(); sql.append("SELECT DISTINCT\n" + " SPARE_PART_APPLY.*\n" + "FROM\n" + " SPARE_PART_APPLY\n" + "LEFT JOIN WORKFLOW_NODE ON WORKFLOW_NODE.FLOWID = SPARE_PART_APPLY.FLOW_ID\n" + "WHERE\n" + " (\n" + " WORKFLOW_NODE.FLOWSTATE = '1'\n" + " OR SPARE_PART_APPLY.state >=3\n" + " )\n" + "AND SPARE_PART_APPLY.state >=2\n" + "AND WORKFLOW_NODE.CURRENT_DEALER_ID = :userId"); String order_code=params.get("order_code"); String order_name=params.get("order_name"); String state=params.get("state"); String start_time=params.get("start_time"); String end_time=params.get("end_time"); String userId=params.get("userId"); paramMap.put("userId", userId); String customer_id=params.get("customer_id"); //项目 if (StringUtil.isNotBlank(customer_id)) { sql.append(" and PROJECT_ID=:project_id "); paramMap.put("project_id", customer_id); } //工单编号 if (StringUtil.isNotBlank(order_code)) { sql.append(" and order_code like:order_code "); paramMap.put("order_code", "%"+order_code.trim()+"%"); } //工单名称 if (StringUtil.isNotBlank(order_name)) { sql.append(" and order_name like :order_name "); paramMap.put("order_name", "%"+order_name.trim()+"%"); } //工单状态 if (StringUtil.isNotBlank(state)) { sql.append(" and state=:state "); paramMap.put("state", state); } //开始时间 if(StringUtil.isNotBlank(start_time)){ sql.append(" AND gmt_create>=:start_time"); paramMap.put("start_time", start_time+"000000"); } //结束时间 if(StringUtil.isNotBlank(end_time)){ sql.append(" and gmt_create<=:end_time"); paramMap.put("end_time", end_time+"235959"); } sql.append(" order by state asc, gmt_create desc "); return baseDao.queryforSplitPageInfo(pageInfo,sql.toString(), paramMap); } /** * 入库申请列表数量信息 * @param pageInfo * @param params * @return */ @Override public int getStockListCount(Map params) { StringBuilder sql = new StringBuilder(); Map paramMap = new HashMap(); sql.append("SELECT \n" + " COUNT(DISTINCT SPARE_PART_APPLY.ID)\n" + "FROM\n" + " SPARE_PART_APPLY\n" + "LEFT JOIN WORKFLOW_NODE ON WORKFLOW_NODE.FLOWID = SPARE_PART_APPLY.FLOW_ID\n" + "WHERE\n" + " (\n" + " WORKFLOW_NODE.FLOWSTATE = '1'\n" + " OR SPARE_PART_APPLY.state IN ('3', '4','6')\n" + " )\n" + "AND SPARE_PART_APPLY.state IN ('2', '3', '4','6')\n" + "AND WORKFLOW_NODE.CURRENT_DEALER_ID =:userId"); String order_code=params.get("order_code"); String order_name=params.get("order_name"); String state=params.get("state"); String start_time=params.get("start_time"); String end_time=params.get("end_time"); String userId=params.get("userId"); paramMap.put("userId", userId); String customer_id=params.get("customer_id"); //项目 if (StringUtil.isNotBlank(customer_id)) { sql.append(" and PROJECT_ID=:project_id "); paramMap.put("project_id", customer_id); } //工单编号 if (StringUtil.isNotBlank(order_code)) { sql.append(" and order_code like:order_code "); paramMap.put("order_code", "%"+order_code.trim()+"%"); } //工单名称 if (StringUtil.isNotBlank(order_name)) { sql.append(" and order_name like :order_name "); paramMap.put("order_name", "%"+order_name.trim()+"%"); } //工单状态 if (StringUtil.isNotBlank(state)) { sql.append(" and state=:state "); paramMap.put("state", state); } //开始时间 if(StringUtil.isNotBlank(start_time)){ sql.append(" AND gmt_create>=:start_time"); paramMap.put("start_time", start_time+"000000"); } //结束时间 if(StringUtil.isNotBlank(end_time)){ sql.append(" and gmt_create<=:end_time"); paramMap.put("end_time", end_time+"235959"); } sql.append(" order by gmt_create desc "); int count = baseDao.queryForInteger(sql.toString(), paramMap); return count; } /** * 提交申请入库 * @param request * @return */ @Override public String doApproveAssign(HttpServletRequest request) { Map user = WebUtil.getLoginUser(request).getLoginUser(); String userid=user.get("ID").toString(); String usernameString=user.get("ZSXM").toString(); String orderId = request.getParameter("orderId"); String bz= request.getParameter("note"); String note_key= request.getParameter("note_key"); String note_val= request.getParameter("note_val"); String jg= request.getParameter("isNext"); String sqlString="SELECT\n" + " WORKFLOW_BASE.id flowid,\n" + " WORKFLOW_NODE.CURRENT_DEALER_ID userid,\n" + " WORKFLOW_NODE.CURRENT_DEALER_NAME username,\n" + " WORKFLOW_NODE.ID nodeid\n" + "FROM\n" + " WORKFLOW_BASE,\n" + " WORKFLOW_NODE\n" + "WHERE\n" + " WORKFLOW_BASE.BUSINESS_ID =:business_id\n" + "AND WORKFLOW_BASE.id = WORKFLOW_NODE.FLOWID\n" + "AND WORKFLOW_NODE.FLOWSTATE = 1 and WORKFLOW_NODE.CURRENT_DEALER_ID=:userid"; Map paramMap = new HashMap(); paramMap.put("business_id",orderId); paramMap.put("userid",userid); List queryForList = baseDao.queryForList(sqlString, paramMap); if(queryForList!=null && queryForList.size()>0){ //提交 String FlowId=queryForList.get(0).get("flowid").toString(); String NodeId=queryForList.get(0).get("nodeid").toString(); String UserName=queryForList.get(0).get("username").toString(); String Userid=queryForList.get(0).get("userid").toString(); WorkFlowSupportEntity support = new WorkFlowSupportEntity(); support.setOrderId(orderId); support.setNodeId(NodeId); support.setUserName(UserName); support.setUserId(Userid); support.setFlowId(FlowId); support.setWorkFlowType(Constants.WORKFLOW_BASE_BUSINESS_TYPE_STOCK); support.setNote(bz); SysInfoMsg msg = workFlowSupportService.doOrderFlow(support); WORKFLOW_BASE base = new WORKFLOW_BASE(support.getFlowId()).getInstanceById(); WORKFLOW_NODE node = new WORKFLOW_NODE(support.getNodeId()).getInstanceById(); node.setDeal_result(Integer.valueOf(jg)); node.setNote_key(note_key); node.setNote_val(note_val); node.setAnswer_time(DateUtil.getCurrentDate14()); node.update(); //更新业务表状态 SPARE_PART_APPLY spare_part_apply = new SPARE_PART_APPLY(orderId).getInstanceById(); if(jg.equals("1")){ spare_part_apply.setState(Constants.SPARE_PART_APPLY_STATE_C); //生成出库单 SPARE_PART_DELIVERY spare_part_delivery=new SPARE_PART_DELIVERY(); spare_part_delivery.setOrder_name(spare_part_apply.getOrder_name()); spare_part_delivery.setDelivery_type_key("1"); spare_part_delivery.setDelivery_type_name("备件申领"); spare_part_delivery.setDelivery_reason(spare_part_apply.getApply_reason()); spare_part_delivery.setApply_order_id(orderId); //工单编号 String order_code = workOrderCodeService.getSpareDeliveryOrderCode(); spare_part_delivery.setOrder_code(order_code); spare_part_delivery.setCreate_id(userid); spare_part_delivery.setState(Constants.SPARE_PART_DELIVERY_STATE_X); spare_part_delivery.setCreate_name(usernameString); spare_part_delivery.setGmt_create(DateUtil.getCurrentDate14()); spare_part_delivery.insert(); spare_part_apply.setDelivery_order_id(spare_part_delivery.getId()); String apply_cate="update SPARE_PART_APPLY_CATE set DELIVERY_ORDER_ID=:delivery_order_id where APPLY_ORDER_ID=:apply_order_id"; paramMap.put("delivery_order_id", spare_part_delivery.getId()); paramMap.put("apply_order_id", orderId); baseDao.execute(apply_cate, paramMap); //结束审批,更新流程实例表状态 workflowCoreService.finishWorkFlow(base); }else{ NodeDealEntity entity = new NodeDealEntity(); List userList = new ArrayList(); Map dealer = new HashMap(); dealer.put("USER_ID",base.getCreaterid()); dealer.put("USER_NAME",base.getCreatername()); dealer.put("IS_ADMIN","1"); userList.add(dealer); entity.setDealerList(userList); entity.setDealer_type(2); workflowCoreService.toNode(base,Constants.BJSLSQ, entity); spare_part_apply.setState(Constants.SPARE_PART_APPLY_STATE_B); } spare_part_apply.update(); } return ""; } /** * 审核不同意数据字典 * @param params * @return */ @Override public List getNoteKeyList(String sjzdbs){ StringBuilder sql = new StringBuilder(); sql.append("SELECT\n" + " id,categoryname name\n" + "FROM\n" + " CONFIG_DATA_DICTIONARY_CATEGORY\n" + "WHERE\n" + " parentid IN (\n" + " SELECT\n" + " id\n" + " FROM\n" + " CONFIG_DATA_DICTIONARY_CATEGORY\n" + " WHERE\n" + " categorykey =:bjsl\n" + " ) "); Map paramMap = new HashMap(); paramMap.put("bjsl", sjzdbs); return baseDao.queryForList(sql.toString(),paramMap); } }