From 56082f3d058add293b8930370b5e061be2bda6fa Mon Sep 17 00:00:00 2001 From: shilei <798989044@qq.com> Date: Sun, 9 Oct 2022 15:02:25 +0800 Subject: [PATCH] =?UTF-8?q?#HTXC-1#=20=E5=88=9D=E5=A7=8B=E5=8C=96=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/.gitignore | 8 + .../service/impl/OldOaBrowserService.java | 277 ++++++++ .../api/htsc/smsd/AddYfkDataActionApi.java | 9 + .../com/api/htsc/trip/AllowanceActionApi.java | 9 + .../cmd/AddContractDataCmd.java | 55 ++ .../service/AdjustFundService.java | 15 + .../service/impl/AdjustFundServiceImpl.java | 55 ++ .../engine/htsc/smsd/dao/AddByLcbhCMD.java | 138 ++++ .../htsc/smsd/service/AddByLcbhService.java | 7 + .../service/impl/AddByLcbhServiceImpl.java | 15 + .../engine/htsc/smsd/util/AddDataUtil.java | 141 +++++ .../htsc/smsd/web/AddYfkDataAction.java | 45 ++ .../engine/htsc/trip/pojo/AllowancePO.java | 125 ++++ .../com/engine/htsc/trip/util/AjaxResult.java | 113 ++++ .../engine/htsc/trip/web/AllowanceAction.java | 66 ++ .../webservices/jtgl/AccountingDetail.java | 147 +++++ .../htsc/cwtz/AddBudgetMidTable.java | 271 ++++++++ .../htsc/job/workflow/AgentSetJob.java | 590 ++++++++++++++++++ .../htsc/payment/AdvancePaymentJob.java | 318 ++++++++++ .../htsc/yfkqrlc/util/ActionsUtil.java | 156 +++++ .../htsc/zgk/AddDefaultSendMessageAction.java | 124 ++++ .../htsc/zgk/AddSendMessageAction.java | 130 ++++ 22 files changed, 2814 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 src/main/java/com/api/browser/service/impl/OldOaBrowserService.java create mode 100644 src/main/java/com/api/htsc/smsd/AddYfkDataActionApi.java create mode 100644 src/main/java/com/api/htsc/trip/AllowanceActionApi.java create mode 100644 src/main/java/com/engine/htsc/contractmanagement/cmd/AddContractDataCmd.java create mode 100644 src/main/java/com/engine/htsc/financialadjustment/service/AdjustFundService.java create mode 100644 src/main/java/com/engine/htsc/financialadjustment/service/impl/AdjustFundServiceImpl.java create mode 100644 src/main/java/com/engine/htsc/smsd/dao/AddByLcbhCMD.java create mode 100644 src/main/java/com/engine/htsc/smsd/service/AddByLcbhService.java create mode 100644 src/main/java/com/engine/htsc/smsd/service/impl/AddByLcbhServiceImpl.java create mode 100644 src/main/java/com/engine/htsc/smsd/util/AddDataUtil.java create mode 100644 src/main/java/com/engine/htsc/smsd/web/AddYfkDataAction.java create mode 100644 src/main/java/com/engine/htsc/trip/pojo/AllowancePO.java create mode 100644 src/main/java/com/engine/htsc/trip/util/AjaxResult.java create mode 100644 src/main/java/com/engine/htsc/trip/web/AllowanceAction.java create mode 100644 src/main/java/weaver/interfaces/htsc/cus/webservices/jtgl/AccountingDetail.java create mode 100644 src/main/java/weaver/interfaces/htsc/cwtz/AddBudgetMidTable.java create mode 100644 src/main/java/weaver/interfaces/htsc/job/workflow/AgentSetJob.java create mode 100644 src/main/java/weaver/interfaces/htsc/payment/AdvancePaymentJob.java create mode 100644 src/main/java/weaver/interfaces/htsc/yfkqrlc/util/ActionsUtil.java create mode 100644 src/main/java/weaver/interfaces/htsc/zgk/AddDefaultSendMessageAction.java create mode 100644 src/main/java/weaver/interfaces/htsc/zgk/AddSendMessageAction.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/src/main/java/com/api/browser/service/impl/OldOaBrowserService.java b/src/main/java/com/api/browser/service/impl/OldOaBrowserService.java new file mode 100644 index 0000000..34fc332 --- /dev/null +++ b/src/main/java/com/api/browser/service/impl/OldOaBrowserService.java @@ -0,0 +1,277 @@ +package com.api.browser.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.api.browser.bean.ListHeadBean; +import com.api.browser.service.BrowserService; +import com.api.browser.util.*; +import com.engine.htsc.payment.util.HttpUtil; +import com.google.common.collect.Maps; +import lombok.extern.slf4j.Slf4j; +import weaver.conn.RecordSet; +import weaver.general.Util; +import weaver.interfaces.htsc.util.TokenUtil; +import weaver.systeminfo.SystemEnv; +import weaver.workflow.request.RequestBaseUtil; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Slf4j +public class OldOaBrowserService extends BrowserService { + + @Override + public Map getBrowserData(Map paramMap) throws Exception { + HashMap localHashMap1 = new HashMap(); + JSONArray jsonArray =new JSONArray(); + List dataList = new ArrayList(); + + //获取起始值 + int min = Integer.valueOf(paramMap.get("min").toString()); + //获取末尾值 + int max = Integer.valueOf(paramMap.get("max").toString()); + //用户ID + String userId = Util.null2String(paramMap.get("wfCreater")); + String type = "2"; + //标题 + String requestName = Util.null2String(paramMap.get("title")); + //流程编号 + String workFlowNum = Util.null2String(paramMap.get("workflownum")); + //创建人 + String creater = Util.null2String(paramMap.get("creater")); + + int pageNumber = Integer.parseInt(Util.null2String(paramMap.get("current"))); + int pageSize = Integer.parseInt(Util.null2String(paramMap.get("pageSize"))); + + + JSONObject jsonObject=new JSONObject(); + jsonObject.put("title",requestName); + jsonObject.put("workFlowNum",workFlowNum); + jsonObject.put("drafterName",creater); + jsonObject.put("pageNumber",pageNumber); + jsonObject.put("pageSize",pageSize); + jsonObject.put("type",type); + + try { + RecordSet rs = new RecordSet(); + String workCodesql = " select workcode from hrmresource where id=?"; + rs.executeQuery(workCodesql,userId); + if (rs.next()){ + jsonObject.put("userId",rs.getString("workcode")); + log.debug("请求参数:jsonObject: [{}]",jsonObject); + //查询接口 + String urlSql = "select xtmc,qqdz,appid from UF_LCJKDZ where sfqy=0"; + rs.executeQuery(urlSql); + List> urlList = new ArrayList<>(); + while (rs.next()){ + Map map = Maps.newHashMap(); + map.put("xtmc",rs.getString("xtmc")); + map.put("qqdz",rs.getString("qqdz")); + map.put("appid",rs.getString("appid")); + urlList.add(map); + } + + for (Map url:urlList){ + String responsestr = ""; + if (url.get("appid") != null && !"".equals(url.get("appid"))){ + responsestr = TokenUtil.post(url.get("xtmc"),"/api/ohtersystem/workflow/todos",jsonObject.toJSONString(),url.get("appid")); + }else { + responsestr = HttpUtil.postApplicationJson(url.get("qqdz")+"todos", jsonObject.toJSONString()); + } + log.debug("responsestr:[{}]",responsestr); + if (!"".equals(responsestr)){ + JSONObject jsonObjectstr = JSONObject.parseObject(responsestr); + if(jsonObjectstr!=null&&jsonObjectstr.size()>0){ + jsonArray.addAll(jsonObjectstr.getJSONArray("data")); + } + } + } + localHashMap1.put(BrowserConstant.BROWSER_RESULT_TOTAL,jsonArray.size()); + /** + * 分页 + */ + if (max > jsonArray.size()){ + max = jsonArray.size(); + } + for (int i=(min-1);i dataMap = new HashMap(); + Map jsonMap = (Map) jsonArray.get(i); + dataMap.put(BrowserConstant.BROWSER_LIST_CHECKBOX_FIELDNAME,jsonMap.get("url")+"^"+jsonMap.get("requestid")); +// dataMap.put("id",jsonMap.get("url")+"^"+jsonMap.get("type")); + dataMap.put("id",jsonMap.get("url")+"^"+jsonMap.get("requestid")); + dataMap.put("title",jsonMap.get("title")); + dataMap.put("workflownum",jsonMap.get("referencenumber")); + dataMap.put("creater",jsonMap.get("createrName")); + dataMap.put("createdate",jsonMap.get("createDate")+" "+jsonMap.get("createTime")); + dataMap.put("url",jsonMap.get("url")); + dataList.add(dataMap); + } + } + + }catch (Exception e){ + log.error("sync fund status fail, catch error: [{}]", e); + } + + + + List localObject = new ArrayList(); + localObject.add(new ListHeadBean(BrowserConstant.BROWSER_LIST_CHECKBOX_FIELDNAME, BoolAttr.TRUE)); + localObject.add(new ListHeadBean("id", BoolAttr.TRUE).setIsPrimarykey(BoolAttr.TRUE)); + ListHeadBean localListHeadBean = new ListHeadBean("title", SystemEnv.getHtmlLabelName(502369, this.user.getLanguage()), 1, BoolAttr.TRUE); + localListHeadBean.setOldWidth("25%"); + localObject.add(localListHeadBean); + localListHeadBean = new ListHeadBean("workflownum", SystemEnv.getHtmlLabelName(19502, this.user.getLanguage())); + localListHeadBean.setOldWidth("25%"); + localObject.add(localListHeadBean); + localListHeadBean = new ListHeadBean("creater", SystemEnv.getHtmlLabelName(882, this.user.getLanguage())); + localListHeadBean.setOldWidth("25%"); + localObject.add(localListHeadBean); + localListHeadBean = new ListHeadBean("createdate", SystemEnv.getHtmlLabelName(1339, this.user.getLanguage())); + localListHeadBean.setOldWidth("25%"); + localObject.add(localListHeadBean); + + + localHashMap1.put(BrowserConstant.BROWSER_RESULT_COLUMN, localObject); + localHashMap1.put(BrowserConstant.BROWSER_RESULT_DATA, dataList); + localHashMap1.put(BrowserConstant.BROWSER_RESULT_TYPE, Integer.valueOf(BrowserDataType.LIST_SPLIT_DATA_O.getTypeid())); + return (Map)localHashMap1; + } + + public Map getBrowserConditionInfo(Map paramMap) + throws Exception + { + HashMap localHashMap = new HashMap(); + ArrayList localArrayList1 = new ArrayList(); + ConditionFactory localConditionFactory = new ConditionFactory(this.user); + localArrayList1.add(localConditionFactory.createCondition(ConditionType.INPUT, 19502, "workflownum")); + localArrayList1.add(localConditionFactory.createCondition(ConditionType.INPUT, 882, "creater")); + localArrayList1.add(localConditionFactory.createCondition(ConditionType.INPUT, 502369, "title")); + + + + + localHashMap.put(BrowserConstant.BROWSER_RESULT_CONDITIONS, localArrayList1); + return (Map)(Map)localHashMap; + } + + public Map getMultBrowserDestData(Map var1){ + HashMap var2 = new HashMap(); + String var3 = Util.null2String(var1.get(BrowserConstant.BROWSER_MULT_DEST_SELECTIDS)); + ArrayList dataList = new ArrayList(); + if ("".equals(var3)) { + return var2; + } else { + String[] values = var3.split(","); + Map idMap = new HashMap<>(); + String id=""; + for (int i=0;i1){ + String systemName = val[0].split("/")[3];//系统标识 xcoa、htoa + if (idMap.get(systemName) == null){ + idMap.put(systemName,val[1]); + }else { + String ids = idMap.get(systemName) +","+val[1]; + idMap.put(systemName,ids); + } + } + } + + log.debug("请求参数:ids: [{}]",idMap); + try { + RecordSet rs = new RecordSet(); + //查询接口 + String urlSql = "select xtmc,qqdz,appid from UF_LCJKDZ where sfqy=0"; + rs.executeQuery(urlSql); + Map urlMap = new HashMap<>(); + while (rs.next()){ + if (idMap.get(rs.getString("xtmc")) !=null){ + String ids = idMap.get(rs.getString("xtmc")); + String xtmc = rs.getString("xtmc"); + String url = rs.getString("qqdz"); + String appid = rs.getString("appid"); + JSONObject jsonObject=new JSONObject(); + jsonObject.put("requestIds",ids); + jsonObject.put("xtmc",rs.getString("xtmc")); + String responsestr = ""; + if (appid != null && !"".equals(appid)){ + responsestr = TokenUtil.post(xtmc,"/api/ohtersystem/workflow/getRequestData",jsonObject.toJSONString(),appid); + }else { + responsestr = HttpUtil.postApplicationJson(url+"getRequestData", jsonObject.toJSONString()); + } + + log.debug("responsestr:[{}]",responsestr); + if (!"".equals(responsestr)){ + JSONObject jsonObjectstr = JSONObject.parseObject(responsestr); + if(jsonObjectstr!=null&&jsonObjectstr.size()>0){ + dataList.addAll(jsonObjectstr.getJSONArray("data")); + } + } + } + } + }catch (Exception e){ + log.error("sync fund status fail, catch error: [{}]", e); + } +// String var4 = "select requestid,creatertype,requestname,requestmark,requestnamenew,creater,createdate,createtime from workflow_requestbase where requestid in (" + ids + ")"; +// RecordSet rs = new RecordSet(); +// rs.executeSql(var4); +// ResourceComInfo var6 = new ResourceComInfo(); +// CustomerInfoComInfo var7 = new CustomerInfoComInfo(); +// ArrayList var8 = new ArrayList(); +// +// while(rs.next()) { +// String var9 = Util.null2String(rs.getString("requestid")); +// String var10 = Util.null2String(rs.getString("creater")); +// String var11 = Util.null2String(rs.getString("createdate")); +// String var12 = Util.null2String(rs.getString("createtime")); +// String var13 = Util.null2String(rs.getString("requestname")); +//// String var14 = this.getRequestname("", var9 + "+" + this.user.getLanguage() + "+" + var13); +// String var15 = Util.null2String(rs.getString("createtype")); +// if ("1".equals(var15)) { +// var10 = var7.getCustomerInfoname(var10); +// } else { +// var10 = var6.getResourcename(var10); +// } +// +// HashMap var16 = new HashMap(); +// var16.put("id", var9); +// var16.put("title", var13); +// var16.put("workflownum", Util.null2String(rs.getString("requestmark"))); +//// var16.put("titlespan", var13); +//// var16.put("titlenew", var14); +// var16.put("creater", var10); +// var16.put("createdate", var11 + " " + var12); +// var8.add(var16); +// } + + var2.put(BrowserConstant.BROWSER_RESULT_DATA, dataList); + var2.put(BrowserConstant.BROWSER_RESULT_TYPE, BrowserDataType.LIST_ALL_DATA.getTypeid()); + return var2; + } + } + + + public String getRequestname(String var1, String var2) { + int var3 = Util.getIntValue(var2.substring(0, var2.indexOf("+"))); + var2 = var2.substring(var2.indexOf("+") + 1); + int var4 = Util.getIntValue(var2.substring(0, var2.indexOf("+"))); + String var5 = var2.substring(var2.indexOf("+") + 1); + RecordSet var6 = new RecordSet(); + var6.executeQuery("select id,formid,isbill from workflow_base t1 where exists (select 1 from workflow_requestbase t2 where t2.workflowid = t1.id and t2.requestid = ? )", new Object[]{var3}); + int var7 = 0; + int var8 = 0; + int var9 = 0; + if (var6.next()) { + var7 = var6.getInt(1); + var8 = var6.getInt(2); + var9 = var6.getInt(3); + } + + RequestBaseUtil var10 = new RequestBaseUtil(); + var5 = var10.formatRequestname(var5, var7 + "", var3 + "", var9, var8, var4); + return var5; + } +} diff --git a/src/main/java/com/api/htsc/smsd/AddYfkDataActionApi.java b/src/main/java/com/api/htsc/smsd/AddYfkDataActionApi.java new file mode 100644 index 0000000..5e59292 --- /dev/null +++ b/src/main/java/com/api/htsc/smsd/AddYfkDataActionApi.java @@ -0,0 +1,9 @@ +package com.api.htsc.smsd; + +import com.engine.htsc.smsd.web.AddYfkDataAction; + +import javax.ws.rs.Path; + +@Path("/htsc/yfk") +public class AddYfkDataActionApi extends AddYfkDataAction { +} diff --git a/src/main/java/com/api/htsc/trip/AllowanceActionApi.java b/src/main/java/com/api/htsc/trip/AllowanceActionApi.java new file mode 100644 index 0000000..e14b038 --- /dev/null +++ b/src/main/java/com/api/htsc/trip/AllowanceActionApi.java @@ -0,0 +1,9 @@ +package com.api.htsc.trip; + +import com.engine.htsc.trip.web.AllowanceAction; +import javax.ws.rs.Path; + +@Path("/htsc/trip") +public class AllowanceActionApi extends AllowanceAction { + +} diff --git a/src/main/java/com/engine/htsc/contractmanagement/cmd/AddContractDataCmd.java b/src/main/java/com/engine/htsc/contractmanagement/cmd/AddContractDataCmd.java new file mode 100644 index 0000000..a921677 --- /dev/null +++ b/src/main/java/com/engine/htsc/contractmanagement/cmd/AddContractDataCmd.java @@ -0,0 +1,55 @@ +package com.engine.htsc.contractmanagement.cmd; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.cube.biz.CodeBuilder; +import weaver.conn.RecordSet; +import java.util.HashMap; +import java.util.Map; + +public class AddContractDataCmd extends AbstractCommonCommand> { + public AddContractDataCmd(Map params){ + this.params = params; + } + @Override + public BizLogContext getLogContext() { + return null; + } + @Override + public Map execute(CommandContext commandContext) { + Map responseMap = new HashMap<>(); + + try { + RecordSet rs = new RecordSet(); + for (Map.Entry map : params.entrySet()){ + String tableName = map.getKey(); + Map dataMap = (Map)map.getValue(); + String names=""; + String values=""; + for (Map.Entry entry :dataMap.entrySet()){ + if (entry.getKey().equals("ID")){ + continue; + } + names = names + entry.getKey() +","; + values = values +"'"+entry.getValue()+"'" +","; + }; + names = names.substring(0,names.length()-1); + values = values.substring(0,values.length()-1); + String insertSql = "insert into "+tableName+" ("+names+") values ("+values+")"; + boolean response = rs.executeUpdate(insertSql); + if (response){ + responseMap.put("code","0"); + }else { + responseMap.put("code","400"); + responseMap.put("message","插入失败"); + } + } + }catch (Exception e){ + responseMap.put("code","500"); + responseMap.put("message",e.getMessage()); + } + + return responseMap; + } +} diff --git a/src/main/java/com/engine/htsc/financialadjustment/service/AdjustFundService.java b/src/main/java/com/engine/htsc/financialadjustment/service/AdjustFundService.java new file mode 100644 index 0000000..cb3006e --- /dev/null +++ b/src/main/java/com/engine/htsc/financialadjustment/service/AdjustFundService.java @@ -0,0 +1,15 @@ +package com.engine.htsc.financialadjustment.service; + + +public interface AdjustFundService { + + /** + * 财务调整流程预算 + */ + String doBudget(String rid) throws Exception; + + /** + * 财务调整核算 + */ + String doCost(String rid) throws Exception; +} diff --git a/src/main/java/com/engine/htsc/financialadjustment/service/impl/AdjustFundServiceImpl.java b/src/main/java/com/engine/htsc/financialadjustment/service/impl/AdjustFundServiceImpl.java new file mode 100644 index 0000000..4f27686 --- /dev/null +++ b/src/main/java/com/engine/htsc/financialadjustment/service/impl/AdjustFundServiceImpl.java @@ -0,0 +1,55 @@ +package com.engine.htsc.financialadjustment.service.impl; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.engine.core.impl.Service; +import com.engine.htsc.financialadjustment.service.AdjustFundService; +import com.engine.htsc.financialadjustment.util.BizUtil; +import com.engine.htsc.payment.pojo.BudgetDTO; +import com.engine.htsc.payment.pojo.CostAccountDto; +import com.engine.htsc.payment.util.BizUtils; +import weaver.general.BaseBean; +import weaver.interfaces.htsc.cus.HTUtil; + +import java.util.Map; + +public class AdjustFundServiceImpl extends Service implements AdjustFundService { + + private final HTUtil htUtil = new HTUtil(); + + private final BaseBean log = new BaseBean(); + + @Override + public String doBudget(String rid) throws Exception { + log.writeLog("财务调整流程预算 requestId:" + rid); + BudgetDTO budgetDTO = BizUtil.getAdjustBudget(rid, "3"); + if (budgetDTO == null) { + throw new Exception("构建财务调整流程预算数据报文出错,budgetDTO为空"); + } + BizUtils bizUtils = new BizUtils(); + Map paras = bizUtils.convertDtoToMap(budgetDTO); + log.writeLog("财务调整流程预算预占 入参:" + JSON.toJSONString(paras)); + String ys = htUtil.budgetCommit(paras); + log.writeLog("财务调整流程预算预占 出参:" + ys); + //预占执行完后实占 + budgetDTO.setBillStatus("1"); + paras = bizUtils.convertDtoToMap(budgetDTO); + log.writeLog("财务调整流程预算实占 入参:" + JSON.toJSONString(paras)); + String response = htUtil.budgetCommit(paras); + log.writeLog("财务调整流程预算实占 返回值:" + response); + return response; + } + + @Override + public String doCost(String rid) throws Exception { + log.writeLog("财务调整流程核算 requestId:" + rid); + CostAccountDto adjustCost = BizUtil.getAdjustCost(rid, "fnaj"); + @SuppressWarnings("unchecked") + Map paras = JSONObject.parseObject(JSON.toJSONString(adjustCost)); + log.writeLog("财务调整流程核算 入参:" + JSON.toJSONString(paras)); + String resp = htUtil.saveFydj(paras); + log.writeLog("财务调整流程核算 返回值:" + resp); + return resp; + } +} diff --git a/src/main/java/com/engine/htsc/smsd/dao/AddByLcbhCMD.java b/src/main/java/com/engine/htsc/smsd/dao/AddByLcbhCMD.java new file mode 100644 index 0000000..c4ef9b3 --- /dev/null +++ b/src/main/java/com/engine/htsc/smsd/dao/AddByLcbhCMD.java @@ -0,0 +1,138 @@ +package com.engine.htsc.smsd.dao; + +import com.engine.common.biz.AbstractCommonCommand; +import com.engine.common.entity.BizLogContext; +import com.engine.core.interceptor.CommandContext; +import com.engine.htsc.smsd.util.AddDataUtil; +import com.greenpineyu.fel.function.operator.Add; +import weaver.conn.RecordSet; +import weaver.conn.RecordSetTrans; +import weaver.formmode.setup.ModeRightInfo; +import weaver.general.Util; +import weaver.workflow.logging.Logger; +import weaver.workflow.logging.LoggerFactory; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +public class AddByLcbhCMD extends AbstractCommonCommand> { + Logger logger = LoggerFactory.getLogger(AddByLcbhCMD.class); + + @Override + public BizLogContext getLogContext() { + return null; + } + + public AddByLcbhCMD(Map params) { + this.params = params; + } + + @Override + public Map execute(CommandContext commandContext) { + logger.info("===========进入Dao层AddByLcbhCMD方法==================="); + Map result = new HashMap<>(); + final String[] mainFields = {"lcbh", "hjxxjezfmx", "ngr", "szbm", "lclx"}; + RecordSet rs = new RecordSet(); + RecordSetTrans rst = new RecordSetTrans(); + String sql; + String lcbh = Util.null2String(params.get("lcbh")).replaceAll(" ",""); + logger.info("=============获取到的流程编号是:" + lcbh); + // 1、确认此付款流程编号是否在预付款台账报表中已经存在数据 + sql = "select count(*) as counts from uf_PrepayMageAccRep where fklcbh = '" + lcbh + "'"; + rs.executeQuery(sql); + if (rs.next()) { + if ("0".equals(Util.null2String(rs.getString("counts")))) { + // 2、付款流程数据搜集准备插入预付款台账表 + // 2.1、获取流程编号对应的主表名 + String mainTableName = AddDataUtil.getMaintableName("lcbh", lcbh); + if ("".equals(mainTableName)) { + result.put("isSuccess", "false"); + result.put("message", "流程编号不存在,请重新输入"); + } else { + // 3、确认流程是否已办结 + String lcbjsj = AddDataUtil.isFinished(lcbh, mainTableName); + if (!"".equals(lcbjsj)) { + // 4、获取需要插入台账的数据 "lcbh","hjxxjezfmx","ngr","szbm" + Map mainInfo = AddDataUtil.getMainInfo(mainFields, lcbh, mainTableName); + // 流程编号-lcbh + String jbr = Util.null2String(mainInfo.get("ngr")); + String jbbm = Util.null2String(mainInfo.get("szbm")); + String lclx = Util.null2String(mainInfo.get("lclx")); + String lczbm = Util.null2String(getLczbmByLcbh(lcbh)); + + String htbh = AddDataUtil.getDtFieldValue("HTBH", "4", lcbh, mainTableName); + String skf = AddDataUtil.getDtFieldValue("skdw", "11", lcbh, mainTableName); + String fyqrlcbh = ""; + String kpf = ""; + String yfkje = "".equals(Util.null2String(mainInfo.get("hjxxjezfmx"))) ? "0.00" : Util.null2String(mainInfo.get("hjxxjezfmx")); + String yhxje = "0.00"; + // 因为已核销金额默认为0,所以待核销金额默认为已付款金额 + String dhxje = yfkje; + // 0是1否 + String sfyq = "".equals(AddDataUtil.getSfyq(lcbjsj)) ? "1" : "0"; + String yqts = "".equals(AddDataUtil.getSfyq(lcbjsj)) ? "0" : AddDataUtil.getSfyq(lcbjsj); + // 流程requetsId + String requestId = AddDataUtil.getRequestIdByLcbh(lcbh, mainTableName); + // 付款状态,默认为1,待付款 + String fkzt = "1"; + // 建模权限所需字段 + String formmodeid = ""; + String modedatacreater = "1"; + String modedatacreatertype = "0"; + String modeuuid = UUID.randomUUID().toString(); + rs.execute("select k.id from modeinfo k inner join workflow_bill l on formid = l.id where l.tablename = 'uf_PrepayMageAccRep'"); + if (rs.next()) { + formmodeid = Util.null2String(rs.getString("id")); + } + try { + rst.setAutoCommit(false); + String insertSql = "insert into uf_PrepayMageAccRep(REQUTID,fklcbh,jbr,jbbm,lcbjsj,htbh,skf,fyqrlcbh," + + "kpf,yfkje,yhxje,dhxje,sfyq,yqts,formmodeid,modedatacreater,modedatacreatertype,modeuuid,FKZT,LCLX,LCZBM) " + + "VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; + writeLog("即将执行的insert sql 是:insert into uf_PrepayMageAccRep(REQUTID,fklcbh,jbr,jbbm,lcbjsj,htbh,skf,fyqrlcbh," + + "kpf,yfkje,yhxje,dhxje,sfyq,yqts,formmodeid,modedatacreater,modedatacreatertype,modeuuid) " + + "VALUES ('" + requestId + "','" + lcbh + "','" + jbr + "','" + jbbm + "','" + lcbjsj + "','" + htbh + "','" + skf + "','" + fyqrlcbh + "','" + kpf + "','" + yfkje + "','" + yhxje + "','" + dhxje + "','" + sfyq + "','" + yqts + "','" + formmodeid + "','" + modedatacreater + "','" + modedatacreatertype + "','" + modeuuid + "')"); + rst.executeUpdate(insertSql, requestId, lcbh, jbr, jbbm, lcbjsj, htbh, skf, fyqrlcbh, + kpf, yfkje, yhxje, dhxje, sfyq, yqts, formmodeid, modedatacreater, modedatacreatertype, modeuuid, fkzt, lclx, lczbm); + rst.commit(); + // 权限重构 + int dataId = AddDataUtil.getDataIdByUUID(modeuuid, "uf_PrepayMageAccRep"); + ModeRightInfo modeRightInfo = new ModeRightInfo(); + modeRightInfo.editModeDataShare(1, Integer.parseInt(formmodeid), dataId); + result.put("isSuccess", "true"); + result.put("message", "新增成功"); + } catch (Exception e) { + e.getMessage(); + writeLog("============新增过程发生错误:" + e.getMessage()); + result.put("isSuccess", "false"); + result.put("message", "新增失败,更新过程发生错误,请联系管理员"); + } + } else { + result.put("isSuccess", "false"); + result.put("message", "流程未办结,暂不能发起新增,请重新输入"); + } + } + } else { + result.put("isSuccess", "false"); + result.put("message", "付款流程信息已存在"); + } + } else { + result.put("isSuccess", "false"); + result.put("message", "付款流程重复性检验发生错误,请联系管理员处理"); + } + return result; + } + + + private String getLczbmByLcbh(String lcbh) { + RecordSet rs = new RecordSet(); + String sql = "select t1.tablename from workflow_bill t1,workflow_base t2,workflow_requestbase t3 where t1.id =t2.formid and t2.id = t3.workflowid and t3.REQUESTMARK = ?"; + rs.executeQuery(sql,lcbh); + if (rs.next()){ + return Util.null2String(rs.getString("tablename")); + }else { + return ""; + } + } +} diff --git a/src/main/java/com/engine/htsc/smsd/service/AddByLcbhService.java b/src/main/java/com/engine/htsc/smsd/service/AddByLcbhService.java new file mode 100644 index 0000000..ebb00a7 --- /dev/null +++ b/src/main/java/com/engine/htsc/smsd/service/AddByLcbhService.java @@ -0,0 +1,7 @@ +package com.engine.htsc.smsd.service; + +import java.util.Map; + +public interface AddByLcbhService { + Map addYfkDataByLcbh(Map params); +} diff --git a/src/main/java/com/engine/htsc/smsd/service/impl/AddByLcbhServiceImpl.java b/src/main/java/com/engine/htsc/smsd/service/impl/AddByLcbhServiceImpl.java new file mode 100644 index 0000000..490e119 --- /dev/null +++ b/src/main/java/com/engine/htsc/smsd/service/impl/AddByLcbhServiceImpl.java @@ -0,0 +1,15 @@ +package com.engine.htsc.smsd.service.impl; + + +import com.engine.core.impl.Service; +import com.engine.htsc.smsd.dao.AddByLcbhCMD; +import com.engine.htsc.smsd.service.AddByLcbhService; + +import java.util.Map; + +public class AddByLcbhServiceImpl extends Service implements AddByLcbhService { + @Override + public Map addYfkDataByLcbh(Map params) { + return commandExecutor.execute(new AddByLcbhCMD(params)); + } +} diff --git a/src/main/java/com/engine/htsc/smsd/util/AddDataUtil.java b/src/main/java/com/engine/htsc/smsd/util/AddDataUtil.java new file mode 100644 index 0000000..1bfc582 --- /dev/null +++ b/src/main/java/com/engine/htsc/smsd/util/AddDataUtil.java @@ -0,0 +1,141 @@ +package com.engine.htsc.smsd.util; + +import cn.hutool.core.date.DateUtil; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; + +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +public class AddDataUtil { + + /** + * @param type 通过type获取主表名 + * @param param type的value + * @Describe 根据流程编号获取主表名 + */ + public static String getMaintableName(String type, String param) { + RecordSet rs = new RecordSet(); + if ("requestid".equals(type)) { + rs.executeQuery("select t1.tablename from workflow_bill t1,workflow_base t2,workflow_requestbase t3 where t1.id =t2.formid and t2.id = t3.workflowid and t3.requestid = '" + param + "'"); + if (rs.next()) { + return Util.null2String(rs.getString("tablename")); + } else { + return ""; + } + } else if ("lcbh".equals(type)) { + rs.executeQuery("select t1.tablename from workflow_bill t1,workflow_base t2,workflow_requestbase t3 where t1.id =t2.formid and t2.id = t3.workflowid and t3.REQUESTMARK = '" + param + "'"); + if (rs.next()) { + return Util.null2String(rs.getString("tablename")); + } else { + return ""; + } + } else { + return ""; + } + } + + /** + * @Describe 判断流程是否已办结 + */ + public static String isFinished(String lcbh, String tableName) { + BaseBean bb = new BaseBean(); + bb.writeLog("==================判断流程是否已办结,接收到的参数是:lcbh:" + lcbh + ",tableName:" + tableName + "==============="); + RecordSet rs = new RecordSet(); + String sql = "select currentnodetype,isstopped,concat(concat(LASTOPERATEDATE,' '),LASTOPERATETIME) as lcbjsj from workflow_requestbase where requestid=(select requestid from " + tableName + " where lcbh = '" + lcbh + "')"; + bb.writeLog("即将执行的获取是否已办结的sql语句是:" + sql); + rs.executeQuery(sql); + if (rs.next()) { + String currentnodetype = Util.null2String(rs.getString("currentnodetype")); + String isstopped = Util.null2String(rs.getString("isstopped")); + if ((!"1".equals(isstopped)) && ("3".equals(currentnodetype))) { + return Util.null2String(rs.getString("lcbjsj")); + } else { + return ""; + } + } else { + return ""; + } + } + + /** + * @Describe 根据流程唯一标识获取流程指定相关字段 + */ + public static Map getMainInfo(String[] fields, String lcbh, String tableName) { + BaseBean bb = new BaseBean(); + bb.writeLog("===============进入getMainInfo方法,准备获取主表的相关参数=============="); + Map mainInfo = new HashMap<>(); + RecordSet rs = new RecordSet(); + + String sql; + sql = "select f.lcbh,f.hjxxjezfmx,f.ngr,f.szbm,b.unnumber as lclx from "+tableName+" f," + + "workflow_requestbase a,workflow_base b " + + "where f.REQUESTID = a.REQUESTID and a.WORKFLOWID = b.id and f.lcbh = '"+lcbh+"'"; + bb.writeLog("即将执行获取主表信息的sql是:" + sql); + rs.executeQuery(sql); + if (rs.next()) { + String[] columnNames = rs.getColumnName(); + for (String columnName : columnNames) { + mainInfo.put(columnName.toLowerCase(), rs.getString(columnName)); + } + } + return mainInfo; + } + + /** + * @Describe 根据流程唯一表示获取流程指定明细表的一个字段的所有值并用;分隔 + */ + public static String getDtFieldValue(String fieldName, String tableNum, String lcbh, String tableName) { + RecordSet rs = new RecordSet(); + String value = ""; + String sql = "select listagg(" + fieldName + ",';') as fieldName from " + tableName + "_dt" + tableNum + " where mainid = (select id from " + tableName + " where lcbh = '" + lcbh + "')"; + new BaseBean().writeLog("=============即将执行获取明细表指定字段值的sql是:" + sql); + rs.executeQuery(sql); + if (rs.next()) { + value = Util.null2String(rs.getString(rs.getColumnName()[0])); + } + return value; + } + + /** + * @Describe 是否逾期以及逾期天数 + */ + public static String getSfyq(String date) { + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date1 = simpleDateFormat.parse(date); + long days = DateUtil.betweenDay(date1, new Date(), true); + return days > 30 ? String.valueOf(days - 30) : ""; + } catch (Exception e) { + new BaseBean().writeLog("是否逾期判断发生错误:" + e.getMessage()); + e.getMessage(); + return ""; + } + } + + public static int getDataIdByUUID(String uuid, String uf_tableName) { + RecordSet rs = new RecordSet(); + int dataid = -1; + String sql = "select id from " + uf_tableName + " where modeuuid = ?"; + if (rs.executeQuery(sql, uuid) && rs.next()) { + dataid = Util.getIntValue(rs.getString(1)); + } + return dataid; + } + + /** + * @Describe 根据流程编号获取流程的requestId + * */ + public static String getRequestIdByLcbh(String lcbh, String mainTableName) { + RecordSet rs = new RecordSet(); + rs.executeQuery("select requestid from "+mainTableName+" where lcbh = '"+lcbh+"'"); + if (rs.next()){ + return Util.null2String(rs.getString("requestid")); + }else { + return ""; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/engine/htsc/smsd/web/AddYfkDataAction.java b/src/main/java/com/engine/htsc/smsd/web/AddYfkDataAction.java new file mode 100644 index 0000000..47bab28 --- /dev/null +++ b/src/main/java/com/engine/htsc/smsd/web/AddYfkDataAction.java @@ -0,0 +1,45 @@ +package com.engine.htsc.smsd.web; + +import com.alibaba.fastjson.JSONObject; +import com.engine.common.util.ServiceUtil; +import com.engine.htsc.smsd.service.AddByLcbhService; +import com.engine.htsc.smsd.service.impl.AddByLcbhServiceImpl; +import weaver.general.Util; +import weaver.workflow.logging.Logger; +import weaver.workflow.logging.LoggerFactory; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import java.util.HashMap; +import java.util.Map; + +public class AddYfkDataAction { + Logger logger = LoggerFactory.getLogger(AddYfkDataAction.class); + + private AddByLcbhService getService(){ + return ServiceUtil.getService(AddByLcbhServiceImpl.class); + } + + /** + * @Describe 根据用户输入的付款流程编号,查找对应的信息并存入建模表 + * @tableName uf_PrepayMageAccRep + * */ + @GET + @Path("addByLcbh") + @Produces({MediaType.APPLICATION_JSON}) + public String addYfkDataByFklcbh(@Context HttpServletRequest request, + @Context HttpServletResponse response){ + logger.info("================进入根据流程编号向预付款建模表写入数据的方法====================="); + String lcbh = Util.null2String(request.getParameter("lcbh")); + Map params = new HashMap<>(); + params.put("lcbh",lcbh); + Map result = getService().addYfkDataByLcbh(params); + return JSONObject.toJSONString(result); + } + +} diff --git a/src/main/java/com/engine/htsc/trip/pojo/AllowancePO.java b/src/main/java/com/engine/htsc/trip/pojo/AllowancePO.java new file mode 100644 index 0000000..b7d2fc3 --- /dev/null +++ b/src/main/java/com/engine/htsc/trip/pojo/AllowancePO.java @@ -0,0 +1,125 @@ +package com.engine.htsc.trip.pojo; + +public class AllowancePO { + + private String reqMark; + private String reqId; + private String reqTitle; + + private String uid; + + private String projectCode; + private String projectName; + + private String crmCode; + private String crmName; + + private String allowance; + private String lastOperateTime; + private String deptCode; + + public String getReqMark() { + return reqMark; + } + + public void setReqMark(String reqMark) { + this.reqMark = reqMark; + } + + public String getReqId() { + return reqId; + } + + public void setReqId(String reqId) { + this.reqId = reqId; + } + + public String getUid() { + return uid; + } + + public void setUid(String uid) { + this.uid = uid; + } + + public String getProjectCode() { + return projectCode; + } + + public void setProjectCode(String projectCode) { + this.projectCode = projectCode; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getCrmCode() { + return crmCode; + } + + public void setCrmCode(String crmCode) { + this.crmCode = crmCode; + } + + public String getCrmName() { + return crmName; + } + + public void setCrmName(String crmName) { + this.crmName = crmName; + } + + public String getAllowance() { + return allowance; + } + + public void setAllowance(String allowance) { + this.allowance = allowance; + } + + public String getLastOperateTime() { + return lastOperateTime; + } + + public void setLastOperateTime(String lastOperateTime) { + this.lastOperateTime = lastOperateTime; + } + + public String getReqTitle() { + return reqTitle; + } + + public void setReqTitle(String reqTitle) { + this.reqTitle = reqTitle; + } + + public String getDeptCode() { + return deptCode; + } + + public void setDeptCode(String deptCode) { + this.deptCode = deptCode; + } + + @Override + public String toString() { + return "AllowancePO{" + + "reqMark='" + reqMark + '\'' + + ", reqId='" + reqId + '\'' + + ", reqTitle='" + reqTitle + '\'' + + ", uid='" + uid + '\'' + + ", projectCode='" + projectCode + '\'' + + ", projectName='" + projectName + '\'' + + ", crmCode='" + crmCode + '\'' + + ", crmName='" + crmName + '\'' + + ", allowance='" + allowance + '\'' + + ", lastOperateTime='" + lastOperateTime + '\'' + + ", deptCode='" + deptCode + '\'' + + '}'; + } +} diff --git a/src/main/java/com/engine/htsc/trip/util/AjaxResult.java b/src/main/java/com/engine/htsc/trip/util/AjaxResult.java new file mode 100644 index 0000000..e341be9 --- /dev/null +++ b/src/main/java/com/engine/htsc/trip/util/AjaxResult.java @@ -0,0 +1,113 @@ +package com.engine.htsc.trip.util; + +import java.io.Serializable; + +/** + * Created by qlk + */ +public class AjaxResult implements Serializable { + + private static final long serialVersionUID = -4302377008637324176L; + + /** + * 状态码 + */ + private long code; + /** + * 提示信息 + */ + private String message; + /** + * 数据封装 + */ + private T data; + + public long getCode() { + return code; + } + + public void setCode(long code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(T data) { + this.data = data; + } + + public AjaxResult() { + } + + public AjaxResult(long code, String message, T data) { + this.code = code; + this.message = message; + this.data = data; + } + + /** + * 成功返回结果 + * @param data 获取的数据 + */ + public static AjaxResult ok(T data) { + return new AjaxResult(200, "", data); + } + + /** + * 成功返回结果 + * @param data 获取的数据 + * @param message 提示信息 + */ + public static AjaxResult ok(T data, String message) { + return new AjaxResult(200, message, data); + } + + /** + * 失败返回结果 + */ + public static AjaxResult failed() { + return new AjaxResult(400, "fail", null); + } + + /** + * 失败返回结果 + */ + public static AjaxResult error() { + return new AjaxResult(500, "error", null); + } + + /** + * 失败返回结果 + * @param message 提示信息 + */ + public static AjaxResult failed(String message) { + return new AjaxResult(400, message, null); + } + + /** + * 失败返回结果 + * @param message 异常 + */ + public static AjaxResult error(String message) { + return new AjaxResult(500, message, null); + } + + @Override + public String toString() { + return "AjaxResult{" + + "code=" + code + + ", message='" + message + '\'' + + ", data=" + data + + '}'; + } +} diff --git a/src/main/java/com/engine/htsc/trip/web/AllowanceAction.java b/src/main/java/com/engine/htsc/trip/web/AllowanceAction.java new file mode 100644 index 0000000..d2caeed --- /dev/null +++ b/src/main/java/com/engine/htsc/trip/web/AllowanceAction.java @@ -0,0 +1,66 @@ +package com.engine.htsc.trip.web; + +import com.engine.common.util.ParamUtil; +import com.engine.common.util.ServiceUtil; +import com.engine.htsc.trip.pojo.AllowanceRequest; +import com.engine.htsc.trip.service.AllowanceService; +import com.engine.htsc.trip.service.impl.AllowanceServiceImpl; +import java.util.HashMap; +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.ws.rs.Consumes; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import weaver.hrm.HrmUserVarify; +import weaver.hrm.User; + +public class AllowanceAction { + private Log log = LogFactory.getLog(this.getClass()); + private AllowanceService getService(){ + return ServiceUtil.getService(AllowanceServiceImpl.class); + } + @POST + @Path("/allowance") + @Consumes({MediaType.APPLICATION_JSON}) + @Produces({MediaType.APPLICATION_JSON}) + public Map getAllowance( AllowanceRequest request){ + Map apidatas = new HashMap<>(); + try { + apidatas = this.getService().allowance(request); + apidatas.put("code", 200); + apidatas.put("message","接口调用成功"); + }catch (Exception e){ + e.printStackTrace(); + apidatas.put("code",-1); + apidatas.put("message","接口调用失败"); + apidatas.put("api_errormsg", "catch exception : " + e.getMessage()); + log.error("isPostion catch exception"); + } + return apidatas; + } + + @POST + @Path("/v2/allowance") + @Produces({MediaType.APPLICATION_JSON}) + public Map getAllowanceV2( AllowanceRequest request){ + Map apidatas = new HashMap<>(); + try { + apidatas = this.getService().execute(request); + apidatas.put("code", 200); + apidatas.put("message","接口调用成功"); + }catch (Exception e){ + apidatas.put("code",-1); + apidatas.put("message","接口调用失败"); + apidatas.put("api_errormsg", "catch exception : " + e.getMessage()); + log.error("v2 allowance catch exception",e); + } + return apidatas; + } +} diff --git a/src/main/java/weaver/interfaces/htsc/cus/webservices/jtgl/AccountingDetail.java b/src/main/java/weaver/interfaces/htsc/cus/webservices/jtgl/AccountingDetail.java new file mode 100644 index 0000000..79360e5 --- /dev/null +++ b/src/main/java/weaver/interfaces/htsc/cus/webservices/jtgl/AccountingDetail.java @@ -0,0 +1,147 @@ +package weaver.interfaces.htsc.cus.webservices.jtgl; + +import java.io.Serializable; + +public class AccountingDetail implements Serializable { + + //费用承担人 + private String expensePerson; + //费用承担人(工号) + private String expenseBadge; + //费用承担部门 + private String expenseDept; + //费用承担部门 + private String expenseDeptCode; + //金额 + private String money; + //会计科目(名称) + private String subject; + //会计科目 + private DataDictionary subjectData; + //预算项目 + private DataDictionary yssuanData; + //公司项目 + private String project; + //公司项目编号 + private String projectCode; + //实际币种 + private String moneyKind; + //汇率 + private String exchangeRate; + //折合人民币 + private String priceRMB; + //事由(取预算事由) + private String reason; + + public String getExpensePerson() { + return expensePerson; + } + + public void setExpensePerson(String expensePerson) { + this.expensePerson = expensePerson; + } + + public String getExpenseBadge() { + return expenseBadge; + } + + public void setExpenseBadge(String expenseBadge) { + this.expenseBadge = expenseBadge; + } + + public String getExpenseDept() { + return expenseDept; + } + + public void setExpenseDept(String expenseDept) { + this.expenseDept = expenseDept; + } + + public String getExpenseDeptCode() { + return expenseDeptCode; + } + + public void setExpenseDeptCode(String expenseDeptCode) { + this.expenseDeptCode = expenseDeptCode; + } + + public String getMoney() { + return money; + } + + public void setMoney(String money) { + this.money = money; + } + + public String getSubject() { + return subject; + } + + public void setSubject(String subject) { + this.subject = subject; + } + + public DataDictionary getSubjectData() { + return subjectData; + } + + public void setSubjectData(DataDictionary subjectData) { + this.subjectData = subjectData; + } + + public DataDictionary getYssuanData() { + return yssuanData; + } + + public void setYssuanData(DataDictionary yssuanData) { + this.yssuanData = yssuanData; + } + + public String getProject() { + return project; + } + + public void setProject(String project) { + this.project = project; + } + + public String getProjectCode() { + return projectCode; + } + + public void setProjectCode(String projectCode) { + this.projectCode = projectCode; + } + + public String getMoneyKind() { + return moneyKind; + } + + public void setMoneyKind(String moneyKind) { + this.moneyKind = moneyKind; + } + + public String getExchangeRate() { + return exchangeRate; + } + + public void setExchangeRate(String exchangeRate) { + this.exchangeRate = exchangeRate; + } + + public String getPriceRMB() { + return priceRMB; + } + + public void setPriceRMB(String priceRMB) { + this.priceRMB = priceRMB; + } + + public String getReason() { + return reason; + } + + public void setReason(String reason) { + this.reason = reason; + } +} diff --git a/src/main/java/weaver/interfaces/htsc/cwtz/AddBudgetMidTable.java b/src/main/java/weaver/interfaces/htsc/cwtz/AddBudgetMidTable.java new file mode 100644 index 0000000..c3c4c17 --- /dev/null +++ b/src/main/java/weaver/interfaces/htsc/cwtz/AddBudgetMidTable.java @@ -0,0 +1,271 @@ +package weaver.interfaces.htsc.cwtz; + +import com.alibaba.fastjson.JSONObject; +import com.engine.htsc.payment.dao.BudgetDao; +import com.engine.htsc.payment.enums.BudgetNodeType; +import com.engine.htsc.payment.util.PayUtil; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.jdbc.SQL; +import weaver.conn.RecordSet; +import weaver.conn.RecordSetDataSource; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.hrm.company.DepartmentComInfo; +import weaver.interfaces.htsc.comInfo.PropBean; +import weaver.interfaces.workflow.action.Action; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class AddBudgetMidTable extends BaseBean implements Action { + @Override + public String execute(RequestInfo requestInfo) { + String back; + RecordSet rs = new RecordSet(); + String sql = ""; + String billStatus = BudgetNodeType.FINISH.getValue(); + String requestid = requestInfo.getRequestid(); + writeLog("获取的requestid是:" + requestid + ",billStatus是:" + billStatus); + try { +// 表单数据获取 + String tableName = getTableNameByRequestId(requestid); + sql = "select LCBH from " + tableName + " where REQUESTID=" + requestid; + rs.executeQuery(sql); + boolean isItFlag = false; + String title = ""; + if (rs.next()) { + title = rs.getString("LCBH"); + } + String yskmTable = tableName + "_DT2"; + boolean b = doBudgetMiddleTablePrivate(title, billStatus, null, yskmTable, tableName, isItFlag); + if (b) { + back = SUCCESS; + } else { + back = FAILURE_AND_CONTINUE; + requestInfo.getRequestManager().setMessagecontent("流程流转异常:浪潮预算中间库同步异常"); + } + } catch (Exception e) { + back = FAILURE_AND_CONTINUE; + e.printStackTrace(); + } + return back; + } + + /** + * 根据requestid获取主表名 + */ + public String getTableNameByRequestId(String requestId) { + RecordSet rs = new RecordSet(); + rs.execute("select t1.tablename from workflow_bill t1,workflow_base t2,workflow_requestbase t3 \n where t1.id =t2.formid and t2.id = t3.workflowid and t3.requestid = " + + requestId); + String table = ""; + if (rs.next()) { + table = Util.null2String(rs.getString("tablename")); + } + return table; + } + + /** + * 确认预算中间表中是否有重复数据 + */ + private boolean doBudgetMiddleTablePrivate(String requestMark, String billStatus, String fbizdate, String budgetKmTable, String mainTable, boolean isIt) { + PropBean pp = new PropBean(); + BudgetDao budgetDao = new BudgetDao(); + writeLog("付款流程,预算中间表更新\n @requestMark=" + requestMark + ",billStatus=" + billStatus + + ",budgetKmTable=" + budgetKmTable + "@"); + if (StringUtils.isBlank(requestMark) || StringUtils.isBlank(billStatus) || StringUtils.isBlank(budgetKmTable)) { + writeLog("更新失败,原因:流程编号或单据状态为空"); + return false; + } + try { +// 获取外部数据源 + String budgetTableName = pp.getPropName("BudgetTableName"); + String nameIsExist = budgetDao.fNameIsExist(budgetTableName, requestMark); + writeLog("预算数据是否存在sql @" + nameIsExist + "@"); + RecordSetDataSource rsd = new RecordSetDataSource("BudgetRecords"); + rsd.execute(nameIsExist); + if (rsd.next() && StringUtils.isNotBlank(requestMark)) { + String deleteAll = String.format("delete from %s where FNAME='%s'", + budgetTableName, requestMark); + rsd.executeUpdateWithDatasource(deleteAll, "BudgetRecords"); + insertBudgetMiddleTablePrivate(requestMark, billStatus, fbizdate, budgetKmTable, mainTable, isIt, rsd); + } else { + insertBudgetMiddleTablePrivate(requestMark, billStatus, fbizdate, budgetKmTable, mainTable, isIt, rsd); + } + return true; + } catch (Exception e) { + e.getMessage(); + writeLog("数据添加失败,原因是:" + e); + return false; + } + } + + /** + * 向财务中心表写入数据 + */ + private boolean insertBudgetMiddleTablePrivate(String requestMark, String billStatus, String fbizdate, String budgetKmTable, String mainTable, boolean isIt, RecordSetDataSource rsd) throws Exception { + writeLog("预算信息不存在,执行更新方法 insertBudgetMiddleTable\n @requestMark=" + requestMark + ",billStatus=" + billStatus + "@"); + Map budgetBody = getBudgetBodyPrivate(requestMark, mainTable, budgetKmTable, isIt); + writeLog("获取的表单数据是:" + JSONObject.toJSONString(budgetBody)); + //主表数据 + List mainInfo = (List) budgetBody.get("main"); + writeLog("主表数据是:" + JSONObject.toJSONString(mainInfo)); + //预算数据 + List> dtInfo = (List>) budgetBody.get("dt"); + writeLog("明细表的记录数:" + dtInfo.size()); + writeLog("他们的值是:" + JSONObject.toJSONString(dtInfo)); + if (dtInfo.size() == 0) { + writeLog("插入预算表中止,因为科目信息为空"); + return false; + } +// //年 +// DateTimeFormatter dfOnlyYear = DateTimeFormatter.ofPattern("yyyy"); +// //当前操作时间 +// DateTimeFormatter dfDateTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + try { + String budgetTableName = new PropBean().getPropName("BudgetTableName"); + for (List singleValue : dtInfo) { + List insertValues = new ArrayList<>(); + insertValues.add(billStatus); + insertValues.addAll(mainInfo); + insertValues.addAll(singleValue); + writeLog("即将插入预算中间表的数据是:" + JSONObject.toJSONString(insertValues)); + String insert = insertMiddleTablePrivate(budgetTableName); + writeLog("插入中间表的sql语句是:" + insert); + RecordSet recordSet = new RecordSet(); + recordSet.executeUpdateWithDatasource(insert, "BudgetRecords", insertValues); + } + return true; + } catch (Exception e) { + writeLog("insertBudgetMiddleTable异常, [" + e + "]"); + return false; + } + } + + /** + * 获取插入表中的数据 + */ + private Map getBudgetBodyPrivate(String requestMark, String main, String budgetKmTable, boolean isItFlag) throws Exception { + Map res = new HashMap<>(); + writeLog("付款流程表名: @" + main + "@"); + writeLog("付款预算表名: @" + budgetKmTable + "@"); + RecordSet rs = new RecordSet(); + String mainInfo = getMainInfoSql(main, requestMark); + writeLog("获取主表的sql语句是:" + mainInfo); + rs.executeQuery(mainInfo); + List mainValues = new ArrayList<>(); + + String mainId = ""; + if (rs.next()) { + mainValues.add(requestMark); + //流程编码 + mainValues.add(Util.null2String(rs.getString("REQUESTNAME"))); + //拟稿人名称 + mainValues.add(Util.null2String(rs.getString("LASTNAME"))); + mainValues.add(Util.null2String(rs.getString("RZRQ").substring(0, 4))); + mainValues.add(Util.null2String(rs.getString("RZRQ")) + " 00:00:00"); + mainId = Util.null2String(rs.getString("ID")); + } + writeLog("主表数据: @" + mainValues + "@"); + res.put("main", mainValues); + //获取预算科目明细表数据 + String budgetKmTableInfo = getKmTableInfoSql(budgetKmTable, mainId); + writeLog("获取预算科目明细表的sql是:" + budgetKmTableInfo); + DepartmentComInfo dc = new DepartmentComInfo(); + rs.executeQuery(budgetKmTableInfo); + //所有明细科目数据 add dtValues 单行明细科目数据 + List> allDtValues = new ArrayList<>(); + while (rs.next()) { + //单行明细科目数据 + List dtValues = new ArrayList<>(); + String yskm = Util.null2String(rs.getString("yskm")); + if (yskm.isEmpty()) { + dtValues.add(""); + dtValues.add(""); + } else { + String trueYskm = yskm.split("_")[1]; + dtValues.add(trueYskm); + dtValues.add(PayUtil.superBudgetSubject(trueYskm)); + } +// 不含税金额 + String je = Util.null2String(rs.getString("je")); + dtValues.add(je); +// 未税金额 + dtValues.add(je); +// 税金 + dtValues.add("0"); +// 实际报销金额 + dtValues.add("0"); +// 差旅报销金额 + dtValues.add("0"); +// 是否超预算 + String sfcys = Util.null2String(rs.getString("sfcys")); + if ("0".equals(sfcys)) { + dtValues.add("否"); + } else if ("1".equals(sfcys)) { + dtValues.add("是"); + } else { + dtValues.add(""); + } + dtValues.add("否"); + dtValues.add(""); + dtValues.add(""); +// 华泰部门code + String fycdbm = Util.null2String(rs.getString("fycdbm")); + String departmentCode = dc.getDepartmentCode(fycdbm); + dtValues.add(departmentCode); + allDtValues.add(dtValues); + } + writeLog("预算表数据" + budgetKmTable + " @" + allDtValues + "@"); + res.put("dt", allDtValues); + return res; + } + + /** + * 获取财务调整主表数据sql + */ + private String getMainInfoSql(String main, String requestMark) { + return new SQL() {{ + SELECT_DISTINCT("t1.ID,t1.LCBH,t1.RZRQ,t2.REQUESTNAME,t3.LASTNAME,t4.DEPARTMENTCODE"); + FROM(main + " t1"); + LEFT_OUTER_JOIN("workflow_requestbase t2 on t1.requestid=t2.requestid"); + LEFT_OUTER_JOIN("hrmresource t3 on t1.ngr=t3.id"); + LEFT_OUTER_JOIN("hrmdepartment t4 on t3.departmentid=t4.id"); + WHERE("t1.lcbh='" + requestMark + "'"); + }}.toString(); + } + + /** + * 获取财务调整预算科目信息 + */ + private String getKmTableInfoSql(String budgetKmTable, String mainId) { + return new SQL() {{ + SELECT("fycdbm,je,sfcys,yskm"); + FROM(budgetKmTable); + WHERE("MAINID=" + mainId); + }}.toString(); + } + + /** + * 插入中间表 + * + * @param tableName 表名 + * @return sql + */ + private String insertMiddleTablePrivate(String tableName) { + return new SQL() {{ + INSERT_INTO(tableName); + VALUES("FBILLSTATUS,FNAME,FBILLTITLE,FPESONNAME," + + "YSND,FBIZDATE,FITEMDETAILNUM," + + "FCOSTITEMNUM,FSJAMOUNT,FNOTAXAMOUNT,FTAXAMOUNT,FACTUALAMOUNT," + + "FSTANDARDAMOUNT,FOVERWEIGHT,\n" + + "ISITITEM,ITITEMCODE,ITITEMNAME,FDEPTNUMBER", + "?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?"); + }}.toString(); + } +} + + diff --git a/src/main/java/weaver/interfaces/htsc/job/workflow/AgentSetJob.java b/src/main/java/weaver/interfaces/htsc/job/workflow/AgentSetJob.java new file mode 100644 index 0000000..e0ca81d --- /dev/null +++ b/src/main/java/weaver/interfaces/htsc/job/workflow/AgentSetJob.java @@ -0,0 +1,590 @@ +package weaver.interfaces.htsc.job.workflow; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.engine.common.util.ServiceUtil; +import com.engine.workflow.service.WorkflowRuleService; +import com.engine.workflow.service.impl.WorkflowRuleServiceImpl; +import weaver.conn.RecordSet; +import weaver.conn.RecordSetDataSource; +import weaver.general.GCONST; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.integration.logging.Logger; +import weaver.integration.logging.LoggerFactory; +import weaver.interfaces.htsc.comInfo.PropBean; +import weaver.interfaces.schedule.BaseCronJob; +import weaver.workflow.agent.AgentBean; +import weaver.workflow.agent.AgentDateBean; +import weaver.workflow.agent.AgentManager; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * + * @ClassName: AgentSetJob + * @Description: TODO(定时任务读取门户的代理设置) + * @author Created by K1810006 + * @date 2020年11月24日09:32:22 + * + */ + +/** + * method: add + * isProxyForward: 代理转发 + * endDate: 2021-03-03 代理结束日期 + * isCreateAgenter: 0 代理流程创建 + * isProxyDeal: 1 代理流程处理 + * bagentuid: 1 被代理人 + * beginDate: 2021-03-03 代理开始日期 + * rangetype: 24 代理的流程 + * agentuid: 24209 代理人 + * beginTime: 15:00 代理开始时间 + * endTime: 16:00 代理结束时间 + * isSysCreateAgenter: + * isPendThing: 代理已有待办事宜 + * agentrange: 1 代理流程范围 + */ + + +public class AgentSetJob extends BaseCronJob { + + private Logger logger = LoggerFactory.getLogger(this.getClass()); + + public static boolean checklock = true; + + + @Override + public void execute() { + + Long begintime = System.currentTimeMillis(); + logger.info(">>>>>>>>>>>>>>>>>>>>>>>" + this.getClass().getName() + ":strat"); + + if (checklock) { + checklock = false; + try { + User user = User.getUser(1,0); + WorkflowRuleService ruleService = (WorkflowRuleServiceImpl) ServiceUtil.getService(WorkflowRuleServiceImpl.class, user); + RecordSet rs = new RecordSet(); + RecordSetDataSource rds = new RecordSetDataSource("EipAgent"); + RecordSetDataSource rds2 = new RecordSetDataSource("EipAgent"); + RecordSetDataSource rds3 = new RecordSetDataSource("EipAgent"); + + DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:00:00"); + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.HOUR, -1); + String synTime = format.format(cal.getTime()); + + //删除原有授权数据 + deleteOldData(user,synTime); + + String dataSql = " select distinct t1.client,t1.clientDeptCode,t1.workflowname,t1.starttime,t1.endtime \n" + + " from ENTRUSTOA t1, zony_wfp_pe.entrust_portal_info t2 \n" + + " where t1.portal_id=to_char(t2.id)\n" + + " and t1.workflowname like 'ECOA%' and t1.enable=1 \n" + + " and t2.createtime >= '"+synTime+"'"; + logger.info(">>>>>>>>>>>>>>>>>>>>>>>AgentSetJob syn dataSql========"+dataSql); + + rds.execute(dataSql); + while(rds.next()){ + String client = Util.null2String(rds.getString("client"));//授权人工号 + String clientDeptCode = Util.null2String(rds.getString("clientDeptCode"));//授权人部门编码 + String wfname = Util.null2String(rds.getString("workflowname")); //授权流程 + String wfunnumber = wfname.substring(5); + int beagenterid = getUidByWorkcodeAndDeptcode(client,clientDeptCode); + if(beagenterid<0){ + continue; + } + String workflowid = new PropBean().getActiveWorkflowIdByUnNumber(wfunnumber); + String endtime = Util.null2String(rds.getString("endtime")); //授权结束时间 + String starttime = Util.null2String(rds.getString("starttime")); //授权开始时间 + //重新同步门户的授权数据 + String beginDate = ""; + String beginTime = ""; + if(!"".equals(starttime)){ + beginDate = starttime.substring(0,10); + beginTime = starttime.substring(11,16); + } + + String finishDate = ""; + String finishTime = ""; + if(!"".equals(endtime)){ + finishDate = endtime.substring(0,10); + finishTime = endtime.substring(11,16); + } + + + //查询当前流程、当前代理人的所有有效配置 + ArrayList detailList = new ArrayList(); + String allDataSql = " select distinct trustee,starttime,endtime from ENTRUSTOA " + + "where workflowname='"+wfname+"' and client='"+client+"' " + + " and clientDeptCode='"+clientDeptCode+"' and starttime='"+starttime+"' " + + " and endtime='"+endtime+"' and enable=1 "; + rds2.execute(allDataSql); + while(rds2.next()){ + String trustee = Util.null2String(rds2.getString("trustee")); //被授权人工号(如果被授权人有多个身份,则授权给同部门的身份) + int agentuid = getUidByWorkcodeAndDeptcode(trustee,clientDeptCode); + logger.info("client="+client+" clientDeptCode="+clientDeptCode+" trustee="+trustee); + if(agentuid<0){ + continue; + } + + //生成对应代理人的条件规则 + String linkid = getLinkid(); + logger.info("AgentSetJob linkid=="+linkid); + + //生成代理条件参数 + Map allcondition = new HashMap(); + rds3.execute(" select distinct condition from ENTRUSTOA t1 " + + " where client='"+client+"' and trustee='"+trustee+"' and clientdeptcode='"+clientDeptCode+"' " + + " and workflowname = '"+wfname+"' and starttime='"+starttime+"' and endtime='"+endtime+"' and enable=1 "); + while(rds3.next()) { + String condition = Util.null2String(rds3.getString("condition")); //授权条件 + logger.info("AgentSetJob condition==="+condition); + if (!"".equals(condition)) { + Map conditionMap = conditionStrToMap(condition); + parseCondition(allcondition,conditionMap,workflowid); + + } + } + + String conditionss = ""; + //如果有设置代理规则,解析规则 + if(allcondition.size()>0){ + Map params = getContionParams(allcondition,workflowid,linkid); + logger.info("AgentSetJob saveRule params==========="+params); + + Map res = ruleService.saveRule(params); + JSONObject jsonRes = new JSONObject(res); + if("SUCCESS".equals(jsonRes.getString("info"))) { + conditionss = jsonRes.getString("id"); + } + + } + + + //构造明细参数 + AgentBean agentBean = new AgentBean(); + agentBean.setAgentuid(agentuid); + agentBean.setIscreateagenter(1); + agentBean.setIsSysCreateAgenter("1"); + agentBean.setIsproxydeal(1); + agentBean.setIspendthing(0); + agentBean.setAgentbatch("0.00"); + agentBean.setConditionkeyid(linkid); + agentBean.setConditionss(conditionss); + //agentBean.setConditioncn(); + detailList.add(agentBean); + + + } + + if(detailList.size()==0){ + continue; + } + + AgentBean bean = detailList.get(0); + bean.setBagentuid(beagenterid); + bean.setBegindate(beginDate); + bean.setBegintime(beginTime); + bean.setEnddate(finishDate); + bean.setEndtime(finishTime); + + //第一步 添加出被代理人的代理记录 + logger.info("AgentSetJob insert agent===="+JSON.toJSONString(bean)); + AgentManager agentManager = new AgentManager(user); + String agentresult = agentManager.addAgent(workflowid, bean, 1); + logger.info("AgentSetJob agentresult==="+agentresult); + int agentid = -1; + if(!"success".equals(agentresult)){ + logger.error("AgentSetJob 同步门户代理数据出错,授权人:"+beagenterid+" 被授权人:"+bean.getAgentid()+" 授权流程:"+wfunnumber); + }else{ + //查询生成的代理数据id + int agentuid = bean.getAgentuid(); + String agentSql = " select * from workflow_agent " + + " where workflowid="+workflowid+" and beagenterid="+beagenterid+" and agenterid="+agentuid+" " + + " and begindate='"+beginDate+"' and begintime='"+beginTime+"' " + + " and enddate='"+finishDate+"' and endtime='"+finishTime+"' " ; + rs.execute(agentSql); + rs.next(); + agentid = rs.getInt("agentid"); + } + + //第二部 给被代理人添加所有的代理明细记录 + AgentDateBean agentDateBean = new AgentDateBean(); + agentDateBean.setBegindate(beginDate); + agentDateBean.setBegintime(beginTime); + agentDateBean.setEnddate(finishDate); + agentDateBean.setEndtime(finishTime); + String detailResult = agentManager.changeAgentSet(agentid, agentDateBean, 2, true, detailList); + logger.info("保存明细数据结果===="+detailResult); + + //生成代理数据的条件 + + } + } catch (Exception e) { + e.printStackTrace(); + }finally { + checklock = true; + } + + + } else { + logger.info(this.getClass().getName() + "正在执行中..."); + } + + logger.info(">>>>>>>>>>>>>>>>>>>>>>>" + this.getClass().getName() + ":end 耗时:" + (System.currentTimeMillis() - begintime)); + + + + } + + /** + * 根据工号和部门编码查询人员ID + * @param workcode + * @param deptcode + * @return + */ + public int getUidByWorkcodeAndDeptcode(String workcode,String deptcode){ + //System.out.println(workcode+" "+deptcode); + int userid = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery(" select a.id from hrmresource a,hrmdepartment b" + + " where a.departmentid=b.id and workcode=? and departmentcode=? and status<=3 ",new Object[]{workcode,deptcode}); + if(rs.next()){ + userid = rs.getInt("id"); + } + return userid; + + } + + + /** + * 将条件字段转为键值对 + * @param condition + * @return + */ + public Map conditionStrToMap(String condition){ + Map conditionKV = new LinkedHashMap<>(); + String[] conditions = condition.split(";"); + for(int i=0;i parseCondition(Map allcondition,Map condition,String workflowid){ + RecordSet rs = new RecordSet(); + for (Map.Entry entry : condition.entrySet()) { + String fieldname = entry.getKey(); + String fieldvalue = entry.getValue(); + + String fieldSql = "select b.*,c.labelname from workflow_base a,workflow_billfield b,htmllabelinfo c " + + " where a.formid=b.billid and b.fieldlabel=c.indexid and c.languageid=7 " + + " and a.id=? and b.fieldname=? "; + rs.executeQuery(fieldSql,new Object[]{workflowid,fieldname}); + if(rs.next()){ + String fieldid = Util.null2String(rs.getString("id")); + String fielddbtype = Util.null2String(rs.getString("fielddbtype")); + String fieldhtmltype = Util.null2String(rs.getString("fieldhtmltype")); + //int pubchilchoiceid = Util.getIntValue(rs.getString("pubchilchoiceid")); + int type = rs.getInt("type"); + String labelname = Util.null2String(rs.getString("labelname")); + + //判断是否是人力资源字段 + int typehrm = -1; + if("3".equals(fieldhtmltype) && (type==1 || type==17)){ + typehrm = 1; + } + + String browservalue = ""; + String browserspantext = ""; + String browserspanlabel = ""; + String selectvalue1 = "-1"; + if("5".equals(fieldhtmltype)){//下拉框值转换,浏览按钮情况暂不处理 + String selectRange = ""; + rs.executeQuery(" select id,fieldname from workflow_billfield where childfieldid=? ",fieldid); + if(rs.next()){//是子选项,需要根据父选项确定下拉框的值 + + String parentFieldid = Util.null2String(rs.getString("id")); + String parentFieldname = Util.null2String(rs.getString("fieldname")); + String parentFieldvalue = condition.get(parentFieldname); + + rs.executeQuery(" select childitemid from workflow_selectitem where fieldid=? and selectname=? ",new Object[]{parentFieldid,parentFieldvalue} ); + rs.next(); + String childitemid = Util.null2String(rs.getString("childitemid")); + + if(!"".equals(childitemid)){ + selectRange = " and selectvalue in ("+childitemid+") "; + } + + } + + rs.executeQuery(" select selectvalue from workflow_selectitem " + + "where fieldid=? and selectname=? "+selectRange,new Object[]{fieldid,fieldvalue}); + rs.next(); + String selectvalue = Util.null2String(rs.getString("selectvalue")); + browservalue = selectvalue; + browserspantext = fieldvalue; + browserspanlabel = fieldvalue; + selectvalue1 = selectvalue; + } + + String textvalue1 = ""; + if("2".equals(fieldhtmltype)){ + textvalue1 = fieldvalue; + } + + String valuetype = "-1"; + if("2".equals(fieldhtmltype)){ + valuetype = "1"; + } + + Map fieldConditionInfo = new HashMap(); + if(allcondition.containsKey(fieldname)){ + fieldConditionInfo = (Map) allcondition.get(fieldname); + fieldConditionInfo.put("browservalue",((String)fieldConditionInfo.get("browservalue"))+","+browservalue); + fieldConditionInfo.put("browserspantext",((String)fieldConditionInfo.get("browserspantext"))+"_"+browserspantext); + fieldConditionInfo.put("browserspanlabel",((String)fieldConditionInfo.get("browserspanlabel"))+","+browserspanlabel); + fieldConditionInfo.put("selectvalue1",((String)fieldConditionInfo.get("selectvalue1"))+","+selectvalue1); + + }else{ + fieldConditionInfo.put("datafield",fieldid); + fieldConditionInfo.put("datafieldlabel",labelname); + fieldConditionInfo.put("typehrm",typehrm); + fieldConditionInfo.put("htmltype",fieldhtmltype); + fieldConditionInfo.put("fieldtype",type); + fieldConditionInfo.put("dbtype",fielddbtype); + fieldConditionInfo.put("browservalue",browservalue); + fieldConditionInfo.put("browserspantext",browserspantext); + fieldConditionInfo.put("browserspanlabel",browserspanlabel); + fieldConditionInfo.put("textvalue1",textvalue1); + fieldConditionInfo.put("valuetype",valuetype); + fieldConditionInfo.put("selectvalue1",selectvalue1); + + + } + allcondition.put(fieldname,fieldConditionInfo); + } + } + + return allcondition; + + } + + + /** + * 生成条件参数 + * @param allcondition + * @param workflowid + * @param linkid + * @return + */ + public Map getContionParams(Map allcondition,String workflowid,String linkid){ + + String returnStr[] = new String[2]; + String rulexml = ""; + String condit = ""; + + for (Map.Entry entry : allcondition.entrySet()) { + String fieldname = entry.getKey(); + Map conditionInfo = (Map) entry.getValue(); + + String xmlStr = " \n"; + rulexml += xmlStr; + condit += "("+conditionInfo.get("datafieldlabel")+" 属于 '"+conditionInfo.get("browserspanlabel")+"') AND "; + } + + rulexml += ""; + + condit = condit.substring(0,condit.lastIndexOf("AND")).trim(); + condit = "("+condit+")"; + + int formid = getFormId(workflowid); + + Map paramsMap = new HashMap<>(); + paramsMap.put("rulexml",rulexml); + paramsMap.put("rownum",""); + paramsMap.put("condit",condit); + paramsMap.put("e9nodeid",""); + paramsMap.put("ruleid",0); + paramsMap.put("rulesrc",6); + paramsMap.put("formid",formid); + paramsMap.put("linkid",linkid); + paramsMap.put("isbill",1); + paramsMap.put("wfid",workflowid); + + return paramsMap; + + } + + /** + * 查询流程对应表单id + * @param workflowid + * @return + */ + public int getFormId(String workflowid){ + int formid = -1; + RecordSet rs = new RecordSet(); + rs.executeQuery(" select formid from workflow_base where id=? ",new Object[]{workflowid}); + if(rs.next()){ + formid = rs.getInt("formid"); + } + return formid; + } + + + + public static String getLinkid(){ + String rnd = ""; + for (int i = 0; i < 2; i++) { + rnd += new Random().nextInt(10); + } + return Calendar.getInstance().get(Calendar.MILLISECOND) +rnd; + + } + + + /** + * 删除代理人关于当前流程的所有代理数据 + * @param workflowid + * @param beagenterid + */ + public void deleteAgentData(String workflowid,int beagenterid){ + RecordSet rs = new RecordSet(); + String conditionkeyid = ""; + String sql1 = " select b.* from workflow_agent a,workflow_agentConditionSet b " + + "where a.agentid=b.agentid and a.beagenterid=? and a.workflowid=? and conditionkeyid is not null "; + rs.executeQuery(sql1,new Object[]{beagenterid,workflowid}); + while(rs.next()){ + conditionkeyid += Util.null2String(rs.getString("conditionkeyid"))+","; + } + + if(!"".equals(conditionkeyid)){ + conditionkeyid = conditionkeyid.substring(0,conditionkeyid.length()-1); + + //删除规则 + String deleteSql1 = " delete from rule_maplist where wfid="+workflowid+" and rulesrc=6 and linkid in("+conditionkeyid+")"; + rs.execute(deleteSql1); + + String deleteSql2 = " delete from rule_base where linkid in("+conditionkeyid+") and rulesrc=6 "; + rs.execute(deleteSql2); + } + + + + + String deleteSql3 = " delete from workflow_agentConditionSet a " + + "where exists(select 1 from workflow_agent b " + + "where a.agentid = b.agentid and b.workflowid=? and b.beagenterid=? )"; + rs.executeUpdate(deleteSql3,new Object[]{workflowid,beagenterid}); + + String deleteSql4 = " delete from workflow_agent where workflowid=? and beagenterid=? "; + rs.executeUpdate(deleteSql4,new Object[]{workflowid,beagenterid}); + + + } + + + + + /** + * 收回代理人关于当前流程的所有代理数据 + * @param workflowid + * @param beagenterid + */ + public void takeBackAgentData(String workflowid,int beagenterid,User user){ + RecordSet rs = new RecordSet(); + String sql = " select agentid from workflow_agent where beagenterid=? and workflowid=? and agenttype=1 "; + rs.executeQuery(sql,new Object[]{beagenterid,workflowid}); + AgentManager agentManager = new AgentManager(user); + while(rs.next()){ + int agentid = rs.getInt("agentid") ; + agentManager.takeBackAgent(agentid, true,true); + } + } + + + /** + * 删除OA中当前流程、当前代理人的所有代理数据 + */ + public void deleteOldData(User user,String synTime){ + RecordSetDataSource rds = new RecordSetDataSource("EipAgent"); + String dataSql = " select distinct t1.client,t1.clientDeptCode,t1.workflowname,t1.starttime,t1.endtime \n" + + "from ENTRUSTOA t1, zony_wfp_pe.entrust_portal_info t2 \n" + + "where t1.portal_id=to_char(t2.id) and t1.workflowname like 'ECOA%' \n" + + "and t2.createtime >= '"+synTime+"' "; + logger.info(">>>>>>>>>>>>>>>>>>>>>>>AgentSetJob delete dataSql========"+dataSql); + rds.execute(dataSql); + while(rds.next()) { + String client = Util.null2String(rds.getString("client"));//授权人工号 + String clientDeptCode = Util.null2String(rds.getString("clientDeptCode"));//授权人部门编码 + String wfname = Util.null2String(rds.getString("workflowname")); //授权流程 + String wfunnumber = wfname.substring(5); + int beagenterid = getUidByWorkcodeAndDeptcode(client, clientDeptCode); + if (beagenterid < 0) { + continue; + } + String workflowid = new PropBean().getActiveWorkflowIdByUnNumber(wfunnumber); + //删除OA中当前流程、当前代理人的所有代理数据 + //deleteAgentData(workflowid, beagenterid); + takeBackAgentData(workflowid,beagenterid,user); + } + + } + + + + + public static void main(String[] args) { + + GCONST.setRootPath("./"); + GCONST.setServerName("ecology"); + + AgentSetJob agentSetJob = new AgentSetJob(); + agentSetJob.execute(); + + } + + +} diff --git a/src/main/java/weaver/interfaces/htsc/payment/AdvancePaymentJob.java b/src/main/java/weaver/interfaces/htsc/payment/AdvancePaymentJob.java new file mode 100644 index 0000000..1120d0b --- /dev/null +++ b/src/main/java/weaver/interfaces/htsc/payment/AdvancePaymentJob.java @@ -0,0 +1,318 @@ +package weaver.interfaces.htsc.payment; + +import com.alibaba.fastjson.JSON; +import com.engine.htsc.payment.enums.Sequences; +import com.engine.htsc.payment.util.CoWfUtil; +import com.engine.htsc.payment.util.PayUtil; +import org.apache.commons.lang3.StringUtils; + +import weaver.conn.RecordSet; +import weaver.formmode.setup.ModeRightInfo; + +import weaver.hrm.resource.ResourceComInfo; +import com.weaver.general.BaseBean; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import weaver.conn.RecordSetTrans; +import weaver.general.Util; +import weaver.interfaces.htsc.GlobatTools.JAVATools; +import weaver.interfaces.htsc.comInfo.PropBean; +import weaver.soa.workflow.request.MainTableInfo; +import weaver.soa.workflow.request.RequestInfo; +import weaver.soa.workflow.request.Property; +import weaver.soa.workflow.request.RequestService; +import weaver.workflow.request.RequestComInfo; +import weaver.workflow.workflow.WorkflowComInfo; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * 建模中间表uf_yfkmiddle定时刷新 + * 预付款流程表formtable_main_213, + * 自动创建流程 + */ +public class AdvancePaymentJob extends weaver.interfaces.schedule.BaseCronJob { + private Log log = LogFactory.getLog(this.getClass()); + + + @Override + public void execute() { + PropBean pp = new PropBean(); + String yskmPre = pp.getPropName("YFKFYQRaccountTreeId"); + String hjkmPre = pp.getPropName("YFKKJRaccountTreeId"); + log.info("定时任务自动创建流程开始======"); + RecordSetTrans rst = new RecordSetTrans(); + RecordSet rs = new RecordSet(); + RecordSet rsdetail = new RecordSet(); + try{ + rst.setAutoCommit(false); + PropBean pb = new PropBean(); + //流水号 + int number = -1; + String workflowId = pb.getPropName("YFKQR_WORKFLOWID"); + String tableName = "formtable_main_"; + //获取预付款流程表名 + rs.executeQuery("select formid from workflow_base where id = ?",workflowId); + if (rs.next()){ + int formid = Math.abs(Util.getIntValue(rs.getString("formid"))); + tableName = tableName + formid; + log.info("预付款流程表名=="+tableName); + }else { + log.info("获取预付款流程表名失败=="); + return; + } + String IsNextFlow = "1"; //1提交到下一节点,0不提交 + //1.遍历建模中间表 sfcf 1未触发 + rs.executeQuery("select a.id,a.zzfptjr,a.reqid,a.lcbh,a.ngr,a.bt,a.szbm,a.jjcd,a.jjyy,a.lxfs," + + " a.ngsj,a.xjhjmx,a.ngrfyhj,a.fyhjsp,a.ggfyqtfy,a.fkxx,a.fzjgcwjl, " + + " (select wm_concat_old(b.skdw) from uf_yfkmiddle_dt11 b where a.id = b.mainid) " + + " as skdw from uf_yfkmiddle a where (a.sfcf = 1 or a.sfcf is null) and a.sffkqr = 1"); + while (rs.next()) { + log.info("建模存在未触发的数据数据"); + Map requestMainMap = new HashMap(); + Integer uf_id = Util.getIntValue(rs.getString("id")); + String requestid = Util.null2String(rs.getString("reqid")); + String lcbh = Util.null2String(rs.getString("lcbh")); + String ngr = Util.null2String(rs.getString("ngr")); + String bt = Util.null2String(rs.getString("bt")); + String szbm = Util.null2String(rs.getString("szbm")); + String jjcd = Util.null2String(rs.getString("jjcd")); + String jjyy = Util.null2String(rs.getString("jjyy")); + String lxfs = Util.null2String(rs.getString("lxfs")); + String ngsj = Util.null2String(rs.getString("ngsj")); + String xjhjmx = Util.null2String(rs.getString("xjhjmx")); + String ngrfyhj = Util.null2String(rs.getString("ngrfyhj")); + String fyhjsp = Util.null2String(rs.getString("fyhjsp")); + String skdw = Util.null2String(rs.getString("skdw")); + String ggfyqtfy = Util.null2String(rs.getString("ggfyqtfy")); + String fkxx = Util.null2String(rs.getString("fkxx")); + String fzjgcwjl = Util.null2String(rs.getString("fzjgcwjl")); + String zzfptjr = Util.null2String(rs.getString("zzfptjr")); + String requestName = lcbh + bt + "的预付款费用确认"; + String bz = "收款方: "+skdw; + log.info("预付款流程确认标题=="+requestName); + + //生成流程编号 +// int formModeId = PayUtil.getFormModeIdByCubeName("uf_fklcbh"); +//// StringBuilder mark = new StringBuilder(); // 流程编码 +//// String workflowName = ""; +//// String unNumber = ""; +//// +//// rsdetail.executeQuery("select workflowname,unnumber from workflow_base where id=?",workflowId); +//// if (rsdetail.next()){ +//// workflowName = Util.null2String(rsdetail.getString("workflowname")); +//// unNumber = Util.null2String(rsdetail.getString("unnumber")); +//// } +//// log.info("==流程名称和唯一编码=="+workflowName+"==="+unNumber); +//// String modeUuid = ""; +//// LocalDateTime localDateTime = LocalDateTime.now(); +//// String date = localDateTime.format(DateTimeFormatter.ofPattern("yyyyMM")); +//// rsdetail.executeQuery("select id,lsh,modeuuid from uf_fklcbh where ny = ? and" + +//// " lclx = ?",date,unNumber); +//// if (rsdetail.next()){ +//// if (number == -1){ +//// number = Util.getIntValue(rsdetail.getString("lsh")) + 1; +//// }else { +//// number = number + 1; +//// } +//// +//// int id = Util.getIntValue((rsdetail.getString("id"))); +//// modeUuid = Util.null2String(rsdetail.getString("modeuuid")); +//// +//// rst.executeUpdate("update uf_fklcbh set lsh = ? where id = ?",number,id); +//// mark = new StringBuilder(number + ""); +//// while(mark.length() < 6){ +//// mark.insert(0,"0"); +//// } +//// mark = new StringBuilder(workflowName + date + mark); +//// }else { +//// String createDate = localDateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); +//// String createTime = localDateTime.format(DateTimeFormatter.ofPattern("HH:mm:ss")); +//// //插入 +//// String insertSql = "insert into uf_fklcbh" + +//// "(FORMMODEID,MODEDATACREATER,MODEDATACREATERTYPE,MODEDATACREATEDATE,MODEDATACREATETIME,MODEUUID,LSH,NY,LCLX) \n" + +//// "values(?,?,?,?,?,?,?,?,?)"; +//// String uuid = UUID.randomUUID().toString(); +//// modeUuid = uuid; +//// rst.executeUpdate(insertSql, formModeId, ngr, 0, createDate, createTime, uuid, "1", date, unNumber); +//// mark = new StringBuilder(workflowName + date + "000001"); +//// } +// log.info("==流程编号=="+mark); +// +// +// //权限重构 +// int dataId = PayUtil.getDataIdByUUID(modeUuid); +// ModeRightInfo modeRightInfo = new ModeRightInfo(); +// modeRightInfo.editModeDataShare(1, formModeId, dataId); + +// 预付款流程 + String mark = CoWfUtil.getRequestMarkByUnNumber("zbyfkfyqr", Sequences.NET_REI_WORKFLOW_SEQ_ZB); + + requestMainMap.put("zzfptjr",zzfptjr); + requestMainMap.put("ngr",ngr); + requestMainMap.put("glyfklc",requestid); + requestMainMap.put("szbm",szbm); + requestMainMap.put("jjcd",jjcd); + requestMainMap.put("jjyy",jjyy); + requestMainMap.put("lxfs",lxfs); + requestMainMap.put("ngsj",ngsj); + requestMainMap.put("xjhjmx",xjhjmx); + requestMainMap.put("ngrfyhj",ngrfyhj); + requestMainMap.put("fyhjsp",fyhjsp); + requestMainMap.put("ggfyqtfy",ggfyqtfy); + requestMainMap.put("bz",bz); + requestMainMap.put("spjg","0"); + requestMainMap.put("fkxx",fkxx); + requestMainMap.put("fzjgcwjl",fzjgcwjl); + requestMainMap.put("lcbh",mark.toString()); + requestMainMap = removeNullValue(requestMainMap); + log.info("预付款流程生成过滤后参数=="+ JSON.toJSONString(requestMainMap)); + //2.自动创建流程获取requestid + int requestid_main_213 = Util.getIntValue(WorkflowCreateByRequestMap(ngr,workflowId,requestName,IsNextFlow,requestMainMap)); + log.info("预付款流程确认自动生成requestid=="+requestid_main_213); + if (requestid_main_213 > 0) { + Integer form_id = null; + rsdetail.executeQuery("select id from "+tableName+" where requestid = ?",requestid_main_213); + if (rsdetail.next()){ + form_id = Util.getIntValue(rsdetail.getString("id")); + } + + //1.更新流程编号 + log.info("requestid=="+requestid_main_213+"==lcbh:"+mark.toString()); + rst.executeUpdate("update workflow_requestbase set requestmark = ? where requestid = ? ",mark.toString(),requestid_main_213); + + + //3.更新预付款流程的明细表(采用批量插入更新方法)只执行一次 + String tableName_detail_eight = tableName + "_dt8"; + String detail_eight_sql = "insert into "+tableName_detail_eight+" (mainid,bhsje,sj,jshjje,sy,fysjcdbm,sl,yskm,slz,htbh,cys,yskmid) " + + " select "+form_id+",bhsje,sj,jshjje,sy,fysjcdbm,sl,yskm,slz,htbh,cys,'"+yskmPre+"_'||yskm from uf_yfkmiddle_dt8 where mainid = "+uf_id+""; + log.info("批量插入sql明细表8=="+detail_eight_sql); + rst.executeUpdate(detail_eight_sql); + + String tableName_detail_nine = tableName + "_dt9"; + String detail_nine_sql = "insert into "+tableName_detail_nine+" (mainid,rmbje,htbh,sy,bz,hl,wbje,yskm,fysjcdbm,cys,yskmid) " + + " select "+form_id+",rmbje,htbh,sy,bz,hl,wbje,yskm,fysjcdbm,cys,'"+yskmPre+"_'||yskm from uf_yfkmiddle_dt9 where mainid = "+uf_id+""; + log.info("批量插入sql明细表9=="+detail_nine_sql); + rst.executeUpdate(detail_nine_sql); + + String tableName_detail_eleven = tableName + "_dt11"; + String detail_eleven_sql = "insert into "+tableName_detail_eleven+" (mainid,skdw,yxzh,khx,ss,yxzfje,xjzfje,dfkje,lsjl,khxmc) " + + " select "+form_id+",skdw,yxzh,khx,ss,yxzfje,xjzfje,dfkje,lsjl,khxmc from uf_yfkmiddle_dt11 where mainid = "+uf_id+""; + log.info("批量插入sql明细表11=="+detail_eleven_sql); + rst.executeUpdate(detail_eleven_sql); + + String tableName_detail_twelve = tableName + "_dt12"; + String detail_twelve_sql = "insert into "+tableName_detail_twelve+" (mainid,fysjcdbm,je,sjbz,zhrmb,hjkm,hl,hjkmid,yskmmc,yskm) " + + " select "+form_id+",fysjcdbm,je,sjbz,zhrmb,hjkm,hl,'"+hjkmPre+"_'||hjkm,yskmmc,yskm from uf_yfkmiddle_dt12 where mainid = "+uf_id+""; + log.info("批量插入sql明细表12=="+detail_twelve_sql); + rst.executeUpdate(detail_twelve_sql); + + + //4.更新建模中间表表示该条数据已完成新建流程 + rst.executeUpdate("update uf_yfkmiddle set sfcf = 0 where reqid = ?",requestid); + log.info("AdvancePaymentJob==预付款流程自动创建成功=="); + + + } + } + log.info("==建模中间表未存在需要自动触发的流程==="); + rst.commit(); + }catch (Exception e){ + rst.rollback(); + log.info("预付款流程自动创建失败"); + e.printStackTrace(); + } + + } + + /** + * 移除map中的空值数据 + * @param map + * @return + */ + public static Map removeNullValue(Map map){ + Map newMap = new HashMap(); + for (Map.Entry entry : map.entrySet()) { + String key = entry.getKey(); + String value = entry.getValue(); + if(value!=null && !"".equals(value)){ + newMap.put(key,value); + } + } + return newMap; + } + + + /** + * + * @Title: 自动创建流程 + * @param @param creatorId 创建人Id + * @param @param workflowId 流程Id + * @param @param requestName 请求标题 + * @param @param IsNextFlow 是否提交到下一节点 + * @param @param requestMap Map格式的主表数据=<字段名称,字段值> + * @param @return 设定文件 + * @return String 返回类型 + * @throws + */ + public static String WorkflowCreateByRequestMap(String creatorId,String workflowId, + String requestName,String IsNextFlow, + Map requestMainMap) { + BaseBean bs = new BaseBean(); + String requestid = ""; + RequestInfo requestInfo = new RequestInfo(); + requestInfo.setCreatorid(creatorId);//创建人Id + requestInfo.setWorkflowid(workflowId);//工作流Id + requestInfo.setDescription(requestName);//请求标题 + if(!"".equals(IsNextFlow)) + { + requestInfo.setIsNextFlow(IsNextFlow); + } + //主表字段 + MainTableInfo mainTableInfo = new MainTableInfo(); + Property[] propertyArray = new Property[requestMainMap.size()]; + int p = 0; + for (Map.Entry entry : requestMainMap.entrySet()) + { + propertyArray[p] = new Property(); + propertyArray[p].setName(Util.null2String(entry.getKey())); + propertyArray[p].setValue(Util.null2String(entry.getValue())); + bs.writeLog("\r\n---p="+p+"---Key="+entry.getKey()+"---Value="+entry.getValue()); + p++; + } + bs.writeLog("-----创建流程传递的参数个数p="+p); + mainTableInfo.setProperty(propertyArray); + requestInfo.setMainTableInfo(mainTableInfo); + RequestService service = new RequestService(); + try { + //流程 + try { + requestid = service.createRequest(requestInfo);//创建请求id + } catch (Exception e) { + bs.writeLog("预付款流程触发异常"+e.getMessage()); + } + //String userId = requestInfo.getLastoperator();//请求最后的操作者 + //记录日志 + StringBuffer sbf = new StringBuffer("\r\n-----xwd创建工作流记录日志开始"); + WorkflowComInfo wfcif =new WorkflowComInfo(); + RequestComInfo rcif = new RequestComInfo(); + ResourceComInfo rscif = new ResourceComInfo(); + sbf.append("\r\n-----姓名:"+rscif.getLastname(rcif.getRequestCreater(requestid))); + sbf.append("\r\n-----时间:"+rcif.getRequestCreateTime(requestid)); + sbf.append("\r\n-----创建流程:"+wfcif.getWorkflowname(workflowId)); + sbf.append("\r\n-----请求:"+rcif.getRequestname(requestid)); + sbf.append("\r\n-----请求:"+requestid); + sbf.append("\r\n-----创建工作流记录日志结束"); + bs.writeLog(sbf.toString()); + System.out.println(""+sbf.toString()); + } catch (Exception e) { + bs.writeLog("错误:" + e); + System.out.println("错误:" + e); + } + return requestid; + } +} diff --git a/src/main/java/weaver/interfaces/htsc/yfkqrlc/util/ActionsUtil.java b/src/main/java/weaver/interfaces/htsc/yfkqrlc/util/ActionsUtil.java new file mode 100644 index 0000000..9572d36 --- /dev/null +++ b/src/main/java/weaver/interfaces/htsc/yfkqrlc/util/ActionsUtil.java @@ -0,0 +1,156 @@ +package weaver.interfaces.htsc.yfkqrlc.util; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.lang3.StringUtils; +import weaver.conn.RecordSet; +import weaver.general.BaseBean; +import weaver.general.Util; +import weaver.interfaces.htsc.comInfo.PropBean; +import weaver.soa.workflow.request.*; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class ActionsUtil { + + // 获取主表数据 + public static Map getMainInfo(RequestInfo requestInfo) { + Map map = new HashMap(); + Property[] property = requestInfo.getMainTableInfo().getProperty(); + for (int i = 0; i < property.length; i++) { + map.put(property[i].getName().toLowerCase(), Util.null2String(property[i].getValue())); + } + return map; + } + + + // 获取明细表数据 + public static List getDetailInfo(RequestInfo requestInfo, int num) { + DetailTable detailTable = requestInfo.getDetailTableInfo().getDetailTable(num); + //dtltable数组中的行数据集合 + Row[] rows = detailTable.getRow(); + List sublist = new ArrayList(); + for (int i = 0; i < rows.length; i++) { + Row row = rows[i]; + Map onerow = new HashMap(); + sublist.add(onerow); + Cell[] cells = row.getCell(); + for (int j = 0; j < cells.length; j++) { + Cell cell = cells[j]; + onerow.put(cell.getName(), Util.null2String(cell.getValue())); + } + } + return sublist; + } + + + /** + * @param fieldName 获取的字段名 + * @param tableNum 明细表Num + * @param requestInfo 参数 + * @param interval 间隔符 + * @Describe 通过RequestInfo获取明细表指定字段 + */ + public static String getDataStringByRequestInfo(String fieldName, int tableNum, RequestInfo requestInfo, String interval) { + String returnResult = ""; + List dtData = getDetailInfo(requestInfo, tableNum - 1); + if (dtData.size() != 0) { + List htbhList = new ArrayList<>(dtData.size()); + for (Object dtOne : dtData) { + Map oneRow = (Map) dtOne; + String aFieldVal = Util.null2String(oneRow.get(fieldName)); + // 去重去空处理 + if ((!"".equals(aFieldVal)) && (!" ".equals(aFieldVal)) && (!htbhList.contains(aFieldVal))) { + htbhList.add(aFieldVal); + } + } + htbhList.remove(null); + returnResult = StringUtils.join(htbhList, interval); + } + return returnResult; + } + + /** + * @param requestId 付款流程的requestid + * @return Map(String, Object) + * @Describe 根据付款流程编号,查询已经触发的预付款流程,并获取预付款流程的流程编号、开票方、已核销金额参数 + */ + public static Map yfkParamsMap(String requestId) { + RecordSet rs = new RecordSet(); + BaseBean bb = new BaseBean(); + String sql = ""; + String yfkTableName = new PropBean().getPropName("yfkTableName"); + Map resultMap = new HashMap<>(); + // 符合要求的预付款流程编号 + List rightRequestIds = new ArrayList<>(); + // 获取已触发的预付款流程的流程编号(已办结并且不是终止) + sql = "select a.requestid,currentnodetype,isstopped from " + yfkTableName + " a JOIN workflow_requestbase b " + + "on a.GLYFKLC = b.requestid where GLYFKLC = '" + requestId + "'"; + bb.writeLog("即将执行的sql是:" + sql); + rs.executeQuery(sql); + while (rs.next()) { + String currentnodetype = Util.null2String(rs.getString("currentnodetype")); + String isstopped = Util.null2String(rs.getString("isstopped")); + if ((!"1".equals(isstopped)) && ("3".equals(currentnodetype))) { + // 已办结并且不是终止 + rightRequestIds.add(Util.null2String(rs.getString("requestid"))); + } + } + bb.writeLog("==============获取到归档并且不是终止的预付款流程编号有:"+ JSONObject.toJSONString(rightRequestIds)); + String yfkReqIds = StringUtils.join(rightRequestIds,","); + List kpf = new ArrayList<>(); + // 1、获取流程编号 + sql = "select REPLACE(wm_concat_old(lcbh), ',', ';') as lcbh from " + yfkTableName + " where requestid in ("+yfkReqIds+")"; + bb.writeLog("==========获取流程编号的sql是:"+sql); + rs.executeQuery(sql); + if (rs.next()) { + resultMap.put("lcbh",Util.null2String(rs.getString("lcbh")).replaceAll(" ", " ").replaceAll("
", "")); + } + // 2、获取开票方 + // 2.1、获取增值税的销方名称 + sql = "select REPLACE(wm_concat_old(xfmc), ',', ';') as xfmcs from "+yfkTableName+"_dt5 " + + "where mainid in (select id from "+yfkTableName+" where requestid in ("+yfkReqIds+"))"; + bb.writeLog("获取明细表5销方名称的sql是:"+sql); + rs.executeQuery(sql); + if (rs.next()) { + String xfmcs = Util.null2String(rs.getString("xfmcs")); + if (!"".equals(xfmcs)){ + kpf.add(xfmcs); + } + } + // 2.2、获取其他票的开票方 + sql = "select REPLACE(wm_concat_old(kpf), ',', ';') as kpfs from "+yfkTableName+"_dt6 " + + "where mainid in (select id from "+yfkTableName+" where requestid in ("+yfkReqIds+"))"; + bb.writeLog("获取明细表6开票方的sql是:"+sql); + rs.executeQuery(sql); + if (rs.next()) { + String kpfs = Util.null2String(rs.getString("kpfs")); + if (!"".equals(kpfs)){ + kpf.add(kpfs); + } + } + resultMap.put("kpf",StringUtils.join(kpf,";").replaceAll(" ", " ").replaceAll("
", "")); + // 3、已核销金额 + sql = "select SUM(jshjze) as yhxje from "+yfkTableName+"_dt7 " + + "where mainid in (select id from "+yfkTableName+" where requestid in ("+yfkReqIds+"))"; + rs.executeQuery(sql); + if (rs.next()){ + resultMap.put("yhxje",Util.null2String(rs.getString("yhxje"))); + } + return resultMap; + } + + public static int getDataIdByUUID(String uuid, String uf_tableName) { + RecordSet rs = new RecordSet(); + int dataid = -1; + String sql = "select id from " + uf_tableName + " where modeuuid = ?"; + if (rs.executeQuery(sql, uuid) && rs.next()) { + dataid = Util.getIntValue(rs.getString(1)); + } + return dataid; + } + +} \ No newline at end of file diff --git a/src/main/java/weaver/interfaces/htsc/zgk/AddDefaultSendMessageAction.java b/src/main/java/weaver/interfaces/htsc/zgk/AddDefaultSendMessageAction.java new file mode 100644 index 0000000..46e2d0b --- /dev/null +++ b/src/main/java/weaver/interfaces/htsc/zgk/AddDefaultSendMessageAction.java @@ -0,0 +1,124 @@ +package weaver.interfaces.htsc.zgk; + +import com.alibaba.fastjson.JSONObject; +import com.engine.integration.util.StringUtils; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.htsc.GlobatTools.JAVATools; +import weaver.interfaces.htsc.GlobatTools.Smstools; +import weaver.interfaces.htsc.comInfo.PropBean; +import weaver.soa.workflow.request.RequestInfo; + +import java.util.*; +import java.util.stream.Collectors; + + +/** + * @author K1810039 + * 宣传素材库 新增默认 文件时给部门负责人发送消息 + */ +public class AddDefaultSendMessageAction extends AbstractModeExpandJavaCodeNew { + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + User user = (User)param.get("user"); + int billid = -1; + int modeid = -1; + RequestInfo requestInfo = (RequestInfo)param.get("RequestInfo"); + if(requestInfo!=null){ + billid = Util.getIntValue(requestInfo.getRequestid()); + modeid = Util.getIntValue(requestInfo.getWorkflowid()); + if(billid>0&&modeid>0){ + JAVATools.writelog("-----AddDefaultSendMessageAction----"); + String sql = ""; + String wjmc = ""; + String cjr = ""; + String name = ""; + String loginId = ""; + String deptDirectors = ""; + // 消息接收人 + Set receivers = new HashSet<>(); + PropBean propBean = new PropBean(); + RecordSet rs = new RecordSet(); + + //根据billid,获取文件名,和创建人 + sql = "select WJMC,CJR from uf_xcsck where ID = "+billid; + JAVATools.writelog(sql); + rs.execute(sql); + if (rs.next()){ + wjmc = rs.getString("WJMC"); + cjr = rs.getString("CJR"); + } + + // 根据id获取创建人姓名,工号 + sql = "select LASTNAME,LOGINID from HRMRESOURCE where ID = "+cjr; + JAVATools.writelog(sql); + rs.execute(sql); + if (rs.next()){ + name = rs.getString("LASTNAME"); + loginId = rs.getString("LOGINID"); + } + + // 获取部门负责人 + sql = "select d.DEPTDIRECTORS from HRMDEPARTMENTDEFINED d join HRMRESOURCE h on d.DEPTID = h.DEPARTMENTID where h.ID = "+cjr; + JAVATools.writelog(sql); + rs.execute(sql); + if (rs.next()){ + deptDirectors = rs.getString("DEPTDIRECTORS"); + } + + if (StringUtils.isBlank(deptDirectors)){ + result.put("flag", "true"); + JAVATools.writelog("DEPTDIRECTORS is null !"); + return result; + } + + // 消息接收人 + String[] res = deptDirectors.split(","); + for (String re : res) { + receivers.add(re); + } + + // 获取消息绑定标识 + int typeid = 0; + String messageId = propBean.getPropName("xcsck_addDefault_messageId"); + typeid = Util.getIntValue(messageId); + JAVATools.writelog("int转化后:"+messageId); + + // 标题 + String title = "宣传素材库文件变更提醒"; + // 消息正文 + String context = name + "("+loginId+")" + "于素材库中新增了"+wjmc+",请您及时查看。"; + JAVATools.writelog("消息的正文内容是:"+context); + + //参数打印 + Map paramsMap = new HashMap<>(); + paramsMap.put("typeid",typeid); + paramsMap.put("receiver",receivers); + paramsMap.put("title",title); + paramsMap.put("context",context); + JAVATools.writelog("传递的参数是:"+ JSONObject.toJSONString(paramsMap)); + + // 发送消息 + Smstools smstools = new Smstools(); + boolean sendResult = smstools.sendMessage(typeid, receivers, title, context, "", ""); + if (sendResult){ + JAVATools.writelog("send Message successfully"); + }else { + JAVATools.writelog("send Message fails"); + requestInfo.getRequestManager().setMessagecontent("消息发送失败,请检查参数" + typeid+"|"+JSONObject.toJSONString(receivers)+"|"+title+"|"+context+"|"+""+"|"+""); + } + + } + } + result.put("flag", "true"); + } catch (Exception e) { + result.put("errmsg","自定义出错信息"); + result.put("flag", "false"); + } + return result; + } +} \ No newline at end of file diff --git a/src/main/java/weaver/interfaces/htsc/zgk/AddSendMessageAction.java b/src/main/java/weaver/interfaces/htsc/zgk/AddSendMessageAction.java new file mode 100644 index 0000000..5f7d7c8 --- /dev/null +++ b/src/main/java/weaver/interfaces/htsc/zgk/AddSendMessageAction.java @@ -0,0 +1,130 @@ +package weaver.interfaces.htsc.zgk; + +import java.util.*; +import java.util.stream.Collectors; + +import com.alibaba.fastjson.JSONObject; +import com.engine.integration.util.StringUtils; +import weaver.conn.RecordSet; +import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew; +import weaver.general.Util; +import weaver.hrm.User; +import weaver.interfaces.htsc.GlobatTools.JAVATools; +import weaver.interfaces.htsc.GlobatTools.Smstools; +import weaver.interfaces.htsc.comInfo.PropBean; +import weaver.soa.workflow.request.RequestInfo; + + +/** + * @author K1810039 + * 宣传素材库 新增 文件时给部门负责人发送消息 + */ +public class AddSendMessageAction extends AbstractModeExpandJavaCodeNew { + + @Override + public Map doModeExpand(Map param) { + Map result = new HashMap<>(); + try { + User user = (User)param.get("user"); + int billid = -1; + int modeid = -1; + RequestInfo requestInfo = (RequestInfo)param.get("RequestInfo"); + if(requestInfo!=null){ + billid = Util.getIntValue(requestInfo.getRequestid()); + modeid = Util.getIntValue(requestInfo.getWorkflowid()); + if(billid>0&&modeid>0){ + JAVATools.writelog("-----AddSendMessageAction----"); + String sql = ""; + String cjr = ""; + String name = ""; + String loginId = ""; + String deptDirectors = ""; + List wjmcList = new ArrayList<>(); + // 消息接收人 + Set receivers = new HashSet<>(); + PropBean propBean = new PropBean(); + RecordSet rs = new RecordSet(); + + //根据billid,获取所有的文件名,和创建人 + sql = "select * from uf_scsckwj_dt1 where MAINID = "+billid; + JAVATools.writelog(sql); + rs.execute(sql); + while (rs.next()){ + String wjName = rs.getString("wjmcfzzd"); + if (!StringUtils.isBlank(wjName)){ + wjmcList.add(wjName.substring(0,wjName.lastIndexOf("."))); + } + cjr = rs.getString("cjr"); + } + String wjmcStrs = wjmcList.stream().collect(Collectors.joining(",")); + + // 根据id获取创建人姓名,工号 + sql = "select LASTNAME,LOGINID from HRMRESOURCE where ID = "+cjr; + JAVATools.writelog(sql); + rs.execute(sql); + if (rs.next()){ + name = rs.getString("LASTNAME"); + loginId = rs.getString("LOGINID"); + } + + // 获取部门负责人 + sql = "select d.DEPTDIRECTORS from HRMDEPARTMENTDEFINED d join HRMRESOURCE h on d.DEPTID = h.DEPARTMENTID where h.ID = "+cjr; + JAVATools.writelog(sql); + rs.execute(sql); + if (rs.next()){ + deptDirectors = rs.getString("DEPTDIRECTORS"); + } + + if (StringUtils.isBlank(deptDirectors)){ + result.put("flag", "true"); + JAVATools.writelog("DEPTDIRECTORS is null !"); + return result; + } + + // 消息接收人 + String[] res = deptDirectors.split(","); + for (String re : res) { + receivers.add(re); + } + + // 获取消息绑定标识 + int typeid = 0; + String messageId = propBean.getPropName("xcsck_messageId"); + typeid = Util.getIntValue(messageId); + JAVATools.writelog("int转化后:"+messageId); + + // 标题 + String title = "宣传素材库文件变更提醒"; + // 消息正文 + String context = name + "("+loginId+")" + "于素材库中新增了"+wjmcStrs+",请您及时查看。"; + JAVATools.writelog("消息的正文内容是:"+context); + + //参数打印 + Map paramsMap = new HashMap<>(); + paramsMap.put("typeid",typeid); + paramsMap.put("receiver",receivers); + paramsMap.put("title",title); + paramsMap.put("context",context); + JAVATools.writelog("传递的参数是:"+ JSONObject.toJSONString(paramsMap)); + + // 发送消息 + Smstools smstools = new Smstools(); + boolean sendResult = smstools.sendMessage(typeid, receivers, title, context, "", ""); + if (sendResult){ + JAVATools.writelog("send Message successfully"); + }else { + JAVATools.writelog("send Message fails"); + requestInfo.getRequestManager().setMessagecontent("消息发送失败,请检查参数" + typeid+"|"+JSONObject.toJSONString(receivers)+"|"+title+"|"+context+"|"+""+"|"+""); + } + + } + } + result.put("flag", "true"); + } catch (Exception e) { + result.put("errmsg","自定义出错信息"); + result.put("flag", "false"); + } + return result; + } + +} \ No newline at end of file