package com.engine.tjbankSocket.impl; import com.cloudstore.dev.api.bean.MessageBean; import com.cloudstore.dev.api.bean.MessageType; import com.cloudstore.dev.api.util.Util_Message; import com.engine.tjbankSocket.SocketExecute; import com.engine.util.XMLUtils; import weaver.conn.RecordSet; import weaver.file.Prop; import weaver.general.BaseBean; import weaver.general.StringUtil; import weaver.general.Util; import weaver.soa.workflow.request.RequestService; import java.io.IOException; import java.util.*; /** * @author 13 */ public class CWGLSocketExecute extends BaseBean implements SocketExecute { @Override public String execute(Map param) { Map paramMap = param; writeLog("paramMap==="+paramMap); String oaTrvlBnsExpnsAcctNo = Util.null2String(paramMap.get("oaTrvlBnsExpnsAcctNo")); String apprvrNo = Util.null2String(paramMap.get("apprvrNo")); String apprvrName = Util.null2String(paramMap.get("apprvrName")); String flowStatus = Util.null2String(paramMap.get("flowStatus")); String sgntrOpn = Util.null2String(paramMap.get("sgntrOpn")); sgntrOpn = apprvrName + "(" + apprvrNo + "):" + sgntrOpn; Map resultMap = null; String tableName = ""; int userid = 0; try { if(oaTrvlBnsExpnsAcctNo.startsWith("BTSQD")){ tableName = "formtable_main_295"; // resultMap = getBeanByOAnum(oaTrvlBnsExpnsAcctNo, "formtable_main_281"); }else if(oaTrvlBnsExpnsAcctNo.startsWith("FHBTSQD")) { tableName = "formtable_main_398"; // resultMap = getBeanByOAnum(oaTrvlBnsExpnsAcctNo, ""); }else { throw new Exception("未找到编号 '"+oaTrvlBnsExpnsAcctNo+"' 对应的表单"); }; resultMap = getBeanByOAnum(oaTrvlBnsExpnsAcctNo, tableName); } catch (Exception e) { e.printStackTrace(); paramMap.put("status","FAIL"); paramMap.put("code","1"); paramMap.put("desc",e.getMessage()); return XMLUtils.CW2XML(paramMap, "1", e.getMessage()); } try { userid = getHrmidByWorkCode(apprvrNo); } catch (Exception e) { paramMap.put("status","FAIL"); paramMap.put("code","1"); paramMap.put("desc",e.getMessage()); e.printStackTrace(); } String id = resultMap.get("id"); int requestid = Util.getIntValue(resultMap.get("requestid")); writeLog("requestid==="+requestid); if (requestid == 0) { paramMap.put("status","FAIL"); paramMap.put("code","1"); paramMap.put("desc","流程未找到"); return XMLUtils.CW2XML(paramMap, "1", "流程未找到"); } // if (userid == 0) { // return XMLUtils.CW2XML(paramMap, "1", "人员未找到"); // } RequestService requestService = new RequestService(); boolean istrue = false; if ("0".equals(flowStatus)) { sgntrOpn = sgntrOpn + "(驳回)"; istrue = requestService.nextNodeByReject(requestid, 1, sgntrOpn); } else if ("1".equals(flowStatus)) { sgntrOpn = sgntrOpn + "(记账前退单)"; istrue = requestService.nextNodeByReject(requestid, 1, sgntrOpn); } else if ("2".equals(flowStatus)) { sgntrOpn = sgntrOpn + "(记账后退单)"; istrue = requestService.nextNodeByReject(requestid, 1, sgntrOpn); } else { istrue = requestService.nextNodeBySubmit(null, requestid, 1, sgntrOpn); } writeLog("istrue==="+istrue); if (istrue) { try { updateStatus(requestid, flowStatus,tableName); String sqr = getsqrbyBH(oaTrvlBnsExpnsAcctNo, tableName); if("3".equals(flowStatus)){ sendMsgForSuccess(sqr,oaTrvlBnsExpnsAcctNo,requestid); } } catch (Exception e) { e.printStackTrace(); paramMap.put("status","FAIL"); paramMap.put("code","1"); paramMap.put("desc",e.getMessage()); return XMLUtils.CW2XML(paramMap, "1", e.getMessage()); } paramMap.put("status","COMPLETE"); return XMLUtils.CW2XML(paramMap, "0", ""); } else { paramMap.put("status","FAIL"); paramMap.put("code","1"); paramMap.put("desc","流程提交失败"); return XMLUtils.CW2XML(paramMap, "1", "流程提交失败"); } } private void sendMsgForSuccess(String userid, String oaTrvlBnsExpnsAcctNo, int requestid) { MessageType messageType = MessageType.newInstance(1674); // 消息来源(见文档第四点补充 必填) Set userIdList = new HashSet<>(); // 接收人id 必填 String[] useridArr = userid.split(","); String proplinkUrl = Prop.getPropValue("subsidy_reminder", "linkUrl"); String proplinkMobileUrl = Prop.getPropValue("subsidy_reminder", "linkMobileUrl"); for (String s : useridArr) { userIdList.add(s); } String title = "您有新的差旅补助到账,请您查收"; // 标题 String context = "差补报销("+oaTrvlBnsExpnsAcctNo+")"; String linkUrl = StringUtil.isEmpty(proplinkUrl) ? "" : proplinkUrl+requestid; // PC端链接 String linkMobileUrl = StringUtil.isEmpty(proplinkMobileUrl) ? "" :proplinkMobileUrl+requestid; // 移动端链接 try { MessageBean messageBean = Util_Message.createMessage(messageType, userIdList, title, context, linkUrl, linkMobileUrl); messageBean.setCreater(1);// 创建人id //message.setBizState("0");// 需要修改消息为已处理等状态时传入,表示消息最初状态为待处理 //messageBean.setTargetId("121|22"); //消息来源code +“|”+业务id需要修改消息为已处理等状态时传入 Util_Message.store(messageBean); } catch (IOException e) { e.printStackTrace(); } } private void updateStatus(int requestid, String flowStatus ,String tableName) throws Exception { try { RecordSet recordSet = new RecordSet(); recordSet.executeUpdate("update "+tableName+" set cwxtzt = ? where requestId = ?", flowStatus, requestid); } catch (Exception e) { throw new Exception("更新状态失败"); } } public Map getBeanByOAnum(String oaTrvlBnsExpnsAcctNo, String tableName) throws Exception { RecordSet recordSet = new RecordSet(); HashMap resultMap = new HashMap<>(); String sql = "select * from " + tableName + " where djbh = ?"; writeLog("getBeanByOAnumSql"+sql); recordSet.executeQuery(sql, oaTrvlBnsExpnsAcctNo); if (recordSet.next()) { resultMap.put("id", Util.null2String(recordSet.getString("id"))); resultMap.put("requestid", Util.null2String(recordSet.getString("requestid"))); return resultMap; } else { throw new Exception("编号对应单据不存在"); } } /** * 获取单据的 * @param oaTrvlBnsExpnsAcctNo * @param tableName * @return * @throws Exception */ public String getsqrbyBH(String oaTrvlBnsExpnsAcctNo, String tableName) throws Exception { RecordSet recordSet = new RecordSet(); HashMap resultMap = new HashMap<>(); String sql = "select jbrxm from " + tableName + " where djbh = ?"; recordSet.executeQuery(sql, oaTrvlBnsExpnsAcctNo); if (recordSet.next()) { return Util.null2String(recordSet.getString("jbrxm")); } else { throw new Exception("编号对应单据不存在"); } } public int getHrmidByWorkCode(String workcode) throws Exception { RecordSet recordSet = new RecordSet(); String sql = "select id from HRMRESOURCE where workcode = ?"; recordSet.executeQuery(sql, workcode); if (recordSet.next()) { return Util.getIntValue(recordSet.getString("id")); } else { throw new Exception("审批人不存在"); } } }