#HTXC-1# 初始化开发环境

main
shilei 3 years ago
parent 56082f3d05
commit d52ddcb683

@ -0,0 +1,9 @@
package com.api.htsc.aqsc.web;
import com.engine.htsc.aqsc.web.AqscAcion;
import javax.ws.rs.Path;
@Path("/htsc/aqsc")
public class AqscActionApi extends AqscAcion {
}

@ -0,0 +1,9 @@
package com.api.htsc.branchpayment;
import com.engine.htsc.branchpayment.web.BranchGeneralPaymentAction;
import javax.ws.rs.Path;
@Path(value="/branch/general/payment")
public class BranchGeneralPaymentActionApi extends BranchGeneralPaymentAction {
}

@ -0,0 +1,17 @@
package com.api.htsc.workflow;
import com.engine.htsc.workflow.web.AssignProcessorAction;
import javax.ws.rs.Path;
import java.util.UUID;
/**
* Created by K1810006 on 2020/9/23.
*/
@Path("/htsc/workflow/processor")
public class AssignProcessorActionApi extends AssignProcessorAction{
public static void main(String[] args){
System.out.println("-------------------"+ UUID.randomUUID());
}
}

@ -0,0 +1,256 @@
package com.customization.htsc.autonode;
import com.engine.core.cfg.annotation.CommandDynamicProxy;
import com.engine.core.interceptor.AbstractCommandProxy;
import com.engine.core.interceptor.Command;
import com.engine.workflow.cmd.requestForm.RequestManager_FlowNextNodeCmd;
import org.apache.commons.lang.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.htsc.comInfo.PropBean;
import javax.servlet.http.HttpServletRequest;
/**
* Created by dengjp
* #HTO-1520#
*
* 1
* 1.
* 2.
* 2020/12/18
*
* 2
*/
@CommandDynamicProxy(target = RequestManager_FlowNextNodeCmd.class, desc = "自动节点扩展")
public class AutoNodeFlowNextNodeCmd extends AbstractCommandProxy<Boolean> {
@Override
public Boolean execute(Command<Boolean> targetCommand) {
BaseBean beanBean = new BaseBean();
PropBean propbean = new PropBean();
try {
beanBean.writeLog("进入拦截");
HttpServletRequest request = ((RequestManager_FlowNextNodeCmd) targetCommand).getRequestManager().getRequest();
String requestId = Util.null2String(request.getParameter("requestid"));
String workflowid = Util.null2String(request.getParameter("workflowid"));
String workflowunnumber = propbean.getWorkflowUnNumberByid(workflowid);
beanBean.writeLog("流程的requestId " + requestId);
//执行标准的业务处理
Boolean result = nextExecute(targetCommand);
beanBean.writeLog("当前节点 result : " + result);
// 判断自由节点是否插入成功
try{
if(Util.getIntValue(requestId) > 0)
{
this.rollbackFreeNode(result, requestId);
// 修改自由节点标题显示问题
if(result)
{
RecordSet rs = new RecordSet();
String status = "";
String currentnodeid = "";
// 先获取原先status
String selectSql = "select status, currentnodeid from workflow_requestbase where requestid=?";
rs.executeQuery(selectSql, requestId);
if(rs.next()){
status = Util.null2String(rs.getString("status"));
currentnodeid = Util.null2String(rs.getString("currentnodeid"));
}
beanBean.writeLog("当前节点 status : " + status + " currentnodeid9999 " + currentnodeid);
// 如果当前节点是自由节点修改workflow_requestbase的status字段该为当前节点的nodename
// if ("~`~`7 自由节点`~`8 Free Nodes`~`~".equals(status)) {
if (Integer.parseInt(currentnodeid)<0)
{
String formid = getTableByRequestid(requestId);
beanBean.writeLog("formid:"+formid);
if(!"".equals(formid))
{
String table = "formtable_main_" ;
String tablename = table + formid;
beanBean.writeLog("查看sqltablename"+tablename);
String xybz = "";
String sqlsum = "select xybz from "+tablename+" where requestid="+requestId+" and xybz in (0,1,6)";
beanBean.writeLog("sql999"+sqlsum);
rs.execute(sqlsum);
if(rs.next()){
xybz = Util.null2String(rs.getString("xybz"));
}
beanBean.writeLog("xybz"+xybz);
String shq = propbean.getPropName("nodename_shq");
String kgshq = propbean.getPropName("nodename_kgshq");
String yzgsbm = propbean.getPropName("nodename_yzgsbm");
String nodeName = "";
if("0".equals(xybz))
{
nodeName = shq;
}
if("1".equals(xybz))
{
nodeName = kgshq;
}
// if("6".equals(xybz))
// {
// nodeName = yzgsbm;
// }
if("itlxsq".equals(workflowunnumber))
{
String ysxgbm = propbean.getPropName("nodename_ysxgbm");
if("10".equals(xybz))
{
nodeName = ysxgbm;
}
}
if("jgzxzysx".equals(workflowunnumber)||"fzjgzysx".equals(workflowunnumber)||"fzjgyy".equals(workflowunnumber)||"zbyy".equals(workflowunnumber)){
String jdfl = "";
String jdmc = "";
String sql = "select jdfl,jdmc from uf_qzyjhqb where lcid = '"+requestId+"' and freenode like '%"+currentnodeid+"%'";
beanBean.writeLog("sql"+sql);
rs.execute(sql);
if(rs.next()){
jdfl = Util.null2String(rs.getString("jdfl"));
jdmc = Util.null2String(rs.getString("jdmc"));
}
String yzgsbm_jdfl = propbean.getPropName("jdfl.yzgsbm");
if(yzgsbm_jdfl.equals(jdfl)){
sql = "select nodename from workflow_freenode where requestid = '"+requestId+"' and id = '"+currentnodeid+"'";
beanBean.writeLog("sql"+sql);
rs.execute(sql);
if(rs.next()){
nodeName = Util.null2String(rs.getString("nodename"));
}
}else if(StringUtils.isNotEmpty(jdmc)){
nodeName = jdmc;
}
}
if("itxqsq".equals(workflowunnumber))
{
String ysxgbm = propbean.getPropName("itxqlc_xqjsrfs_nodename");
nodeName = ysxgbm;
}
if("jgxtsq".equals(workflowunnumber))
{
if("7".equals(xybz)){
String ysxgbm = propbean.getPropName("jgxt_fs_zbnodename");
nodeName = ysxgbm;
}else if("6".equals(xybz)){
String ysxgbm = propbean.getPropName("jgxt_fs_yybnodename");
nodeName = ysxgbm;
}
}
if("mbwj".equals(workflowunnumber))
{
if("0".equals(xybz)){
String ysxgbm = propbean.getPropName("wdzx.fs.xtfzrname");
nodeName = ysxgbm;
}else if("1".equals(xybz)){
String ysxgbm = propbean.getPropName("wdzx.fs.xgbmname");
nodeName = ysxgbm;
}
}
if(nodeName!="")
{
beanBean.writeLog("更新request base 的 status: " + status + ", 更新为 nodename: " + nodeName);
beanBean.writeLog("更新操作");
String updateFreeNode = " update workflow_requestbase set status = ? where requestid=?";
boolean updated = rs.executeUpdate(updateFreeNode, nodeName, requestId);
if (updated) {
beanBean.writeLog("更新成功:"+updateFreeNode+"nodeName"+nodeName+"requestid"+requestId);
} else {
beanBean.writeLog("更新失败:"+updateFreeNode+"nodeName"+nodeName+"requestid"+requestId);
}
}
}
}
}
}
}catch (Exception e){
beanBean.writeLog("AutoNodeFlowNextNodeCmd-e:"+e);
}
return result;
} catch (Exception e) {
Boolean result = nextExecute(targetCommand);
beanBean.writeLog("当前节点 result : " + result);
e.printStackTrace();
beanBean.writeLog("更新自由节点失败:" + e.getMessage());
//执行标准的业务处理
return result;
}
}
/**
* uf_qzyjhqbzt1
* uf_qzyjhqbztnullrequestid
* @param resultStatus cmd
* @param requestid requestid
*/
private boolean rollbackFreeNode(Boolean resultStatus, String requestid) {
BaseBean baseBean = new BaseBean();
try {
RecordSet rs = new RecordSet();
String id = "";
String sql = " select id from uf_qzyjhqb where lcid=? and zt is null";
rs.executeQuery(sql,new Object[]{requestid});
if(rs.next()){
id = Util.null2String(rs.getString("id"));
}
if(!"".equals(id))
{
if(resultStatus)
{
// 插入自由节点成功将zt字段设为1
String updateSql = "update uf_qzyjhqb set zt = '1' where LCID = ?";
rs.executeUpdate(updateSql, requestid);
baseBean.writeLog("requestid "+requestid+" : "+"插入自由节点成功将zt字段设为1");
}else {
// 回滚数据
String deletenodeflow=" delete from workflow_freenode where id in ( select freenode from uf_qzyjhqb where zt is null and LCID =? )";
rs.executeUpdate(deletenodeflow, requestid);
String deleteSql = " delete from uf_qzyjhqb where zt is null and LCID = ?";
rs.executeUpdate(deleteSql, requestid);
baseBean.writeLog("requestid "+requestid+" : "+"插入自由节点失败,回滚数据");
}
}
} catch (Exception e) {
e.printStackTrace();
baseBean.writeLog("回滚自由节点失败");
}
return resultStatus;
}
public String getTableByRequestid(String requestid){
String formid = "";
try{
RecordSet rs = new RecordSet();
String sql =" select abs(t.formid) as formid \n" +
" from workflow_base t\n" +
" inner join workflow_requestbase l on l.workflowid = t.id\n" +
" where l.requestid="+requestid+"" ;
rs.execute(sql);
if(rs.next()){
formid = Util.null2String(rs.getString("formid"));
}
}catch (Exception e){
new BaseBean().writeLog("getTableByRequestid-e:"+e);
}
return formid;
}
}

@ -0,0 +1,15 @@
package com.engine.htsc.ReimbursementFlow.tool;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class Apireturn {
public static String returnmes(int Code, String message, JSONArray jsonArray){
JSONObject jsonObject=new JSONObject();
jsonObject.put("Code",Code);
jsonObject.put("data",jsonArray);
jsonObject.put("message",message);
return jsonObject.toString();
}
}

@ -0,0 +1,137 @@
package com.engine.htsc.aqsc.cmd;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
import com.engine.common.entity.BizLogContext;
import com.engine.core.interceptor.CommandContext;
import com.engine.htsc.itlxlc.util.RequestShareUtil;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.GCONST;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.interfaces.htsc.comInfo.PropBean;
import weaver.interfaces.htsc.cus.HTUtil;
import java.io.IOException;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class AqscDateCmd extends AbstractCommonCommand<Map<String, Object>> {
public AqscDateCmd(User user, Map<String, Object> params) {
this.params = params;
this.user = user;
}
@Override
public BizLogContext getLogContext() {
return null;
}
@Override
public Map<String, Object> execute(CommandContext commandContext) {
Map<String, Object> apimap = new HashMap<String, Object>();
RecordSet rs = new RecordSet();
BaseBean bb = new BaseBean();
String customid = Util.null2String(params.get("customid"));
bb.writeLog("customidL"+customid);
//con_56991
String departmentid = user.getUserDepartment()+"";
String departmentcode = "" ;
if(!"".equals(departmentid)){
String sql = " select departmentcode from hrmdepartment where id="+departmentid;
rs.execute(sql);
if(rs.next()){
departmentcode = Util.null2String(rs.getString("departmentcode"));
}
}
//ZZ001126
String where = "";
if(!"".equals(customid)){
String sql = "select defaultsql from mode_customsearch where id="+customid ;
rs.execute(sql);
if(rs.next()){
where += Util.null2String(rs.getString("defaultsql"));
}
}
for (Map.Entry<String, Object> entry : params.entrySet()) {
System.out.println("Key = " + entry.getKey() + " Value = "+ entry.getValue());
String key = entry.getKey();
String value = Util.null2String(entry.getValue());
System.out.println(key + ":" + value);
String fieldid = "" ;
if(key.contains("con")){
fieldid = key.substring(4);
}else{
boolean bool = isNumeric(key);
if(bool){
fieldid = key;
}
}
if(!"".equals(fieldid)){
String filename = "" ;
String sql = " select filename from workflow_billfield where id= "+fieldid;
rs.execute(sql);
if(rs.next()){
filename = Util.null2String(rs.getString("filename"));
}
if(!"".equals(filename)){
where += where == "" ? " t1."+filename +"='"+value+"'" : " and t1."+ filename +"='"+value+"'";
}
}
}
if(!"ZZ001126".equals(departmentcode)){
where += " and t1.rwdwbm="+departmentid ;
}
String wcsj = "" ;
String sql = " select min(wcsj) as wcsj from uf_aqscglbm t1 where "+where ;
bb.writeLog("sql"+sql);
rs.execute(sql);
if(rs.next()){
wcsj = Util.null2String(rs.getString("wcsj"));
}
apimap.put("wcsj",wcsj);
return apimap;
}
/***
*
* @param str
* @return
*/
public boolean isNumeric(String str){
Pattern pattern = Pattern.compile("[0-9]*");
Matcher isNum = pattern.matcher(str);
if( !isNum.matches() ){
return false;
}
return true;
}
}

@ -0,0 +1,16 @@
package com.engine.htsc.aqsc.service;
import weaver.hrm.User;
import java.util.Map;
public interface AqscService {
/***
*
* @param user
* @param params
* @return
*/
Map<String, Object> doGetDate(User user, Map<String, Object> params);
}

@ -0,0 +1,17 @@
package com.engine.htsc.aqsc.service.impl;
import com.engine.core.impl.Service;
import com.engine.htsc.aqsc.cmd.AqscDateCmd;
import com.engine.htsc.aqsc.service.AqscService;
import weaver.hrm.User;
import java.util.Map;
public class AqscServiceImpl extends Service implements AqscService {
@Override
public Map<String, Object> doGetDate(User user, Map<String, Object> params) {
return commandExecutor.execute(new AqscDateCmd(user,params));
}
}

@ -0,0 +1,47 @@
package com.engine.htsc.aqsc.web;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.htsc.aqsc.service.AqscService;
import com.engine.htsc.aqsc.service.impl.AqscServiceImpl;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
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 AqscAcion {
public AqscService getService(HttpServletRequest request, HttpServletResponse response){
return (AqscService) ServiceUtil.getService(AqscServiceImpl.class);
}
@GET
@Path("/doGetDate")
@Produces({MediaType.TEXT_PLAIN})
public String doGetDate(@Context HttpServletRequest request, @Context HttpServletResponse response){
Map<String,Object> apidatas = new HashMap<String,Object>();
try {
User user = HrmUserVarify.getUser( request, response );
Map<String,Object> param = ParamUtil.request2Map(request);
apidatas.putAll(this.getService(request,response).doGetDate(user,param));
apidatas.put("api_status", true);
apidatas.put("api_errormsg", "");
} catch (Exception e) {
e.printStackTrace();
apidatas.put("api_status", false);
apidatas.put("api_errormsg", "catch exception : " + e.getMessage());
}
return JSONObject.toJSONString(apidatas);
}
}

@ -0,0 +1,33 @@
package com.engine.htsc.branch.approvalChain.model;
import com.alibaba.fastjson.JSONArray;
public class BranchLinkReq {
private String unnumber="";
private String unnumbercode="";
private JSONArray value;
public String getUnnumber() {
return unnumber;
}
public void setUnnumber(String unnumber) {
this.unnumber = unnumber;
}
public String getUnnumbercode() {
return unnumbercode;
}
public void setUnnumbercode(String unnumbercode) {
this.unnumbercode = unnumbercode;
}
public JSONArray getValue() {
return value;
}
public void setValue(JSONArray value) {
this.value = value;
}
}

@ -0,0 +1,92 @@
package com.engine.htsc.branchpayment.enums;
import org.apache.commons.lang3.StringUtils;
/**
* k1810012
*
*/
public enum BranchPay {
GE_PAY("0", "fzjgtyfk", "htfk",
"com.engine.htsc.payment.service.impl.HeadPaymentBudgetCommand"), //通用付款
GE_REI("1", "fzjgtybx", "htpt",
"com.engine.htsc.payment.service.impl.HeadBxBudgetCommand"), //通用报销
TRA_REI("2", "fzjgclbx", "htcl",
"com.engine.htsc.payment.service.impl.HeadClBxBudgetCommand"), //差旅报销
SETTLE_PAY("3", "fzjgsljsfk", "htfk",
"com.engine.htsc.payment.service.impl.HeadPaymentBudgetCommand"), //商旅结算
CGSC_TRAVEL("4", "cgscfk", "htfk",
"com.engine.htsc.payment.service.impl.SettlePaymentCommand"); //采购商城付款
BranchPay(String type, String value, String lb, String commandClassName) {
this.type = type;
this.value = value;
this.lb = lb;
this.commandClassName = commandClassName;
}
private final String type;
private final String value;
private final String lb;
private final String commandClassName;
public String getType() {
return type;
}
public String getValue() {
return value;
}
public String getLb() {
return lb;
}
public String getCommandClassName() {
return commandClassName;
}
public static String getUnNumberByType(String type) {
if (StringUtils.isBlank(type)) {
return "";
}
String unNumber = "";
for (BranchPay value : BranchPay.values()) {
if (value.type.equalsIgnoreCase(type)) {
unNumber = value.value;
break;
}
}
return unNumber;
}
public static String getClassByType(String type) {
if (StringUtils.isBlank(type)) {
return "";
}
String className = "";
for (BranchPay value : BranchPay.values()) {
if (value.type.equalsIgnoreCase(type)) {
className = value.commandClassName;
break;
}
}
return className;
}
public static String getLbByType(String type) {
if (StringUtils.isBlank(type)) {
return "";
}
String lb = "";
for (BranchPay value : BranchPay.values()) {
if (value.type.equalsIgnoreCase(type)) {
lb = value.lb;
break;
}
}
return lb;
}
}

@ -0,0 +1,35 @@
package com.engine.htsc.branchpayment.service.impl;
import com.engine.htsc.branchpayment.enums.BranchPay;
import com.engine.htsc.payment.service.BudgetCommand;
import com.engine.htsc.subpayment.enums.SubPay;
/**
* command
*/
public class BranchBudgetCommandFactory {
private BranchBudgetCommandFactory() {
}
// 分支
public static BudgetCommand getBudgetCommand(String type) {
try {
return (BudgetCommand) Class.forName(BranchPay.getClassByType(type)).newInstance();
} catch (InstantiationException | ClassNotFoundException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
// 子公司
public static BudgetCommand getBudgetCommand4Sub(String type) {
try {
return (BudgetCommand) Class.forName(SubPay.getClassByType(type)).newInstance();
} catch (InstantiationException | ClassNotFoundException | IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}

@ -0,0 +1,96 @@
package com.engine.htsc.branchpayment.service.impl;
import cn.hutool.core.lang.Assert;
import com.engine.htsc.branchpayment.enums.BranchPay;
import com.engine.htsc.branchpayment.utils.BranchBizUtil;
import com.engine.htsc.payment.pojo.CostAccountDto;
import com.engine.htsc.payment.service.impl.SettlePaymentCommand;
import com.engine.htsc.payment.util.BizUtils;
import com.engine.htsc.subpayment.enums.SubPay;
import com.engine.htsc.subpayment.utils.SubBizUtil;
import org.apache.commons.logging.LogFactory;
/**
*
*/
public class BranchCostDTOFactory {
private BranchCostDTOFactory() {
}
// 分支
public static CostAccountDto getCostDTOByType(String requestId, String lx) throws Exception {
Assert.notBlank(requestId, "未指定流程id");
Assert.notBlank(lx, "未指定类型");
BizUtils bu = new BizUtils();
BranchBizUtil bizUtil = new BranchBizUtil();
SettlePaymentCommand settlePaymentCommand = new SettlePaymentCommand();
if (BranchPay.GE_PAY.getType().equalsIgnoreCase(lx)
|| BranchPay.SETTLE_PAY.getType().equalsIgnoreCase(lx)) {
return bizUtil.generateCommonPayData(requestId, BranchPay.getLbByType(lx));
}
if (BranchPay.GE_REI.getType().equalsIgnoreCase(lx)) {
return bu.generateCommonReimbData(requestId, BranchPay.getLbByType(lx));
}
if (BranchPay.TRA_REI.getType().equalsIgnoreCase(lx)) {
return bizUtil.generateTravelReimbData(requestId, BranchPay.getLbByType(lx));
}
if (BranchPay.CGSC_TRAVEL.getType().equalsIgnoreCase(lx)) {
return settlePaymentCommand.generateCommonReimbData(requestId, BranchPay.getLbByType(lx));
}
return null;
}
// 子公司
public static CostAccountDto getCostDTOByType4Sub(String requestId, String lx) throws Exception {
Assert.notBlank(requestId, "未指定流程id");
Assert.notBlank(lx, "未指定类型");
SubBizUtil subBizUtil = new SubBizUtil();
BizUtils bizUtils = new BizUtils();
if (SubPay.ZJ_REI.getType().equalsIgnoreCase(lx)) {
return bizUtils.ZjCommonReimbData(requestId, SubPay.getLbByType(lx));
}
if (SubPay.ZG_REI.getType().equalsIgnoreCase(lx)) {
return subBizUtil.generateCommonReimbData(requestId, SubPay.getLbByType(lx));
}
if (SubPay.ZGS_REI.getType().equalsIgnoreCase(lx)) {
return subBizUtil.generateCommonReimbData(requestId, SubPay.getLbByType(lx));
}
if (SubPay.ZG_TRAVEL.getType().equalsIgnoreCase(lx)) {
return subBizUtil.generateTravelReimbData(requestId, SubPay.getLbByType(lx));
}
if (SubPay.ZGTY_PAY.getType().equalsIgnoreCase(lx)) {
return bizUtils.generateCommonPayData(requestId, SubPay.getLbByType(lx));
}
if (SubPay.ZJTY_PAY.getType().equalsIgnoreCase(lx)) {
return bizUtils.generateCommonPayData(requestId, SubPay.getLbByType(lx));
}
if (SubPay.ZGS_TRAVEL.getType().equalsIgnoreCase(lx)) {
return subBizUtil.generateTravelReimbData(requestId, SubPay.getLbByType(lx));
}
if (SubPay.ZJ_TRAVEL.getType().equalsIgnoreCase(lx)) {
return subBizUtil.generateTravelReimbData(requestId, SubPay.getLbByType(lx));
}
return null;
}
public static CostAccountDto getSettlePaymentCostDTO(String requestId, String lx) throws Exception {
Assert.notBlank(requestId, "未指定流程id");
Assert.notBlank(lx, "未指定类型");
SettlePaymentCommand settlePaymentCommand = new SettlePaymentCommand();
if (BranchPay.CGSC_TRAVEL.getType().equalsIgnoreCase(lx)) {
return settlePaymentCommand.generateCommonReimbData(requestId, BranchPay.getLbByType(lx));
}
return null;
}
}

@ -0,0 +1,391 @@
package com.engine.htsc.branchpayment.utils;
import com.api.htsc.businessMethod.SubUnionBizUtil;
import com.engine.htsc.branchpayment.pojo.UfCash;
import com.engine.htsc.payment.dao.PaymentDao;
import com.engine.htsc.payment.pojo.*;
import com.engine.htsc.payment.util.BizUtils;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.interfaces.htsc.comInfo.PropBean;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
*
*/
public class BranchBizUtil {
//分支机构出纳表
public static final String FZJG = "UF_FZJGFK";
//子公司
public static final String ZGS = "UF_ZGSFK";
/**
*
*/
public List<UfCash> getUfCashList(String ids, String uf) {
RecordSet rs = new RecordSet();
String idJoin = String.join("','", Arrays.asList(ids.split(",")));
rs.executeQuery("select ID,FKLX,REQUTID,LCBH,FKZT,tbdlcyszt from " + uf + " where REQUTID in ('" + idJoin + "')");
List<UfCash> lists = new ArrayList<>();
while (rs.next()) {
UfCash ufCash = new UfCash();
ufCash.setId(Util.null2String(rs.getString("ID")));
ufCash.setType(Util.null2String(rs.getString("FKLX")));
ufCash.setRid(Util.null2String(rs.getString("REQUTID")));
ufCash.setrMark(Util.null2String(rs.getString("LCBH")));
ufCash.setFkzt(Util.null2String(rs.getString("FKZT")));
ufCash.setTbdlcyszt(Util.null2String(rs.getString("tbdlcyszt")));
lists.add(ufCash);
}
return lists;
}
/**
*
*/
public void updateBudgetStatus(String id, String discard, String uf) {
RecordSetTrans rst = new RecordSetTrans();
rst.setAutoCommit(false);
try {
if ("1".equals(discard)) {
rst.executeUpdate("update " + uf + " set TBDLCYSZT=0 where ID=?", id);
} else if ("-1".equals(discard)) {
rst.executeUpdate("update " + uf + " set TBDLCYSZT=2,tbdlczt=2,fkzt=2 where ID=?", id);
}
rst.executeUpdate("update " + uf + " set FKZT=0 where TBDLCZT=0 and id =?", id);
rst.commit();
} catch (Exception e) {
rst.rollback();
rst.writeLog("error:" + e.getMessage());
}
}
/**
*
*/
public void updateCostStatus(String id, String rid, String uf) {
RecordSetTrans rst = new RecordSetTrans();
rst.setAutoCommit(false);
try {
rst.executeUpdate("update " + uf + " set TBDLCZT=0 where ID=?", id);
rst.executeUpdate("update " + uf + " set FKZT=0 where TBDLCYSZT=0 and id =?", id);
rst.executeUpdate("update UF_YFKMIDDLE set SFFKQR=1 where REQID=?", rid);
//更新
rst.commit();
} catch (Exception e) {
rst.rollback();
rst.writeLog("error:" + e.getMessage());
}
}
/**
*
*/
public String updateManualPaymentStatus(String rids, String uf) {
RecordSetTrans rst = new RecordSetTrans();
rst.writeLog("====更新手动付款状态@" + rids);
if ("".equals(rids)) {
return "请勾选相关流程进行状态更改";
}
try {
String sqlCondition = String.join("','", rids.split(","));
rst.setAutoCommit(false);
rst.executeQuery("SELECT REQUTID,FKZT,LCBH FROM " + uf + " WHERE REQUTID IN ('" + sqlCondition + "')");
List<String> notin = new ArrayList<>();
List<String> in = new ArrayList<>();
while (rst.next()) {
String fkzt = Util.null2String(rst.getString("FKZT"));
String requtid = Util.null2String(rst.getString("REQUTID"));
String lcbh = Util.null2String(rst.getString("LCBH"));
if ("2".equals(fkzt)) {
notin.add(lcbh);
} else {
in.add(requtid);
}
}
rst.executeUpdate("update " + uf + " set FKFS=1,FKZT=0 where REQUTID in('" + String.join("','", in) + "')");
rst.commit();
return "更新手动付款状态成功(注:流程编号为 "+String.join(",", notin)+" 已废弃,无法手动付款)";
} catch (Exception e) {
rst.rollback();
rst.writeLog("====更新手动付款状态失败,出现异常@" + e.getMessage());
e.printStackTrace();
return "更新手动付款状态出现异常";
}
}
/**
* ()
*
* @param rid id
* @param lb lb
* @return
*/
public CostAccountDto generateCommonPayData(String rid, String lb) throws Exception {
RecordSet rs = new RecordSet();
BizUtils bizUtils = new BizUtils();
try {
DepartmentComInfo dc = new DepartmentComInfo();
ResourceComInfo rc = new ResourceComInfo();
PaymentDao pd = new PaymentDao();
String workFlowTableName = bizUtils.getTableNameByRequestId(rid);
String baseInfo = "SELECT t1.SFQDZ,t1.ywht,t1.fklx,t1.NGR,t1.SZBM,t1.LCBH,t1.REQUESTID,t1.DJZS,t1.LCBT,t1.NGSJ,t2.REQUESTNAME,t2.REQUESTID\n" +
"FROM " + workFlowTableName + " t1\n" +
"LEFT OUTER JOIN WORKFLOW_REQUESTBASE t2 on t1.REQUESTID=t2.REQUESTID\n" +
"WHERE t1.REQUESTID=?";
rs.executeQuery(baseInfo, rid);
CostAccountDto costAccountDto = new CostAccountDto();
if (rs.next()) {
String ngr = Util.null2String(rs.getString("NGR"));
String bm = Util.null2String(rs.getString("SZBM")); //部门
String requestMark = Util.null2String(rs.getString("LCBH"));
String fjzs = Util.null2String(rs.getString("DJZS")); //附件张数
String ngrq = Util.null2String(rs.getString("NGSJ")); //拟稿日期
String requestName = Util.null2String(rs.getString("REQUESTNAME"));
String ywht = Util.null2String(rs.getString("ywht")); //有无合同
String SFQDZ = Util.null2String(rs.getString("SFQDZ")); //有无合同
costAccountDto.setElectronicBill(SFQDZ); //是否电子票
costAccountDto.setType(lb); //走总部付款费用核算
costAccountDto.setBz2("0");
costAccountDto.setNgrDept(dc.getDepartmentmark(bm));
costAccountDto.setNgrDeptCode(dc.getDepartmentCode(bm));
costAccountDto.setNgrName(rc.getWorkcode(ngr));
costAccountDto.setRequestMark(requestMark);
costAccountDto.setRequestId(requestMark); //djid传流程编码,流程id总部不需要
costAccountDto.setAttachmentNum(fjzs);
costAccountDto.setLocationName("");
costAccountDto.setTitle(requestName);
costAccountDto.setCurrency("RMB");
costAccountDto.setCreateDate(ngrq);
costAccountDto.setReimbursementWay("");
costAccountDto.setPayOrderNo(requestMark); //总部付款付款单号直接传流程编码
}
//获取支付明细(dt11)
String getPayInfoFromDt11 = pd.getPayInfoFromDt11(workFlowTableName, rid);
List<PayDetail> payDetailList = new ArrayList<>();
rs.executeQuery(getPayInfoFromDt11);
while (rs.next()) {
PayDetail payDetail = new PayDetail();
String payByBank = Util.null2String(rs.getString("YXZFJE"));
String payByCash = Util.null2String(rs.getString("XJZFJE"));
String bankName = Util.null2String(rs.getString("KHXMC"));
String bankAccount = Util.null2String(rs.getString("YXZH"));
String SKDW = Util.null2String(rs.getString("SKDW"));
payDetail.setPayByBank(payByBank);
payDetail.setPayByCash(payByCash);
payDetail.setBankName(bankName);
payDetail.setBankAccount(bankAccount);
payDetail.setEmployeeDept("");
payDetail.setEmployeeName("");
payDetail.setPayee(SKDW);
payDetailList.add(payDetail);
}
costAccountDto.setPayDetails(payDetailList);
//获取预算明细
String subjectInfoFromDt8AndDt12 = pd.getSubjectInfoFromDt8AndDt12(workFlowTableName, rid);
List<KjDetail> kjDetailList = new ArrayList<>();
rs.executeQuery(subjectInfoFromDt8AndDt12);
while (rs.next()) {
KjDetail kjDetail = new KjDetail();
BudgetData budgetData = new BudgetData(); //预算科目
SubjectData subjectData = new SubjectData(); //会计科目
String fysjcdbm = Util.null2String(rs.getString("FYSJCDBM")); //费用承担部门
String je = Util.null2String(rs.getString("JE"));
String zhrmb = Util.null2String(rs.getString("ZHRMB"));
String sy = Util.null2String(rs.getString("SY"));
String hjkmmc = Util.null2String("");
String hjkmbm = Util.null2String(rs.getString("HJKM"));
subjectData.setItemCode(hjkmbm);
subjectData.setItemName(hjkmmc);
String dyyskm = Util.null2String(rs.getString("YSKM"));
String dyysmc = Util.null2String(rs.getString("YSKMMC"));
budgetData.setRelationCode(hjkmbm);
budgetData.setItemCode(dyyskm);
budgetData.setItemName(dyysmc);
kjDetail.setExpenseDeptCode(dc.getDepartmentCode(fysjcdbm));
kjDetail.setExpenseDept(dc.getDepartmentmark(fysjcdbm));
kjDetail.setExpenseBadge("");
kjDetail.setExpensePerson("");
kjDetail.setSubjectData(subjectData);
kjDetail.setBudgetData(budgetData);
kjDetail.setPriceRMB(zhrmb);
kjDetail.setMoney(zhrmb);
kjDetail.setProjectCode("");
kjDetail.setProject("");
kjDetail.setReason(sy);
kjDetailList.add(kjDetail);
}
costAccountDto.setKjDetails(kjDetailList);
//HTO-11640查询主表当付款流程中字段“先付款后发票”选项为“是”时接口字段“SFYFP”传值“Y”
// “先付款后发票”选项为“否”时接口字段“SFYFP”传值“N”
//针对分支机构通用付款
if(SubUnionBizUtil.equalsTableName(rid, "fzjgtyfk")){
RecordSet sqlFindYfp = new RecordSet();
String sqlNew = "select sfxfkhtgfp from "+workFlowTableName+" where requestid = "+rid;
sqlFindYfp.execute(sqlNew);
if (sqlFindYfp.next()){
String sfxfkhtgfp = Util.null2String(sqlFindYfp.getString("sfxfkhtgfp"));
if ("0".equals(sfxfkhtgfp)){
//当付款流程中字段“先付款后发票”选项为“是”时接口字段“SFYFP”传值“Y”
costAccountDto.setSFYFP("Y");
}else{
//“先付款后发票”选项为“否”时接口字段“SFYFP”传值“N”
costAccountDto.setSFYFP("N");
}
}
}
return costAccountDto;
} catch (Exception e) {
rs.writeLog("error," + e.getMessage());
throw new Exception("生成核算数据错误requestId" + rid);
}
}
/**
* ()
*
* @param rid id
* @param lb lb
* @return CostAccountDto
* @author wan
*/
public CostAccountDto generateTravelReimbData(String rid, String lb) {
CostAccountDto costAccDto = new CostAccountDto();
RecordSet rs = new RecordSet();
PropBean pb = new PropBean();
BizUtils bizUtils = new BizUtils();
String tablename = bizUtils.getTableNameByRequestId(rid);
rs.executeQuery("select SFQDZ,id,ngr,szbm,lcbh,djzs,ngsj from " + tablename + " where requestid=? ",
rid);
if (rs.next()) {
try {
String id = Util.null2String(rs.getString("id"));
String ngr = Util.null2String(rs.getString("ngr"));
String szbm = Util.null2String(rs.getString("szbm"));
String lcbh = Util.null2String(rs.getString("lcbh"));
String djzs = Util.null2String(rs.getString("djzs"));
String ngsj = Util.null2String(rs.getString("ngsj")) + ":00";
String SFQDZ = Util.null2String(rs.getString("SFQDZ"));
DepartmentComInfo deptComInfo = new DepartmentComInfo();
String szbmmc = deptComInfo.getDepartmentName(szbm);
String szbmbm = deptComInfo.getDepartmentCode(szbm);
ResourceComInfo resourceComInfo = new ResourceComInfo();
String ngrmc = resourceComInfo.getWorkcode(ngr);
rs.executeQuery(" select requestname from workflow_requestbase where requestid=? ",
rid);
rs.next();
String requestname = Util.null2String(rs.getString("requestname"));
costAccDto.setElectronicBill(SFQDZ);
costAccDto.setType(lb);
costAccDto.setNgrDept(szbmmc);
costAccDto.setNgrDeptCode(szbmbm);
costAccDto.setNgrName(ngrmc);
costAccDto.setRequestMark(lcbh);
costAccDto.setRequestId(lcbh);
costAccDto.setAttachmentNum(djzs);
costAccDto.setLocationName("");
costAccDto.setTitle(requestname);
costAccDto.setCurrency("RMB");
costAccDto.setCreateDate(ngsj);
costAccDto.setReimbursementWay("");
costAccDto.setPayOrderNo(lcbh);
List<KjDetail> kjdtList = new ArrayList<>();
String dt12Sql = " select fycdbm,ccr,hjkm,zhrmb from " + tablename + "_dt11 where mainid=? ";
rs.executeQuery(dt12Sql, id);
while (rs.next()) {
String fycdbm = Util.null2String(rs.getString("fycdbm"));
String fycdr = Util.null2String(rs.getString("ccr"));
String hjkm = Util.null2String(rs.getString("hjkm"));
if (!"".equals(hjkm)) {
hjkm = hjkm.split("_")[1];
}
String zhrmb = Util.null2String(rs.getString("zhrmb"));
String fysjcdbmbm = deptComInfo.getDepartmentCode(fycdbm);
String fysjcdbmmc = deptComInfo.getDepartmentName(fycdbm);
String fysjcdrbh = resourceComInfo.getWorkcode(fycdr);
String fysjcdrmc = resourceComInfo.getLastname(fycdr);
KjDetail kjitem = new KjDetail();
kjitem.setExpenseDeptCode(fysjcdbmbm);
kjitem.setExpenseDept(fysjcdbmmc);
kjitem.setExpenseBadge(fysjcdrbh);
kjitem.setExpensePerson(fysjcdrmc);
SubjectData subject = new SubjectData();
subject.setItemCode(hjkm);
subject.setItemName(bizUtils.getKjkmmc(hjkm));
kjitem.setSubjectData(subject);
BudgetData budget = new BudgetData();
budget.setRelationCode(hjkm);
String yskmbm = pb.getPropName(hjkm);
budget.setItemCode(yskmbm);
budget.setItemName(bizUtils.getYskmmc(yskmbm));
kjitem.setBudgetData(budget);
kjitem.setPriceRMB(zhrmb);
kjitem.setMoney(zhrmb);
kjitem.setProjectCode("");
kjitem.setProject("");
kjitem.setReason("");
kjdtList.add(kjitem);
}
costAccDto.setKjDetails(kjdtList);
List<PayDetail> zfdtList = new ArrayList<>();
String dt11Sql = " select yxzfje,xjzfje,khxmc,yxzh,bm,ccr from " + tablename + "_dt10 where mainid=? ";
rs.executeQuery(dt11Sql, id);
while (rs.next()) {
String yxzfje = Util.null2String(rs.getString("yxzfje"));
String xjzfje = Util.null2String(rs.getString("xjzfje"));
String khxmc = Util.null2String(rs.getString("khxmc"));
String yxzh = Util.null2String(rs.getString("yxzh"));
String bm = Util.null2String(rs.getString("bm"));
String ygxm = Util.null2String(rs.getString("ccr"));
String bmmc = deptComInfo.getDepartmentName(bm);
String ygxmmc = resourceComInfo.getLastname(ygxm);
String ygxmwk = resourceComInfo.getWorkcode(ygxm);
PayDetail payitem = new PayDetail();
payitem.setPayByBank(yxzfje);
payitem.setPayByCash(xjzfje);
payitem.setBankName(khxmc);
payitem.setBankAccount(yxzh);
payitem.setEmployeeDept(bmmc);
payitem.setEmployeeName(ygxmmc);
payitem.setEmployeeBadge(ygxmwk);
zfdtList.add(payitem);
}
costAccDto.setPayDetails(zfdtList);
} catch (Exception e) {
e.printStackTrace();
}
}
return costAccDto;
}
}

@ -0,0 +1,117 @@
package com.engine.htsc.branchpayment.web;
import com.engine.common.util.ParamUtil;
import com.engine.common.util.ServiceUtil;
import com.engine.htsc.branchpayment.service.BranchPaymentService;
import com.engine.htsc.branchpayment.service.impl.BranchPaymentServiceImpl;
import com.engine.htsc.trip.util.AjaxResult;
import weaver.general.BaseBean;
import weaver.general.Util;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.*;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import java.util.Map;
/**
* k1810012
*
* <p>
*
*/
public class BranchGeneralPaymentAction extends BaseBean {
private BranchPaymentService getBranchPaymentServiceImpl() {
return ServiceUtil.getService(BranchPaymentServiceImpl.class);
}
/**
*
*
* @param request
* @return
*/
@POST
@Path("/doBudget")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public AjaxResult<Map<String, String>> doBudget(@Context HttpServletRequest request) {
try {
Map<String, Object> requestParam = ParamUtil.request2Map(request);
String rid = Util.null2String(requestParam.getOrDefault("rid", ""));
String discard = Util.null2String(requestParam.getOrDefault("discard", ""));
return AjaxResult.ok(getBranchPaymentServiceImpl().doBudgetByBatchId(rid, discard));
} catch (Exception e) {
writeLog(e.getMessage());
return AjaxResult.error(e.getMessage());
}
}
/**
*
*
* @param request
* @return
*/
@POST
@Path("/doAccount")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public AjaxResult<Map<String, String>> doAccount(@Context HttpServletRequest request) {
try {
Map<String, Object> requestParam = ParamUtil.request2Map(request);
String id = Util.null2String(requestParam.getOrDefault("id", ""));
return AjaxResult.ok(getBranchPaymentServiceImpl().doAccountByBatchId(id));
} catch (Exception e) {
writeLog(e.getMessage());
return AjaxResult.error(e.getMessage());
}
}
/**
*
*
* @param request
* @return
*/
@POST
@Path("/doPayment")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public AjaxResult<Map<String, String>> doPayment(@Context HttpServletRequest request) {
try {
Map<String, Object> requestParam = ParamUtil.request2Map(request);
String id = Util.null2String(requestParam.getOrDefault("id", ""));
return AjaxResult.ok(getBranchPaymentServiceImpl().doPaymentByBatchId(id));
} catch (Exception e) {
writeLog(e.getMessage());
return AjaxResult.error(e.getMessage());
}
}
/**
*
*/
@POST
@Path("/doManualPayment")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public AjaxResult<String> doManualPayment(@Context HttpServletRequest request) {
try {
Map<String, Object> requestParam = ParamUtil.request2Map(request);
String id = Util.null2String(requestParam.getOrDefault("id", ""));
return AjaxResult.ok(getBranchPaymentServiceImpl().updateManualPaymentStatus(id));
} catch (Exception e) {
writeLog(e.getMessage());
return AjaxResult.error(e.getMessage());
}
}
}

@ -0,0 +1,86 @@
package com.engine.htsc.doc.common;
import java.lang.reflect.Method;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author Administrator
*
*/
public class AsyncThread extends Thread {
private static Logger log = LoggerFactory.getLogger(AsyncThread.class);
private Object async;
private String method;
private Object param[];
private String key;
public AsyncThread(Object o,String method,Object[] param){
this.async =o;
this.method = method;
this.param = param;
}
@Override
public void run() {
long time1 = System.currentTimeMillis();
log.info("开始ClassName:"+async.getClass().getName()+"||method:"+method);
if(null==async||StringUtils.isEmpty(method)){
return;
}
Object a =async+method;
synchronized (a) {
try {
Method[] methods= async.getClass().getDeclaredMethods();
for (Method invokeMethod : methods) {
if(invokeMethod.getName().equals(method)){
Class<?>[] parameterTypes = invokeMethod.getParameterTypes();
if(null!=parameterTypes){
log.info("方法:"+method+",参数个数:"+parameterTypes.length);
//参数不相等,继续查找
if(null==param||param.length!=parameterTypes.length){
continue;
}
}else{
//参数不相等,继续查找
if(null!=param&&param.length!=0){
continue;
}
}
invokeMethod.setAccessible(true);
invokeMethod.invoke(async, param);
break;
}
}
// Class c [] = new Class[param.length];
// for (int i = 0; i < param.length; i++) {
// c[i] = param[i].getClass();
// }
// Method invokeMethod= async.getClass().getDeclaredMethod(method,c);
//
// Method[] methods= async.getClass().getDeclaredMethods();
} catch(Exception e) {
e.printStackTrace();
log.error(e.getMessage(), e);
}
}
log.info("结束ClassName:"+async.getClass().getName()+"||method:"+method+"||耗时:"+(System.currentTimeMillis()-time1));
if(StringUtils.isNotEmpty(key)){
ThreadPoolUtil.hashMap_thread.put(key, "1");
}
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
}

@ -0,0 +1,279 @@
package com.engine.htsc.doc.util;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import java.beans.BeanInfo;
import java.beans.IntrospectionException;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.*;
public class BeanUtil {
/**
* Map JavaBean
* @param type
* @param map map
* @return JavaBean
* @throws IntrospectionException
*
* @throws IllegalAccessException
* JavaBean
* @throws InstantiationException
* JavaBean
* @throws InvocationTargetException
* setter
*/
public static Object convertMap(Class type, Map map)
throws IntrospectionException, IllegalAccessException,
InstantiationException, InvocationTargetException {
BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性
Object obj = type.newInstance(); // 创建 JavaBean 对象
// 给 JavaBean 对象的属性赋值
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i< propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (map.containsKey(propertyName)) {
// 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。
Object value = map.get(propertyName);
Object[] args = new Object[1];
args[0] = value;
descriptor.getWriteMethod().invoke(obj, args);
}
}
return obj;
}
/**
* JavaBean Map
* @param bean JavaBean
* @return Map
* @throws IntrospectionException
* @throws IllegalAccessException JavaBean
* @throws InvocationTargetException setter
*/
public static Map convertBean(Object bean)
throws IntrospectionException, IllegalAccessException, InvocationTargetException {
Class type = bean.getClass();
Map returnMap = new HashMap();
BeanInfo beanInfo = Introspector.getBeanInfo(type);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (int i = 0; i< propertyDescriptors.length; i++) {
PropertyDescriptor descriptor = propertyDescriptors[i];
String propertyName = descriptor.getName();
if (!propertyName.equals("class")) {
Method readMethod = descriptor.getReadMethod();
Object result = readMethod.invoke(bean, new Object[0]);
if (result != null) {
returnMap.put(propertyName, result);
} else {
returnMap.put(propertyName, "");
}
}
}
return returnMap;
}
/**
*
* @param ids
* @param pernum
* @return
*/
public static List<String> splitByPerNum(String ids, int pernum) {
List<String> result = new ArrayList<>();
if(StringUtils.isNotEmpty(ids)) {
String[] idArray = ids.split(",");
result = splitByPerNum(idArray,pernum);
}
return result;
}
/**
* listlist
* @param ids
* @param pernum
* @return
*/
public static List<String> splitByPerNum (List<String> ids, int pernum) {
List<String> result = new ArrayList<>();
if(CollectionUtils.isNotEmpty(ids)) {
String[] idArray = ids.toArray(new String[ids.size()]);
result = splitByPerNum(idArray,pernum);
}
return result;
}
/**
*
* @param ids
* @param pernum
* @return
*/
public static List<String> splitByPerNum(String[] ids, int pernum) {
List<String> result = new ArrayList<>();
if(null!=ids&&ids.length>0) {
int countPer = 0;
int countAll = 0;
String tempIds = "";
for(String id : ids) {
tempIds = tempIds+id+",";
countPer ++;
if(countPer<pernum&&countAll+1<ids.length) {
}else {
tempIds = tempIds.substring(0,tempIds.length()-1);
result.add(tempIds);
countPer = 0;
tempIds = "";
}
countAll++;
}
}
return result;
}
/**
*
* @param list
*/
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println( " remove duplicate " + list);
}
/**
* List
* @param str
* @return
*/
public static List<String> convertStrToList(String str) {
List<String> result = new ArrayList<>();
if(StringUtils.isNotEmpty(str)) {
String[] idArray = str.split(",");
result = Arrays.asList(idArray);
}
return result;
}
/**
* List
* @param list
* @param len
* @return
*/
public static List<List<String>> splitList(List<String> list, int len) {
if (list == null || list.size() == 0 || len < 1) {
return null;
}
List<List<String>> result = new ArrayList<List<String>>();
int size = list.size();
int count = (size + len - 1) / len;
for (int i = 0; i < count; i++) {
List<String> subList = list.subList(i * len, ((i + 1) * len > size ? size : len * (i + 1)));
result.add(subList);
}
return result;
}
/**
* id ids
* @param id
* @param ids
* @return
*/
public static boolean isInIds(String id,String ids) {
boolean flag = false;
if(StringUtils.isNotEmpty(id)&&StringUtils.isNotEmpty(ids)) {
List<String> idsList = Arrays.asList(ids.split(","));
if(idsList.contains(id)) {
flag = true;
}
}
return flag;
}
/**
* id AB
* @param idsA
* @param idsB
* @return
*/
public static String commonLeftAndRight(String idsA, String idsB) {
String result = "";
List<String> AList = StringUtils.isNotEmpty(idsA)? Arrays.asList(idsA.split(",")):new ArrayList<>();
List<String> BList = StringUtils.isNotEmpty(idsB)? Arrays.asList(idsB.split(",")):new ArrayList<>();
if(AList.size()==0||BList.size()==0) {
return result;
}
for(String str : AList) {
if(BList.contains(str)) {
result = result+str+",";
}else {
continue;
}
}
if(StringUtils.isNotEmpty(result)) {
result = result.substring(0,result.length()-1);
}
return result;
}
public static void main(String args[]) {
String sql = "A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
List<String> result = splitByPerNum(sql,1);
List<String> result2 = splitByPerNum(sql,2);
List<String> result3 = splitByPerNum(sql,24);
List<String> result4 = splitByPerNum(sql,26);
List<String> result5 = splitByPerNum(sql,100);
List<String> tempList = new ArrayList<>();
for(int i =0;i<=2000;i++) {
tempList.add(String.valueOf(i));
}
List<String> result6 = splitByPerNum(tempList,999);
String id = "1,2";
String ids1 = "12";
String ids2 = "2,369,";
String ids3 = "3,11,22";
String ids4 = "1";
String ids5 = "45,11,113,1";
System.out.println(commonLeftAndRight(id,ids1));
System.out.println(commonLeftAndRight(id,ids2));
System.out.println(commonLeftAndRight(id,ids3));
System.out.println(commonLeftAndRight(id,ids4));
System.out.println(commonLeftAndRight(id,ids5));
System.out.println("???");
}
}

@ -0,0 +1,342 @@
package com.engine.htsc.financialadjustment.util;
import cn.hutool.core.lang.Assert;
import com.engine.htsc.payment.pojo.*;
import com.engine.htsc.payment.util.PayUtil;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.interfaces.htsc.cus.HTUtil;
import java.util.*;
/**
* utils for financial adjust work flow
*/
public final class BizUtil {
//联合,总部预算表和会计表
private static final String LH_YSB = "uf_lhkmpz";
private static final String LH_KJB = "uf_lhkjkmpz";
private static final String ZB_YSB = "uf_kmpz";
private static final String ZB_KJB = "uf_kjkmpz";
/**
* p
*
* @return CostAccountDto
*/
public static CostAccountDto getAdjustCost(String rid, String lb) throws Exception {
RecordSet rs = new RecordSet();
rs.writeLog("获取财务调整流程核算数据 requestid:" + rid);
String tablename = PayUtil.getTbNameByRid(rid);
CostAccountDto accountDto = new CostAccountDto();
try {
DepartmentComInfo dc = new DepartmentComInfo();
ResourceComInfo rc = new ResourceComInfo();
String sql = "SELECT t1.ID,t1.NGR,t1.SZBM,t1.LCBH,t1.RZRQ,t2.REQUESTNAME FROM " + tablename + " t1\n" +
"LEFT JOIN WORKFLOW_REQUESTBASE t2\n" +
"ON t1.REQUESTID = t2.REQUESTID \n" +
"WHERE t1.REQUESTID = ?";
rs.executeQuery(sql, rid);
String mid = "";
if (rs.next()) {
String person = Util.null2String(rs.getString("NGR"));
String dept = Util.null2String(rs.getString("SZBM"));
String requestMark = Util.null2String(rs.getString("LCBH"));
String title = Util.null2String(rs.getString("REQUESTNAME"));
String entryDate = Util.null2String(rs.getString("RZRQ"));
mid = Util.null2String(rs.getString("ID"));
accountDto.setElectronicBill("");
accountDto.setType(lb); //总部付款费用核算
accountDto.setBz2("0");
accountDto.setNgrDept(dc.getDepartmentmark(dept));
accountDto.setNgrDeptCode(dc.getDepartmentCode(dept));
accountDto.setNgrName(rc.getWorkcode(person));
accountDto.setRequestMark(requestMark);
accountDto.setRequestId(requestMark); //djid传流程编码,流程id总部不需要
accountDto.setAttachmentNum("");
accountDto.setLocationName("");
accountDto.setTitle(title);
accountDto.setCurrency("RMB");
accountDto.setCreateDate(entryDate);
accountDto.setReimbursementWay("");
accountDto.setPayOrderNo(requestMark); //总部付款付款单号直接传流程编码
}
sql = "SELECT SFRHJZ,FYCDR,FYCDBM,JE,SFCYS,JDFX,YSKM,HJKM FROM " + tablename + "_DT2 WHERE MAINID = ?";
rs.executeQuery(sql, mid);
List<KjDetail> kjs = new ArrayList<>();
List<PayDetail> pays = new ArrayList<>();
while (rs.next()) {
String entryKj = Util.null2String(rs.getString("SFRHJZ"));
String debtPerson = Util.null2String(rs.getString("FYCDR"));
String debtDept = Util.null2String(rs.getString("FYCDBM"));
String amount = Util.null2String(rs.getString("JE"));
String overBudget = Util.null2String(rs.getString("SFCYS"));
String doc = Util.null2String(rs.getString("JDFX")); //计帐方向
String budgetItem = nvl(Util.null2String(rs.getString("YSKM")));
String accountItem = nvl(Util.null2String(rs.getString("HJKM")));
//入会计帐为是才写记录
if ("1".equals(entryKj)) {
KjDetail kj = new KjDetail();
BudgetData budgetData = new BudgetData();
budgetData.setRelationCode(accountItem);
budgetData.setItemCode(budgetItem);
budgetData.setItemName(getYsName(budgetItem, "1"));
SubjectData subjectData = new SubjectData();
subjectData.setItemCode(accountItem);
subjectData.setItemName(getKjName(accountItem, "1"));
kj.setBudgetData(budgetData); //预算科目
kj.setSubjectData(subjectData); //会计科目
kj.setExpenseDeptCode(dc.getDepartmentCode(debtDept));
kj.setExpenseDept(dc.getDepartmentmark(debtDept));
kj.setExpenseBadge("");
kj.setExpensePerson(rc.getLastname(debtPerson));
kj.setPriceRMB(amount);
kj.setMoney(amount);
kj.setProjectCode("");
kj.setProject("");
kj.setReason(doc); // 0:借 1:贷 对应saveFj 1:借 2:贷 (财务调整不使用reason作为关键字段,设置为借贷方做业务判断)
kjs.add(kj);
}
}
accountDto.setKjDetails(kjs);
accountDto.setPayDetails(pays);
} catch (Exception e) {
rs.writeLog("catch exception:" + e.getMessage());
}
return accountDto;
}
/**
*
*
* @param status , 3,1
* @return budgetDTO
*/
public static BudgetDTO getAdjustBudget(String rid, String status) throws Exception {
RecordSet rs = new RecordSet();
rs.writeLog("获取财务调整核预算数据 requestid:" + rid + "; status:" + status);
BudgetDTO budgetDTO = new BudgetDTO();
String tbNameByRid = PayUtil.getTbNameByRid(rid);
String mid = "";
try {
ResourceComInfo rc = new ResourceComInfo();
String sql = String.format("SELECT t1.ID,t1.REQUESTID,t1.LCBH,t1.NGR,t1.RZRQ,t2.REQUESTNAME,t2.REQUESTMARK FROM %s t1\n" +
"LEFT JOIN WORKFLOW_REQUESTBASE t2\n" +
"ON t1.REQUESTID = t2.REQUESTID \n" +
"WHERE t1.REQUESTID = ?", tbNameByRid);
rs.executeQuery(sql, rid);
if (rs.next()) {
budgetDTO.setBillNum(Util.null2String(rs.getString("REQUESTID")));
budgetDTO.setBizDate(Util.null2String(rs.getString("RZRQ")));
budgetDTO.setBillStatus(status);
budgetDTO.setBillName(Util.null2String(rs.getString("LCBH")));
budgetDTO.setBillTitle(Util.null2String(rs.getString("REQUESTNAME")));
budgetDTO.setPesonName(rc.getLastname(rs.getString("NGR")));
mid = Util.null2String(rs.getString("ID")); //明细外键
}
} catch (Exception e) {
rs.writeLog("获取财务调整预算主表数据 catch exception:" + e.getMessage());
return null;
}
try {
DepartmentComInfo dc = new DepartmentComInfo();
List<BudgetList> budgetItems = new ArrayList<>();
String sql = String.format("SELECT SFRHJZ,FYCDR,FYCDBM,JE,SFCYS,JDFX,YSKM,HJKM FROM %s WHERE MAINID = ?", tbNameByRid + "_DT2");
rs.executeQuery(sql, mid);
String uuid = UUID.randomUUID().toString();
int i = 1;
while (rs.next()) {
String debtDept = Util.null2String(rs.getString("FYCDBM"));
String amount = Util.null2String(rs.getString("JE"));
String budgetCode = Util.null2String(rs.getString("YSKM"));
String superBudgetCodeLh = "";
if (budgetDTO.getBillName().contains("联合")) {
superBudgetCodeLh = PayUtil.getSuperBudgetCode(nvl(budgetCode));
} else {
superBudgetCodeLh = PayUtil.getSuperBudgetCodeLh(nvl(budgetCode));
}
BudgetList budgetList = new BudgetList();
budgetList.setAmount(amount);
budgetList.setNoTaxAmount(amount);
budgetList.setTaxAmount("0.00");
budgetList.setBgElement("0101");
budgetList.setBillEntryID(uuid + "#" + i);
budgetList.setDeptNum(dc.getDepartmentCode(debtDept));
budgetList.setItemEntryNum(nvl(budgetCode));
budgetList.setBgItem(superBudgetCodeLh);
budgetList.setBgITElement(superBudgetCodeLh);
budgetItems.add(budgetList);
i++;
}
budgetDTO.setList(budgetItems);
return budgetDTO;
} catch (Exception e) {
rs.writeLog("获取财务调整明细表数据 catch exception:" + e.getMessage());
return null;
}
}
/**
* get project browser by code
*/
public static Map<String, String> getProjectBrowserByCode(String userCode, String projectCode) {
Map<String, String> res = new HashMap<>();
HTUtil htUtil = new HTUtil();
Map<String, Object> info = htUtil.getProjectInfoByCode(userCode, projectCode);
if (info.containsKey("id")) {
res.put("value", Util.null2String(info.get("id")));
res.put("name", Util.null2String(info.get("name")));
} else {
res.put("value", "");
res.put("name", "");
}
return res;
}
/**
* get dept id by dept code
*/
public static Map<String, String> getDidByCode(String deptCode) throws Exception {
RecordSet rs = new RecordSet();
Map<String, String> res = new HashMap<>();
rs.executeQuery("SELECT h.ID,h.DEPARTMENTMARK FROM HRMDEPARTMENT h WHERE h.DEPARTMENTCODE = ?", deptCode);
if (rs.next()) {
res.put("value", Util.null2String(rs.getString("ID")));
res.put("name", Util.null2String(rs.getString("DEPARTMENTMARK")));
return res;
} else {
throw new IllegalArgumentException("deptCode not exist, deptCode: " + deptCode);
}
}
/**
* get employee id by work code
*/
public static Map<String, String> getUidByWc(String wc) throws Exception {
RecordSet rs = new RecordSet();
Map<String, String> res = new HashMap<>();
rs.executeQuery("SELECT h.ID,h.LASTNAME FROM HRMRESOURCE h WHERE h.WORKCODE =?", wc);
if (rs.next()) {
res.put("value", Util.null2String(rs.getString("ID")));
res.put("name", Util.null2String(rs.getString("LASTNAME")));
return res;
} else {
throw new IllegalArgumentException("workcode not exist, workcode: " + wc);
}
}
/**
* get budget jsonObject by code and type
*
* @param budgetCode code
* @param type 0: 1:
*/
public static Map<String, String> getBudgetObj(String budgetCode, String type) throws Exception {
Assert.notBlank(budgetCode, "budgetCode can not be empty");
RecordSet rs = new RecordSet();
Map<String, String> res = new HashMap<>();
String budgetTable = "";
if ("0".equals(type)) {
budgetTable = ZB_YSB;
} else if ("1".equals(type)) {
budgetTable = LH_YSB;
} else {
throw new IllegalArgumentException("type not match: 0:总部 1:联合");
}
rs.writeLog(String.format("get budget specialObj ,budgetCode: %s; zb or lh: %s; budgetTable: %s",
budgetCode, type, budgetTable));
rs.executeQuery(String.format("SELECT YSKMMC FROM %s WHERE YSKMBM = ? ", budgetTable), budgetCode);
if (rs.next()) {
res.put("value", budgetCode);
res.put("name", Util.null2String(rs.getString("YSKMMC")));
return res;
} else {
throw new Exception("budget code " + budgetCode + " not exist");
}
}
/**
* get account jsonObject by code and type
*/
public static Map<String, String> getAccountObj(String accountCode, String type) throws Exception {
Assert.notBlank(accountCode, "accountCode can not be empty");
RecordSet rs = new RecordSet();
Map<String, String> res = new HashMap<>();
String accountTable = "";
if ("0".equals(type)) {
accountTable = ZB_KJB;
} else if ("1".equals(type)) {
accountTable = LH_KJB;
} else {
throw new IllegalArgumentException("type not match: 0:总部 1:联合");
}
rs.writeLog(String.format("get account specialObj ,accountCode: %s; zb or lh: %s; accountTable: %s",
accountCode, type, accountTable));
rs.executeQuery(String.format("SELECT HJKMMC FROM %s WHERE HJKMBM = ? ", accountTable), accountCode);
if (rs.next()) {
res.put("value", accountCode);
res.put("name", Util.null2String(rs.getString("HJKMMC")));
return res;
} else {
throw new Exception("account code " + accountCode + " not exist");
}
}
/**
*
*
* @return
*/
private static String nvl(String codeWithLine) {
if (codeWithLine.contains("_")) {
return codeWithLine.split("_")[1];
}
return "";
}
/**
*
*
* @param ysCode code
* @param lhOrZb 1
* @return
*/
public static String getYsName(String ysCode, String lhOrZb) {
RecordSet rs = new RecordSet();
String tableName = ZB_YSB;
if ("1".equals(lhOrZb)) {
tableName = LH_YSB;
}
rs.executeQuery("SELECT YSKMMC FROM " + tableName + " WHERE YSKMBM = ?", ysCode);
if (rs.next()) {
return Util.null2String(rs.getString("YSKMMC"));
} else {
return "";
}
}
public static String getKjName(String ysCode, String lhOrZb) {
RecordSet rs = new RecordSet();
String tableName = ZB_KJB;
if ("1".equals(lhOrZb)) {
tableName = LH_KJB;
}
rs.executeQuery("SELECT HJKMMC FROM " + tableName + " WHERE HJKMBM = ?", ysCode);
if (rs.next()) {
return Util.null2String(rs.getString("HJKMMC"));
} else {
return "";
}
}
}

@ -0,0 +1,135 @@
package com.engine.htsc.payment.pojo;
import org.apache.commons.lang3.StringUtils;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class AutoRequestParam {
private String relateStaffRid;
private String creatorUid;
private String workflowId;
private String requestName;
private String isNextFlow;
Map<String, String> main;
List<Map<String, String>> dt5;
List<Map<String, String>> dt6;
List<Map<String, String>> dt7;
List<LinkedHashMap<String, String>> dt8;
List<LinkedHashMap<String, String>> dt13;
public String getRelateStaffRid() {
return relateStaffRid;
}
public void setRelateStaffRid(String relateStaffRid) {
this.relateStaffRid = relateStaffRid;
}
public String getCreatorUid() {
return creatorUid;
}
public void setCreatorUid(String creatorUid) {
this.creatorUid = creatorUid;
}
public String getWorkflowId() {
return workflowId;
}
public void setWorkflowId(String workflowId) {
this.workflowId = workflowId;
}
public String getRequestName() {
return requestName;
}
public void setRequestName(String requestName) {
this.requestName = requestName;
}
public String getIsNextFlow() {
return isNextFlow;
}
public void setIsNextFlow(String isNextFlow) {
this.isNextFlow = isNextFlow;
}
public Map<String, String> getMain() {
return main;
}
public void setMain(Map<String, String> main) {
this.main = main;
}
public List<Map<String, String>> getDt5() {
return dt5;
}
public void setDt5(List<Map<String, String>> dt5) {
this.dt5 = dt5;
}
public List<Map<String, String>> getDt6() {
return dt6;
}
public void setDt6(List<Map<String, String>> dt6) {
this.dt6 = dt6;
}
public List<Map<String, String>> getDt7() {
return dt7;
}
public void setDt7(List<Map<String, String>> dt7) {
this.dt7 = dt7;
}
public List<LinkedHashMap<String, String>> getDt8() {
return dt8;
}
public void setDt8(List<LinkedHashMap<String, String>> dt8) {
this.dt8 = dt8;
}
public List<LinkedHashMap<String, String>> getDt13() {
return dt13;
}
public void setDt13(List<LinkedHashMap<String, String>> dt13) {
this.dt13 = dt13;
}
@Override
public String toString() {
return "AutoRequestParam{" +
"relateStaffRid='" + relateStaffRid + '\'' +
", creatorUid='" + creatorUid + '\'' +
", workflowId='" + workflowId + '\'' +
", requestName='" + requestName + '\'' +
", isNextFlow='" + isNextFlow + '\'' +
", main=" + main +
", dt5=" + dt5 +
", dt6=" + dt6 +
", dt7=" + dt7 +
", dt8=" + dt8 +
", dt13=" + dt13 +
'}';
}
/**
* false
*/
public boolean isValid() {
return StringUtils.isNotBlank(creatorUid) && StringUtils.isNotBlank(workflowId)
&& StringUtils.isNotBlank(requestName) && StringUtils.isNotBlank(isNextFlow);
}
}

@ -0,0 +1,51 @@
package com.engine.htsc.payment.pojo;
import java.util.List;
public class BankFormation {
private String oaPayUrl;
private String bankName;
private String bankAccount;
private String bankFirm;
private List<String> opParty;
public String getOaPayUrl() {
return oaPayUrl;
}
public void setOaPayUrl(String oaPayUrl) {
this.oaPayUrl = oaPayUrl;
}
public String getBankName() {
return bankName;
}
public void setBankName(String bankName) {
this.bankName = bankName;
}
public String getBankAccount() {
return bankAccount;
}
public void setBankAccount(String bankAccount) {
this.bankAccount = bankAccount;
}
public String getBankFirm() {
return bankFirm;
}
public void setBankFirm(String bankFirm) {
this.bankFirm = bankFirm;
}
public List<String> getOpParty() {
return opParty;
}
public void setOpParty(List<String> opParty) {
this.opParty = opParty;
}
}

@ -0,0 +1,52 @@
package com.engine.htsc.payment.util;
import java.util.List;
import java.util.Map;
public final class AssertUtil {
/**
*
* @param obj
*/
@SuppressWarnings("rawtypes")
public static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if ((obj instanceof String)) {
return ((String) obj).trim().equals("");
}
if ((obj instanceof List)) {
return ((List) obj).isEmpty();
}
if ((obj instanceof Map)) {
return ((Map) obj).isEmpty();
}
return false;
}
/**
*
* @param obj
*/
public static boolean isNotEmpty(Object obj) {
return !isEmpty(obj);
}
/**
*
* @param obj
*/
public static void isEmpty(Object obj, String msg) {
isTrue(isEmpty(obj), msg);
}
public static void isTrue(Boolean flag, String msg) {
if (flag) {
throw new IllegalArgumentException(msg);
}
}
}

@ -0,0 +1,920 @@
package com.engine.htsc.payment.util;
import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.api.htsc.businessMethod.SubUnionBizUtil;
import com.engine.htsc.payment.dao.PaymentDao;
import com.engine.htsc.payment.pojo.*;
import com.engine.htsc.payment.service.BudgetCommand;
import com.engine.htsc.payment.service.BudgetService;
import com.engine.htsc.payment.service.impl.*;
import com.engine.htsc.trip.util.WeaverUtil;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.interfaces.htsc.comInfo.PropBean;
import weaver.interfaces.htsc.cus.HTUtil;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* author:k1810012
* desc:
*/
public class BizUtils {
/**
* cancelInvLink4Lang,
*/
private void cancelInvLink4Lang(String mainId, String dtTableName, String ngrgh, String lcbh) {
RecordSet rs = new RecordSet();
rs.writeLog(String.format("开始重置明细表: %s; mainid:%s", dtTableName, mainId));
HTUtil ht = new HTUtil();
String sql = "SELECT WJID,FPHM,FPDM FROM " + dtTableName + " WHERE MAINID = ?";
rs.executeQuery(sql, mainId);
while (rs.next()) {
Map<String, Object> params = new HashMap<>();
params.put("UserCode", ngrgh);
params.put("BillID", lcbh);
params.put("FileID", Util.null2String(rs.getString("WJID")));
params.put("InvoiceNum", Util.null2String(rs.getString("FPHM")));
params.put("InvoiceCode", Util.null2String(rs.getString("FPDM")));
String s = ht.resetImageAndBill(params);
rs.writeLog("cancelInvLink4Lang: response:%s", JSONObject.toJSONString(s));
}
}
/**
*
*/
public void cancelInvLink(String requestId) throws Exception {
RecordSet rs = new RecordSet();
String tableName = getTableNameByRequestId(requestId);
String sql = "SELECT ID,NGRGH,LCBH FROM " + tableName + " WHERE REQUESTID = ?";
rs.executeQuery(sql, requestId);
String ngrgh = "";
String lcbh = "";
String mainId = "";
if (rs.next()) {
ngrgh = Util.null2String(rs.getString("NGRGH"));
lcbh = Util.null2String(rs.getString("LCBH"));
mainId = Util.null2String(rs.getString("ID"));
}
rs.writeLog(String.format(" 取消发票关联, requestid:%s; lcbh:%s, ngrgh:%s", requestId, lcbh, ngrgh));
if (StringUtils.isNotBlank(ngrgh) && StringUtils.isNotBlank(lcbh)) {
//删除uf表中所关联的发票数据
String delSql = "delete from UF_PJXXGL where REQUESTID=?";
boolean b = rs.executeUpdate(delSql, requestId);
rs.writeLog(String.format("删除uf表中所关联的发票数据: boolean:%s", b));
//调用浪潮发票重置接口
cancelInvLink4Lang(mainId, tableName + "_dt5", ngrgh, lcbh);
cancelInvLink4Lang(mainId, tableName + "_dt6", ngrgh, lcbh);
if (lcbh.contains("差旅")) {
cancelInvLink4Lang(mainId, tableName + "_dt4", ngrgh, lcbh);
}
}
}
/**
*
*
* @param rid requestId,,rid
* @param payCode fkzt, 0退; 1,; 2,
*/
public static void updateStaffCodStatus(String rid, String payCode) throws Exception {
Assert.notBlank(rid, "更新的流程id不能为空");
Assert.notBlank(payCode, "更新的流程状态不能为空");
Assert.isTrue("0,1,2".contains(payCode), "更新的流程状态不合法," + payCode);
String replace = rid.replace(",", "','");
RecordSet rs = new RecordSet();
rs.writeLog(String.format("updateStaffCodStatus, reqeustId: %s; fkzt: %s", replace, payCode));
String sql = "update UF_WWSQHZ set FKZT=? where REQUID in ('" + replace + "')";
rs.executeUpdate(sql, payCode);
}
/**
* sql
*/
public static Map<String, String> select2Map(String sql) {
RecordSet rs = new RecordSet();
rs.executeQuery(sql);
String[] columnName = rs.getColumnName();
Map<String, String> maps = new HashMap<>();
if (rs.next()) {
for (String col : columnName) {
maps.put(col.toLowerCase(), Util.null2String(rs.getString(col)));
}
}
return maps;
}
public String getUtf8String(String str) {
if (str != null && str.length() > 0) {
String needEncodeCode = "ISO-8859-1";
try {
if (Charset.forName(needEncodeCode).newEncoder().canEncode(str)) {
str = new String(str.getBytes(needEncodeCode), "UTF-8");
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
return str;
}
/**
* command
*
* @param lb
* @return BudgetCommand
*/
public static BudgetCommand getBudgetCommentByLb(String lb) throws Exception {
if ("0".equals(lb) || "2".equals(lb) || "1".equals(lb) || "3".equals(lb)) {
return new HeadPaymentBudgetCommand();
} else if ("9".equals(lb)) {
return new HeadBxBudgetCommand();
} else if ("10".equals(lb)) {
return new HeadClBxBudgetCommand();
} else if ("4".equals(lb)) {
return new SettlePaymentCommand();
}else {
new BaseBean().writeLog("lb为空");
throw new Exception("建模付款类型没有维护");
}
}
/**
* saveLog {@link WbLog}
*
* @param wbLog
*/
public static void saveLog(WbLog wbLog) throws Exception {
RecordSet rs = new RecordSet();
try {
rs.executeUpdate("insert into UF_WBLOG (REQUESTNO, OPERATOR, RESULT, TIME, URL, METHOD, REQUEST, RESPONSE, IP)\n" +
"values (?,?,?,?,?,?,?,?,?)", wbLog.toList());
} catch (Exception e) {
throw new Exception("更新日志表失败:" + e.getMessage());
}
}
/**
*
*
* @param requestNo id
* @param billStatus
* @param budgetParam
* @param itFlag it 0 it; 1 it
* @throws Exception sql
*/
public void refreshBudgetRecord(String requestNo, String billStatus, String budgetParam, String itFlag) throws Exception {
RecordSet rs = new RecordSet();
rs.executeQuery("select count(*) n from UF_YSJLB where itflag=? and LCID=?", itFlag, requestNo);
String n = "0";
if (rs.next()) {
n = rs.getString("n");
}
if ("0".equals(n)) {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
List<Object> listToSave = new ArrayList<>();
listToSave.add(requestNo);
listToSave.add(budgetParam);
listToSave.add(billStatus);
listToSave.add(df.format(LocalDateTime.now()));
listToSave.add(itFlag);
String sql = "INSERT INTO UF_YSJLB (LCID,YSQQCS,DQYSZT,DQSJ,ITFLAG) VALUES (?,?,?,?,?)";
rs.executeUpdate(sql, listToSave);
} else {
List<Object> listToUpdate = new ArrayList<>();
listToUpdate.add(budgetParam);
listToUpdate.add(billStatus);
listToUpdate.add(requestNo);
listToUpdate.add(itFlag);
String sql = "UPDATE UF_YSJLB SET YSQQCS = ?,DQYSZT=? WHERE LCID=? and ITFLAG=?";
rs.executeUpdate(sql, listToUpdate);
}
}
public <T> Map<String, Object> convertDtoToMap(T t) {
Map<String, Object> dataMap = new HashMap<>();
String jsonText = JSON.toJSONString(t);
dataMap.put("data", jsonText);
return dataMap;
}
public boolean updateBudgetMidTable(String requestNo, String billStatus) throws Exception {
RecordSet rs = new RecordSet();
try {
String tableName = getTableNameByRequestId(requestNo);
String sql = "select FKXX,LCBH,FKLX from " + tableName + " where REQUESTID=" + requestNo;
rs.executeQuery(sql);
String bz = "0";
String lx = "";
String title = "";
if (rs.next()) {
bz = rs.getString("FKXX");
lx = rs.getString("FKLX");
title = rs.getString("LCBH");
}
String yskmTable = "";
if (!"1".equals(bz)) {
yskmTable = tableName + "_DT8";
} else {
yskmTable = tableName + "_DT9";
}
boolean isItFlag = false;
if ("1".equals(lx)) {
isItFlag = true;
}
BudgetService bds = new BudgetServiceImpl();
return bds.doBudgetMiddleTable(title, billStatus,null, yskmTable, tableName, isItFlag);
} catch (Exception e) {
rs.writeLog("\n 更新预算中间表出现异常 \n");
rs.writeLog("catch: " + e.getMessage());
e.printStackTrace();
return false;
}
}
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;
}
public void log(String message) {
BaseBean log = new BaseBean();
String methodName = Thread.currentThread().getStackTrace()[1].getMethodName();
int lineNumber = Thread.currentThread().getStackTrace()[1].getLineNumber();
String logFormat = "\n" +
"%s@[%d] >>>\n" +
"%s";
log.writeLog(String.format(logFormat, methodName, lineNumber, message));
}
/**
*
*
* @param rid id
* @param lb lb
* @return
*/
public CostAccountDto generateCommonPayData(String rid, String lb) throws Exception {
RecordSet rs = new RecordSet();
try {
DepartmentComInfo dc = new DepartmentComInfo();
ResourceComInfo rc = new ResourceComInfo();
PaymentDao pd = new PaymentDao();
String workFlowTableName = getTableNameByRequestId(rid);
String baseInfo = "SELECT t1.SFQDZ,t1.ywht,t1.fklx,t1.NGR,t1.SZBM,t1.LCBH,t1.REQUESTID,t1.DJZS,t1.LCBT,t1.NGSJ,t2.REQUESTNAME,t2.REQUESTID\n" +
"FROM " + workFlowTableName + " t1\n" +
"LEFT OUTER JOIN WORKFLOW_REQUESTBASE t2 on t1.REQUESTID=t2.REQUESTID\n" +
"WHERE t1.REQUESTID=?";
rs.executeQuery(baseInfo, rid);
CostAccountDto costAccountDto = new CostAccountDto();
if (rs.next()) {
String ngr = Util.null2String(rs.getString("NGR"));
String bm = Util.null2String(rs.getString("SZBM")); //部门
String requestMark = Util.null2String(rs.getString("LCBH"));
String fjzs = Util.null2String(rs.getString("DJZS")); //附件张数
String ngrq = Util.null2String(rs.getString("NGSJ")); //拟稿日期
String requestName = Util.null2String(rs.getString("REQUESTNAME"));
String ywht = Util.null2String(rs.getString("ywht")); //有无合同
String SFQDZ = Util.null2String(rs.getString("SFQDZ")); //有无合同
costAccountDto.setElectronicBill(SFQDZ);
costAccountDto.setType(lb); //总部付款费用核算
costAccountDto.setBz2("0");
costAccountDto.setNgrDept(dc.getDepartmentmark(bm));
costAccountDto.setNgrDeptCode(dc.getDepartmentCode(bm));
costAccountDto.setNgrName(rc.getWorkcode(ngr));
costAccountDto.setRequestMark(requestMark);
costAccountDto.setRequestId(requestMark); //djid传流程编码,流程id总部不需要
costAccountDto.setAttachmentNum(fjzs);
costAccountDto.setLocationName("");
costAccountDto.setTitle(requestName);
costAccountDto.setCurrency("RMB");
costAccountDto.setCreateDate(ngrq);
costAccountDto.setReimbursementWay("");
costAccountDto.setPayOrderNo(requestMark); //总部付款付款单号直接传流程编码
}
//获取支付明细(dt11)
String getPayInfoFromDt11 = pd.getPayInfoFromDt11(workFlowTableName, rid);
List<PayDetail> payDetailList = new ArrayList<>();
rs.executeQuery(getPayInfoFromDt11);
while (rs.next()) {
PayDetail payDetail = new PayDetail();
String payByBank = Util.null2String(rs.getString("YXZFJE"));
String payByCash = Util.null2String(rs.getString("XJZFJE"));
String bankName = Util.null2String(rs.getString("KHXMC"));
String bankAccount = Util.null2String(rs.getString("YXZH"));
String SKDW = Util.null2String(rs.getString("SKDW"));
payDetail.setPayByBank(payByBank);
payDetail.setPayByCash(payByCash);
payDetail.setBankName(bankName);
payDetail.setBankAccount(bankAccount);
payDetail.setEmployeeDept("");
payDetail.setEmployeeName("");
payDetail.setPayee(SKDW);
payDetailList.add(payDetail);
}
costAccountDto.setPayDetails(payDetailList);
//获取预算明细
String subjectInfoFromDt8AndDt12 = pd.getSubjectInfoFromDt8AndDt12(workFlowTableName, rid);
List<KjDetail> kjDetailList = new ArrayList<>();
rs.executeQuery(subjectInfoFromDt8AndDt12);
while (rs.next()) {
KjDetail kjDetail = new KjDetail();
BudgetData budgetData = new BudgetData(); //预算科目
SubjectData subjectData = new SubjectData(); //会计科目
String fysjcdbm = Util.null2String(rs.getString("FYSJCDBM")); //费用承担部门
String je = Util.null2String(rs.getString("JE"));
String zhrmb = Util.null2String(rs.getString("ZHRMB"));
String sy = Util.null2String(rs.getString("SY"));
String hjkmmc = Util.null2String("");
String hjkmbm = Util.null2String(rs.getString("HJKM"));
subjectData.setItemCode(hjkmbm);
subjectData.setItemName(hjkmmc);
String dyyskm = Util.null2String(rs.getString("YSKM"));
String dyysmc = Util.null2String(rs.getString("YSKMMC"));
budgetData.setRelationCode(hjkmbm);
budgetData.setItemCode(dyyskm);
budgetData.setItemName(dyysmc);
kjDetail.setExpenseDeptCode(dc.getDepartmentCode(fysjcdbm));
kjDetail.setExpenseDept(dc.getDepartmentmark(fysjcdbm));
kjDetail.setExpenseBadge("");
kjDetail.setExpensePerson("");
kjDetail.setSubjectData(subjectData);
kjDetail.setBudgetData(budgetData);
kjDetail.setPriceRMB(zhrmb);
kjDetail.setMoney(zhrmb);
kjDetail.setProjectCode("");
kjDetail.setProject("");
kjDetail.setReason(sy);
kjDetailList.add(kjDetail);
}
costAccountDto.setKjDetails(kjDetailList);
//HTO-11640查询主表当付款流程中字段“先付款后发票”选项为“是”时接口字段“SFYFP”传值“Y”
// “先付款后发票”选项为“否”时接口字段“SFYFP”传值“N”
//针对托收业务通用付款,资管通用付款,紫金通用付款,子公司通用付款
if(SubUnionBizUtil.equalsTableName(rid, "fyft")|| SubUnionBizUtil.equalsTableName(rid, "zgtyfk")
||SubUnionBizUtil.equalsTableName(rid, "zjtyfk") ||SubUnionBizUtil.equalsTableName(rid, "zgstyfk")){
RecordSet sqlFindYfp = new RecordSet();
String sqlNew = "select sfxfkhtgfp from "+workFlowTableName+" where requestid = "+rid;
sqlFindYfp.execute(sqlNew);
if (sqlFindYfp.next()){
String sfxfkhtgfp = Util.null2String(sqlFindYfp.getString("sfxfkhtgfp"));
if ("0".equals(sfxfkhtgfp)){
//当付款流程中字段“先付款后发票”选项为“是”时接口字段“SFYFP”传值“Y”
costAccountDto.setSFYFP("Y");
}else{
//“先付款后发票”选项为“否”时接口字段“SFYFP”传值“N”
costAccountDto.setSFYFP("N");
}
}
}
return costAccountDto;
} catch (Exception e) {
rs.writeLog("error," + e.getMessage());
throw new Exception("生成核算数据错误requestId" + rid);
}
}
/**
*
*
* @param requestid id
* @param wftype lb {@link com.engine.htsc.payment.enums.HsType}
* @return CostAccountDto
* @author wan
*/
public CostAccountDto generateCommonReimbData(String requestid, String wftype) {
CostAccountDto costAccDto = new CostAccountDto();
RecordSet rs = new RecordSet();
String tablename = getTableNameByRequestId(requestid);
rs.executeQuery(" select SFQDZ,id,ngr,szbm,lcbh,djzs,ngsj from " + tablename + " where requestid=? ", new Object[]{requestid});
if (rs.next()) {
try {
String id = Util.null2String(rs.getString("id"));
String ngr = Util.null2String(rs.getString("ngr"));
String szbm = Util.null2String(rs.getString("szbm"));
String lcbh = Util.null2String(rs.getString("lcbh"));
String djzs = Util.null2String(rs.getString("djzs"));
String ngsj = Util.null2String(rs.getString("ngsj")) + ":00";
String sfqdz = Util.null2String(rs.getString("SFQDZ"));
DepartmentComInfo deptComInfo = new DepartmentComInfo();
String szbmmc = deptComInfo.getDepartmentName(szbm);
String szbmbm = deptComInfo.getDepartmentCode(szbm);
ResourceComInfo resourceComInfo = new ResourceComInfo();
String ngrmc = resourceComInfo.getWorkcode(ngr);
rs.executeQuery(" select requestname from workflow_requestbase where requestid=? ", new Object[]{requestid});
rs.next();
String requestname = Util.null2String(rs.getString("requestname"));
costAccDto.setElectronicBill(sfqdz);
costAccDto.setType(wftype);
costAccDto.setNgrDept(szbmmc);
costAccDto.setNgrDeptCode(szbmbm);
costAccDto.setNgrName(ngrmc);
costAccDto.setRequestMark(lcbh);
costAccDto.setRequestId(lcbh);
costAccDto.setAttachmentNum(djzs);
costAccDto.setLocationName("");
costAccDto.setTitle(requestname);
costAccDto.setCurrency("RMB");
costAccDto.setCreateDate(ngsj);
costAccDto.setReimbursementWay("");
costAccDto.setPayOrderNo(lcbh);
List kjdtList = new ArrayList();
String dt12Sql = " select fysjcdbm,fysjcdr,hjkm,yskm,yskmmc,zhrmb,SY from " + tablename + "_dt12 where mainid=? ";
rs.executeQuery(dt12Sql, new Object[]{id});
while (rs.next()) {
String fysjcdbm = Util.null2String(rs.getString("fysjcdbm"));
String fysjcdr = Util.null2String(rs.getString("fysjcdr"));
String hjkm = Util.null2String(rs.getString("hjkm"));
String yskm = Util.null2String(rs.getString("yskm"));
String yskmmc = Util.null2String(rs.getString("yskmmc"));
String zhrmb = Util.null2String(rs.getString("zhrmb"));
String sy = Util.null2String(rs.getString("SY"));
String fysjcdbmbm = deptComInfo.getDepartmentCode(fysjcdbm);
String fysjcdbmmc = deptComInfo.getDepartmentName(fysjcdbm);
String fysjcdrbh = resourceComInfo.getWorkcode(fysjcdr);
String fysjcdrmc = resourceComInfo.getLastname(fysjcdr);
KjDetail kjitem = new KjDetail();
kjitem.setExpenseDeptCode(fysjcdbmbm);
kjitem.setExpenseDept(fysjcdbmmc);
kjitem.setExpenseBadge(fysjcdrbh);
kjitem.setExpensePerson(fysjcdrmc);
SubjectData subject = new SubjectData();
subject.setItemCode(hjkm);
subject.setItemName(getKjkmmc(hjkm));
kjitem.setSubjectData(subject);
BudgetData budget = new BudgetData();
budget.setRelationCode(hjkm);
budget.setItemCode(yskm);
budget.setItemName(yskmmc);
kjitem.setBudgetData(budget);
kjitem.setPriceRMB(zhrmb);
kjitem.setMoney(zhrmb);
kjitem.setProjectCode("");
kjitem.setProject("");
kjitem.setReason(sy);
kjdtList.add(kjitem);
}
costAccDto.setKjDetails(kjdtList);
List zfdtList = new ArrayList();
String dt11Sql = " select yxzfje,xjzfje,khxmc,yxzh,bm,ygxm from " + tablename + "_dt11 where mainid=? ";
rs.executeQuery(dt11Sql, new Object[]{id});
while (rs.next()) {
String yxzfje = Util.null2String(rs.getString("yxzfje"));
String xjzfje = Util.null2String(rs.getString("xjzfje"));
String khxmc = Util.null2String(rs.getString("khxmc"));
String yxzh = Util.null2String(rs.getString("yxzh"));
String bm = Util.null2String(rs.getString("bm"));
String ygxm = Util.null2String(rs.getString("ygxm"));
String bmmc = deptComInfo.getDepartmentName(bm);
String ygxmmc = resourceComInfo.getLastname(ygxm);
String ygxmwk = resourceComInfo.getWorkcode(ygxm);
PayDetail payitem = new PayDetail();
payitem.setPayByBank(yxzfje);
payitem.setPayByCash(xjzfje);
payitem.setBankName(khxmc);
payitem.setBankAccount(yxzh);
payitem.setEmployeeDept(bmmc);
payitem.setEmployeeName(ygxmmc);
payitem.setEmployeeBadge(ygxmwk);
zfdtList.add(payitem);
}
costAccDto.setPayDetails(zfdtList);
} catch (Exception e) {
e.printStackTrace();
}
}
return costAccDto;
}
/**
*
*
* @param requestid id
* @param wftype lb
* @return CostAccountDto
* @author wan
*/
public CostAccountDto ZjCommonReimbData(String requestid, String wftype) {
CostAccountDto costAccDto = new CostAccountDto();
RecordSet rs = new RecordSet();
String tablename = getTableNameByRequestId(requestid);
rs.executeQuery(" select id,ngr,szbm,lcbh,djzs,ngsj from " + tablename + " where requestid=? ", new Object[]{requestid});
if (rs.next()) {
try {
String id = Util.null2String(rs.getString("id"));
String ngr = Util.null2String(rs.getString("ngr"));
String szbm = Util.null2String(rs.getString("szbm"));
String lcbh = Util.null2String(rs.getString("lcbh"));
String djzs = Util.null2String(rs.getString("djzs"));
String ngsj = Util.null2String(rs.getString("ngsj")) + ":00";
DepartmentComInfo deptComInfo = new DepartmentComInfo();
String szbmmc = deptComInfo.getDepartmentName(szbm);
String szbmbm = deptComInfo.getDepartmentCode(szbm);
ResourceComInfo resourceComInfo = new ResourceComInfo();
String ngrmc = resourceComInfo.getWorkcode(ngr);
rs.executeQuery(" select requestname from workflow_requestbase where requestid=? ", new Object[]{requestid});
rs.next();
String requestname = Util.null2String(rs.getString("requestname"));
costAccDto.setType(wftype);
costAccDto.setNgrDept(szbmmc);
costAccDto.setNgrDeptCode(szbmbm);
costAccDto.setNgrName(ngrmc);
costAccDto.setRequestMark(lcbh);
costAccDto.setRequestId(lcbh);
costAccDto.setAttachmentNum(djzs);
costAccDto.setLocationName("");
costAccDto.setTitle(requestname);
costAccDto.setCurrency("RMB");
costAccDto.setCreateDate(ngsj);
costAccDto.setReimbursementWay("");
costAccDto.setPayOrderNo(lcbh);
List kjdtList = new ArrayList();
String dt12Sql = " select fysjcdbm,fysjcdr,hjkm,yskm,yskmmc,zhrmb,SY from " + tablename + "_dt12 where mainid=? ";
rs.executeQuery(dt12Sql, new Object[]{id});
while (rs.next()) {
// String fysjcdbm = Util.null2String(rs.getString("fysjcdbm"));
String fysjcdr = Util.null2String(rs.getString("fysjcdr"));
String hjkm = Util.null2String(rs.getString("hjkm"));
String yskm = Util.null2String(rs.getString("yskm"));
String yskmmc = Util.null2String(rs.getString("yskmmc"));
String zhrmb = Util.null2String(rs.getString("zhrmb"));
String sy = Util.null2String(rs.getString("SY"));
String fysjcdbmmc ="";
String fysjcdrbh = "";
String fysjcdrmc = "";
String fysjcdbmbm = Util.null2String(rs.getString("fysjcdbm"));
Map<String,String> map=getzjdeptname(fysjcdbmbm);
if(map.size()>0){
fysjcdbmmc=Util.null2String(map.get("bmmc"));
fysjcdrbh=Util.null2String(map.get("bmfzrid"));
fysjcdrmc=Util.null2String(map.get("bmfzr"));
}
KjDetail kjitem = new KjDetail();
kjitem.setExpenseDeptCode(fysjcdbmbm);
kjitem.setExpenseDept(fysjcdbmmc);
kjitem.setExpenseBadge(fysjcdrbh);
kjitem.setExpensePerson(fysjcdrmc);
SubjectData subject = new SubjectData();
subject.setItemCode(hjkm);
subject.setItemName(getKjkmmc(hjkm));
kjitem.setSubjectData(subject);
BudgetData budget = new BudgetData();
budget.setRelationCode(hjkm);
budget.setItemCode(yskm);
budget.setItemName(yskmmc);
kjitem.setBudgetData(budget);
kjitem.setPriceRMB(zhrmb);
kjitem.setMoney(zhrmb);
kjitem.setProjectCode("");
kjitem.setProject("");
kjitem.setReason(sy);
kjdtList.add(kjitem);
}
costAccDto.setKjDetails(kjdtList);
List zfdtList = new ArrayList();
String dt11Sql = " select yxzfje,xjzfje,khxmc,yxzh,bm,ygxm from " + tablename + "_dt11 where mainid=? ";
rs.executeQuery(dt11Sql, new Object[]{id});
while (rs.next()) {
String yxzfje = Util.null2String(rs.getString("yxzfje"));
String xjzfje = Util.null2String(rs.getString("xjzfje"));
String khxmc = Util.null2String(rs.getString("khxmc"));
String yxzh = Util.null2String(rs.getString("yxzh"));
String bm = Util.null2String(rs.getString("bm"));
String ygxm = Util.null2String(rs.getString("ygxm"));
String bmmc = deptComInfo.getDepartmentName(bm);
String ygxmmc = resourceComInfo.getLastname(ygxm);
String ygxmwk = resourceComInfo.getWorkcode(ygxm);
PayDetail payitem = new PayDetail();
payitem.setPayByBank(yxzfje);
payitem.setPayByCash(xjzfje);
payitem.setBankName(khxmc);
payitem.setBankAccount(yxzh);
payitem.setEmployeeDept(bmmc);
payitem.setEmployeeName(ygxmmc);
payitem.setEmployeeBadge(ygxmwk);
zfdtList.add(payitem);
}
costAccDto.setPayDetails(zfdtList);
} catch (Exception e) {
e.printStackTrace();
}
}
return costAccDto;
}
public Map<String,String> getzjdeptname(String value){
Map<String,String> map=new HashMap();
if("".equals(value)){
return map;
}
RecordSet rs=new RecordSet();
String sql=" select BMBH,BMMC,BMFZR,BMFZRID from uf_zjbmb where bmbh=?";
rs.executeQuery(sql, new Object[]{value});
if(rs.getCounts()<=0){
return map;
}
if(rs.next()){
map.put("bmbh",Util.null2String(rs.getString("BMMC")));
map.put("bmmc",Util.null2String(rs.getString("BMMC")));
map.put("bmfzr",Util.null2String(rs.getString("BMFZR")));
map.put("bmfzrid",Util.null2String(rs.getString("BMFZRID")));
}
return map;
}
/**
*
*
* @param requestid id
* @param wftype lb
* @return CostAccountDto
* @author wan
*/
public CostAccountDto generateTravelReimbData(String requestid, String wftype) {
CostAccountDto costAccDto = new CostAccountDto();
RecordSet rs = new RecordSet();
PropBean pb = new PropBean();
String tablename = getTableNameByRequestId(requestid);
rs.executeQuery(" select SFQDZ,id,ngr,szbm,lcbh,djzs,ngsj from " + tablename + " where requestid=? ", new Object[]{requestid});
if (rs.next()) {
try {
String id = Util.null2String(rs.getString("id"));
String ngr = Util.null2String(rs.getString("ngr"));
String szbm = Util.null2String(rs.getString("szbm"));
String lcbh = Util.null2String(rs.getString("lcbh"));
String djzs = Util.null2String(rs.getString("djzs"));
String ngsj = Util.null2String(rs.getString("ngsj")) + ":00";
String sfqdz = Util.null2String(rs.getString("SFQDZ"));
DepartmentComInfo deptComInfo = new DepartmentComInfo();
String szbmmc = deptComInfo.getDepartmentName(szbm);
String szbmbm = deptComInfo.getDepartmentCode(szbm);
ResourceComInfo resourceComInfo = new ResourceComInfo();
String ngrmc = resourceComInfo.getWorkcode(ngr);
rs.executeQuery(" select requestname from workflow_requestbase where requestid=? ", new Object[]{requestid});
rs.next();
String requestname = Util.null2String(rs.getString("requestname"));
costAccDto.setElectronicBill(sfqdz);
costAccDto.setType(wftype);
costAccDto.setNgrDept(szbmmc);
costAccDto.setNgrDeptCode(szbmbm);
costAccDto.setNgrName(ngrmc);
costAccDto.setRequestMark(lcbh);
costAccDto.setRequestId(lcbh);
costAccDto.setAttachmentNum(djzs);
costAccDto.setLocationName("");
costAccDto.setTitle(requestname);
costAccDto.setCurrency("RMB");
costAccDto.setCreateDate(ngsj);
costAccDto.setReimbursementWay("");
costAccDto.setPayOrderNo(lcbh);
List kjdtList = new ArrayList();
String dt12Sql = " select fycdbm,fycdr,hjkm,zhrmb from " + tablename + "_dt11 where mainid=? ";
rs.executeQuery(dt12Sql, new Object[]{id});
while (rs.next()) {
String fycdbm = Util.null2String(rs.getString("fycdbm"));
String fycdr = Util.null2String(rs.getString("fycdr"));
String hjkm = Util.null2String(rs.getString("hjkm"));
if (!"".equals(hjkm)) {
hjkm = hjkm.split("_")[1];
}
String zhrmb = Util.null2String(rs.getString("zhrmb"));
String fysjcdbmbm = deptComInfo.getDepartmentCode(fycdbm);
String fysjcdbmmc = deptComInfo.getDepartmentName(fycdbm);
String fysjcdrbh = resourceComInfo.getWorkcode(fycdr);
String fysjcdrmc = resourceComInfo.getLastname(fycdr);
KjDetail kjitem = new KjDetail();
kjitem.setExpenseDeptCode(fysjcdbmbm);
kjitem.setExpenseDept(fysjcdbmmc);
kjitem.setExpenseBadge(fysjcdrbh);
kjitem.setExpensePerson(fysjcdrmc);
SubjectData subject = new SubjectData();
subject.setItemCode(hjkm);
subject.setItemName(getKjkmmc(hjkm));
kjitem.setSubjectData(subject);
BudgetData budget = new BudgetData();
budget.setRelationCode(hjkm);
String yskmbm = pb.getPropName(hjkm);
budget.setItemCode(yskmbm);
budget.setItemName(getYskmmc(yskmbm));
kjitem.setBudgetData(budget);
kjitem.setPriceRMB(zhrmb);
kjitem.setMoney(zhrmb);
kjitem.setProjectCode("");
kjitem.setProject("");
kjitem.setReason("");
kjdtList.add(kjitem);
}
costAccDto.setKjDetails(kjdtList);
List zfdtList = new ArrayList();
String dt11Sql = " select yxzfje,xjzfje,khx,yxzh,bm,bxr from " + tablename + "_dt10 where mainid=? ";
rs.executeQuery(dt11Sql, new Object[]{id});
while (rs.next()) {
String yxzfje = Util.null2String(rs.getString("yxzfje"));
String xjzfje = Util.null2String(rs.getString("xjzfje"));
String khxmc = Util.null2String(rs.getString("khx"));
String yxzh = Util.null2String(rs.getString("yxzh"));
String bm = Util.null2String(rs.getString("bm"));
String ygxm = Util.null2String(rs.getString("bxr"));
String bmmc = deptComInfo.getDepartmentName(bm);
String ygxmmc = resourceComInfo.getLastname(ygxm);
String ygxmwk = resourceComInfo.getWorkcode(ygxm);
PayDetail payitem = new PayDetail();
payitem.setPayByBank(yxzfje);
payitem.setPayByCash(xjzfje);
payitem.setBankName(khxmc);
payitem.setBankAccount(yxzh);
payitem.setEmployeeDept(bmmc);
payitem.setEmployeeName(ygxmmc);
payitem.setEmployeeBadge(ygxmwk);
zfdtList.add(payitem);
}
costAccDto.setPayDetails(zfdtList);
} catch (Exception e) {
e.printStackTrace();
}
}
return costAccDto;
}
/**
*
*
* @param kjkmbm
* @return
*/
public String getKjkmmc(String kjkmbm) {
String kjkmmc = "";
RecordSet rs = new RecordSet();
rs.executeQuery(" select hjkmmc from uf_kjkmpz where hjkmbm=? ", new Object[]{kjkmbm});
if (rs.next()) {
kjkmmc = Util.null2String(rs.getString("hjkmmc"));
}
return kjkmmc;
}
/**
*
*
* @param yskmbm
* @return
*/
public String getYskmmc(String yskmbm) {
String yskmmc = "";
RecordSet rs = new RecordSet();
rs.executeQuery(" select yskmmc from uf_kmpz where yskmbm=? ", new Object[]{yskmbm});
if (rs.next()) {
yskmmc = Util.null2String(rs.getString("yskmmc"));
}
return yskmmc;
}
/**
* it
*
* @param requestId id
* @return true :
* false: it
*/
public static boolean whetherItOrTy(String requestId) throws Exception {
RecordSet rs = new RecordSet();
String tableName = WeaverUtil.getTableNameByRequestId(requestId, rs);
rs.executeQuery("select sfitfy from " + tableName + " where REQUESTID=" + requestId);
String sfitfy = "";
if (rs.next()) {
sfitfy = Util.null2String(rs.getString("sfitfy"));
}
return "0".equals(sfitfy); // 0是通用付款
}
/**
* it
*
* @param requestId id
* @return true :
* false: it
*/
public static boolean whetherItOrTy(String requestId, String tableName) throws Exception {
RecordSet rs = new RecordSet();
rs.executeQuery("select sfitfy from " + tableName + " where REQUESTID=" + requestId);
String sfitfy = "";
if (rs.next()) {
sfitfy = Util.null2String(rs.getString("sfitfy"));
}
return "0".equals(sfitfy);
}
/**
*
*
* @param id id
* @return t ; f
*/
public static boolean isCl(String id) throws Exception {
RecordSet rs = new RecordSet();
rs.executeQuery("select REQUESTMARK from WORKFLOW_REQUESTBASE t1\n" +
"left join UF_ZBFK t2\n" +
"on t1.REQUESTID=t2.REQUTID\n" +
"where t2.ID=?", id);
String title = "";
if (rs.next()) {
title = Util.null2String(rs.getString("REQUESTMARK"));
}
if ("".equals(title)) {
throw new Exception(String.format("建模id:%s 未维护流程编号", id));
}
return title.contains("总部差旅报销");
}
}

@ -0,0 +1,70 @@
package com.engine.htsc.seal.entity;
import java.io.Serializable;
public class ApplyPrintEntity implements Serializable {
public String appId;
public String secret;
public String docId;//文件id
public String personName;//打印人姓名
public String oldPersonNum;//之前的打印人标识
public String personNum;//打印人标识
public String printNum;//打印份数
public String getAppId() {
return appId;
}
public void setAppId(String appId) {
this.appId = appId;
}
public String getSecret() {
return secret;
}
public void setSecret(String secret) {
this.secret = secret;
}
public String getDocId() {
return docId;
}
public void setDocId(String docId) {
this.docId = docId;
}
public String getPersonName() {
return personName;
}
public void setPersonName(String personName) {
this.personName = personName;
}
public String getOldPersonNum() {
return oldPersonNum;
}
public void setOldPersonNum(String oldPersonNum) {
this.oldPersonNum = oldPersonNum;
}
public String getPersonNum() {
return personNum;
}
public void setPersonNum(String personNum) {
this.personNum = personNum;
}
public String getPrintNum() {
return printNum;
}
public void setPrintNum(String printNum) {
this.printNum = printNum;
}
}

@ -0,0 +1,69 @@
package com.engine.htsc.trip.pojo;
import java.util.List;
public class AllowanceRequest {
private String type;
private String isLeader;
private String travelApplyNo;
private List<JourneyEntity> journeyList;
private List<JourneyEntity> trainOrders;
private List<JourneyEntity> flightOrders;
private List<OrderEntity> orderList;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getIsLeader() {
return isLeader;
}
public void setIsLeader(String isLeader) {
this.isLeader = isLeader;
}
public String getTravelApplyNo() {
return travelApplyNo;
}
public void setTravelApplyNo(String travelApplyNo) {
this.travelApplyNo = travelApplyNo;
}
public List<JourneyEntity> getJourneyList() {
return journeyList;
}
public void setJourneyList(List<JourneyEntity> journeyList) {
this.journeyList = journeyList;
}
public List<JourneyEntity> getTrainOrders() {
return trainOrders;
}
public void setTrainOrders(List<JourneyEntity> trainOrders) {
this.trainOrders = trainOrders;
}
public List<JourneyEntity> getFlightOrders() {
return flightOrders;
}
public void setFlightOrders(List<JourneyEntity> flightOrders) {
this.flightOrders = flightOrders;
}
public List<OrderEntity> getOrderList() {
return orderList;
}
public void setOrderList(List<OrderEntity> orderList) {
this.orderList = orderList;
}
}

@ -0,0 +1,10 @@
package com.engine.htsc.trip.service;
import com.engine.htsc.trip.pojo.AllowanceRequest;
import java.util.Map;
public interface AllowanceService {
Map<String, Object> allowance(AllowanceRequest request);
Map<String, Object> execute(AllowanceRequest request);
}

@ -0,0 +1,381 @@
package com.engine.htsc.trip.service.impl;
import com.alibaba.fastjson.JSON;
import com.engine.core.impl.Service;
import com.engine.htsc.trip.pojo.AllowanceRequest;
import com.engine.htsc.trip.pojo.JourneyEntity;
import com.engine.htsc.trip.pojo.OrderEntity;
import com.engine.htsc.trip.service.AllowanceService;
import com.google.common.collect.Lists;
import java.time.Duration;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.util.CollectionUtils;
public class AllowanceServiceImpl extends Service implements AllowanceService {
private static final String TITLE = "doGetAllowance";
private Log log = LogFactory.getLog(this.getClass());
private static final DateTimeFormatter FORMATTER = DateTimeFormatter
.ofPattern("yyyy-MM-dd HH:mm:ss");
@Override
public Map<String, Object> execute(AllowanceRequest params) {
Map<String, Object> result = new HashMap<>();
//此阶段明细表尚无数据
String type = params.getType();
String isLeader = params.getIsLeader();
String travelApplyNo = params.getTravelApplyNo();
List<JourneyEntity> journeyList = params.getJourneyList();
if (CollectionUtils.isEmpty(journeyList)) {
log.warn(String.format("%s journey list is empty! applyno:%s", TITLE, travelApplyNo));
return result;
}
journeyList.sort(Comparator.comparing(JourneyEntity::getBeginTime));
int allowance = 0;
result.put("applyNo", travelApplyNo);
String firstDay = "";
String departure = "";
Map<String, String> dayMap = new HashMap<>();
for (int i = 0; i < journeyList.size(); i++) {
JourneyEntity journey = journeyList.get(i);
List<String> dayList = getDateList(journey.getBeginTime(), journey.getEndTime());
if (i == 0) {
departure = journey.getBeginCity();
firstDay = dayList.get(0);
}
dayList.forEach(f -> {
dayMap.put(f, journey.getEndCity());
});
}
LocalDate firstLocalDate = LocalDate.parse(firstDay, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//带领导报销
if ("true".equals(isLeader)) {
for (Entry<String, String> entry : dayMap.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
allowance += getStandardByCity(v);
}
} else {
if ("1".equals(type)) {
//内部会议出差
allowance = 0;
} else if ("2".equals(type)) {
//外部会议培训
allowance = 50 * dayMap.size();
} else {
//单日行程
if (dayMap.size() == 1) {
//使用当天的目的地城市作为补贴标准城市
allowance = getStandardByCity(dayMap.entrySet().iterator().next().getValue());
} else {
List<OrderEntity> orderList = params.getOrderList();
if (CollectionUtils.isEmpty(orderList) || orderList.size() < 2) {
log.warn(String
.format("%s order list is empty or size < 2 ! applyno:%s", TITLE, travelApplyNo));
} else {
//整理每日订单
Map<String, List<OrderEntity>> dayOrderMap = new HashMap<>();
String lastOrderDay = "";
orderList.sort(Comparator.comparing(OrderEntity::getBeginTime));
for (int i = 0; i < orderList.size(); i++) {
OrderEntity order = orderList.get(i);
if (i == orderList.size() - 1) {
lastOrderDay = order.getEndTime();
}
String key = order.getBeginTime().substring(0, 10);
if (dayOrderMap.containsKey(key)) {
dayOrderMap.get(key).add(order);
} else {
List<OrderEntity> arr = new ArrayList<>();
arr.add(order);
arr.sort(Comparator.comparing(OrderEntity::getBeginTime));
dayOrderMap.put(key, arr);
}
}
LocalDate lastLocalDate = LocalDate
.parse(lastOrderDay, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//遍历每一天行程
for (Entry<String, String> entry : dayMap.entrySet()) {
String k = entry.getKey();
LocalDate date = LocalDate.parse(k, DateTimeFormatter.ofPattern("yyyy-MM-dd"));
if (date.isAfter(lastLocalDate)) {
continue;
}
List<OrderEntity> dayOrderArr = dayOrderMap.get(k);
//判断是否为最后一天
if (k.equals(lastLocalDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")))) {
//如果最后一天没有订单则该天差补为0
if (CollectionUtils.isEmpty(dayOrderArr)) {
allowance += 0;
} else {
//如果最后一张订单是返程订单
OrderEntity dayLastOrder = dayOrderArr.get(dayOrderArr.size() - 1);
if (dayLastOrder.getEndCity().equals(departure)) {
dayOrderArr.remove(dayOrderArr.size() - 1);
}
//当天所有城市中补贴最高的值
Set<String> cityNameSet = new HashSet<>();
if (CollectionUtils.isEmpty(dayOrderArr)) {
cityNameSet.add(dayLastOrder.getBeginCity());
} else {
for (OrderEntity dayOrder : dayOrderArr) {
cityNameSet.add(dayOrder.getEndCity());
}
}
allowance += getStandardByCitySet(cityNameSet);
}
} else {
//如果当天没有订单则以之前最近的订单的目的标准作为补贴标准
if (CollectionUtils.isEmpty(dayOrderArr)) {
LocalDate preDay = date.minusDays(1);
while (preDay.isAfter(firstLocalDate)) {
String dayKey = preDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
dayOrderArr = dayOrderMap.get(dayKey);
if (!CollectionUtils.isEmpty(dayOrderArr)) {
break;
}
preDay = preDay.minusDays(1);
}
if (CollectionUtils.isEmpty(dayOrderArr)) {
allowance += 0;
} else {
//取最后一个行程的目的地
OrderEntity dayOrder = dayOrderArr.get(dayOrderArr.size() - 1);
allowance += getStandardByCity(dayOrder.getEndCity());
}
} else {
//当天所有城市中补贴最高的值
Set<String> cityNameSet = new HashSet<>();
for (OrderEntity dayOrder : dayOrderArr) {
cityNameSet.add(dayOrder.getEndCity());
}
allowance += getStandardByCitySet(cityNameSet);
}
}
}
}
}
}
}
result.put("allowance", allowance);
return result;
}
@Override
public Map<String, Object> allowance(AllowanceRequest params) {
Map<String, Object> result = new HashMap<>();
//此阶段明细表尚无数据
String type = params.getType();
String travelApplyNo = params.getTravelApplyNo();
int allowance = 0;
result.put("applyNo", travelApplyNo);
result.put("allowance", allowance);
//合并火车和机票订单
List<JourneyEntity> orderList = new ArrayList<>();
orderList.addAll(params.getTrainOrders());
orderList.addAll(params.getFlightOrders());
if (CollectionUtils.isEmpty(orderList)) {
return result;
}
orderList.sort(Comparator.comparing(JourneyEntity::getBeginTime));
/**
*
* 12
* 2
* 3
*/
if (!checkContinuous(orderList)) {
return result;
} else {
JourneyEntity firstOrder = orderList.get(0);
JourneyEntity lastOrder = orderList.get(orderList.size() - 1);
String beginTime = firstOrder.getBeginTime();
String endTime = lastOrder.getEndTime();
//获取两个时间内的小时数 确定天数
LocalDateTime startDateTime = LocalDateTime.parse(beginTime, FORMATTER);
LocalDateTime endDateTime = LocalDateTime.parse(endTime, FORMATTER);
Duration duration = Duration.between(startDateTime, endDateTime);
long hours = duration.toHours();
//间隔天数
int days = (int) Math.ceil(hours / 24.0);
if ("1".equals(type)) {
//内部会议出差
allowance = 0;
} else if ("2".equals(type)) {
//外部会议培训
allowance = 50 * days;
} else {
//订单按日分组
Map<String, List<JourneyEntity>> dayOrderMap = new HashMap<>();
for (int i = 0; i < orderList.size(); i++) {
JourneyEntity order = orderList.get(i);
String key = order.getBeginTime().substring(0, 10);
if (dayOrderMap.containsKey(key)) {
dayOrderMap.get(key).add(order);
} else {
List<JourneyEntity> arr = new ArrayList<>();
arr.add(order);
arr.sort(Comparator.comparing(JourneyEntity::getBeginTime));
dayOrderMap.put(key, arr);
}
}
Set<String> dateSet = dayOrderMap.keySet();
List<String> dateList = dateSet.stream().sorted().collect(Collectors.toList());
String preDate = dateList.get(0);
LocalDateTime preLocalDate = LocalDate.parse(preDate, DateTimeFormatter
.ofPattern("yyyy-MM-dd")).atStartOfDay();
int preAllowance = calcAllowancePerDay(dayOrderMap.get(preDate), dayOrderMap.size()==1);
allowance += preAllowance;
List<Integer> allowanceList = Lists.newArrayList(preAllowance);
for (int i = 1; i < dateList.size(); i++) {
String curDate = dateList.get(i);
//计算和上一个日期间隔的天数
LocalDateTime curLocalDate = LocalDate.parse(curDate, DateTimeFormatter
.ofPattern("yyyy-MM-dd")).atStartOfDay();
int d = (int) Duration.between(preLocalDate, curLocalDate).toDays() - 1;
allowance += (preAllowance * d);
for (int j = 0; j < d; j++) {
allowanceList.add(preAllowance);
}
int curAllowance = calcAllowancePerDay(dayOrderMap.get(curDate),
i == dateList.size() - 1);
allowance += curAllowance;
allowanceList.add(curAllowance);
preLocalDate = curLocalDate;
preAllowance = curAllowance;
}
log.info("allowance per day:" + allowanceList.stream().map(String::valueOf)
.collect(Collectors.joining(",")) + ", applyNo:" + travelApplyNo);
//总的计算天数
if (allowanceList.size() > days) {
List<Integer> temp = new ArrayList<>(allowanceList);
Collections.sort(temp);
//按照差补值从小到大排序
List<Integer> filter = temp.subList(0, temp.size() - days);
log.info("allowance per day filter:" + filter.stream().map(String::valueOf)
.collect(Collectors.joining(",")) + ", applyNo:" + travelApplyNo);
//去掉对应天数最低的差补
allowance -= filter.stream().reduce(Integer::sum).orElse(0);
}
}
}
result.put("allowance", allowance);
return result;
}
private int calcAllowancePerDay(List<JourneyEntity> orderEntityList, boolean lastDay) {
if (orderEntityList.size() < 2) {
JourneyEntity orderEntity = orderEntityList.get(0);
String city = lastDay ? orderEntity.getBeginCity() : orderEntity.getEndCity();
return getStandardByCity(city);
} else {
Set<String> citySet = new HashSet<>();
for (int i = 0; i < orderEntityList.size(); i++) {
if (i == orderEntityList.size() - 1) {
citySet.add(lastDay ? orderEntityList.get(i).getBeginCity()
: orderEntityList.get(i).getEndCity());
} else {
citySet.add(orderEntityList.get(i).getEndCity());
}
}
return getStandardByCitySet(citySet);
}
}
private int getStandardByCitySet(Set<String> cityNameSet) {
return cityNameSet.stream().map(this::getStandardByCity).max(Comparator.comparing(i -> i))
.get();
}
private int getStandardByCity(String cityName) {
if (StringUtils.isBlank(cityName)) {
return 0;
}
return Lists.newArrayList("北京", "上海", "深圳", "广州", "海口", "三亚", "三沙").contains(cityName) ? 100
: 80;
}
/**
*
*
* @param start
* @param end
* @return
*/
private List<String> getDateList(String start, String end) {
List<String> result = new ArrayList<>();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDate startDate = LocalDate.parse(start, formatter);
LocalDate endDate = LocalDate.parse(end, formatter);
LocalDate tempDate = startDate;
while (tempDate.isBefore(endDate)) {
result.add(tempDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
tempDate = tempDate.plusDays(1);
}
result.add(endDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
return result;
}
/**
*
*
* @param orderEntityList
* @return
*/
private boolean checkContinuous(List<JourneyEntity> orderEntityList) {
boolean result = true;
if (org.apache.commons.collections4.CollectionUtils.isEmpty(orderEntityList)
|| orderEntityList.size() < 2) {
result = false;
} else {
JourneyEntity firstOrder = orderEntityList.get(0);
JourneyEntity lastOrder = orderEntityList.get(orderEntityList.size() - 1);
if (firstOrder.getBeginCity().equals(lastOrder.getEndCity())) {
JourneyEntity pre = orderEntityList.get(0);
for (int i = 1; i < orderEntityList.size(); i++) {
JourneyEntity now = orderEntityList.get(i);
if (!pre.getEndCity().equals(now.getBeginCity())) {
result = false;
break;
}
pre = now;
}
} else {
result = false;
}
}
return result;
}
public static void main(String[] args) {
// GCONST.setRootPath("");
// GCONST.setServerName("ecology");
AllowanceServiceImpl allowanceService = new AllowanceServiceImpl();
String json = "{\"type\":\"3\",\"isLeader\":\"false\",\"travelApplyNo\":\"20210821416\",\"journeyList\":[{\"beginTime\":\"2021-08-31 09:00:00\",\"endTime\":\"2021-09-01 17:00:00\",\"beginCity\":\"上海\",\"endCity\":\"南京\"}],\"trainOrders\":[{\"beginTime\":\"2021-09-01 09:20:00\",\"endTime\":\"2021-09-01 10:41:00\",\"beginCity\":\"上海\",\"endCity\":\"南京\"},{\"beginTime\":\"2021-09-01 16:32:00\",\"endTime\":\"2021-09-01 17:35:00\",\"beginCity\":\"南京\",\"endCity\":\"上海\"}],\"flightOrders\":[],\"orderList\":[]}";
AllowanceRequest request = JSON.parseObject(json,
AllowanceRequest.class);
Map<String, Object> result = allowanceService.allowance(request);
System.out.println(JSON.toJSONString(result));
}
}

@ -0,0 +1,565 @@
package com.engine.htsc.workflow.web;
import com.alibaba.fastjson.JSONObject;
import com.api.browser.bean.BrowserBean;
import com.api.browser.bean.SearchConditionGroup;
import com.api.browser.bean.SearchConditionItem;
import com.api.browser.bean.SearchConditionOption;
import com.api.browser.util.BrowserInitUtil;
import com.api.browser.util.ConditionFactory;
import com.api.browser.util.ConditionType;
import com.engine.htsc.workflow.util.WorkflowUtil;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import weaver.formmode.setup.ModeRightInfo;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.HrmUserVarify;
import weaver.hrm.User;
import weaver.hrm.check.JobComInfo;
import weaver.hrm.company.DepartmentComInfo;
import weaver.hrm.definedfield.HrmFieldManager;
import weaver.interfaces.htsc.comInfo.PropBean;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 java.util.*;
/**
* Created by K1810006 on 2020/9/23.
*/
public class AssignProcessorAction {
/**
*
* @param request
* @param response
* @return
*/
@GET
@Path("/setting/getAddFormfields")
@Produces({MediaType.TEXT_PLAIN})
public String getFormFields(@Context HttpServletRequest request, @Context HttpServletResponse response){
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> apidatas = new HashMap<String, Object>();
String workflowid = request.getParameter("workflowid");
ConditionFactory conditionFactory = new ConditionFactory(user);
//流程对应的配置字段
List<SearchConditionGroup> fieldGroup = new ArrayList<SearchConditionGroup>();
List<SearchConditionItem> mainFieldItems = new ArrayList<SearchConditionItem>();
List<SearchConditionItem> detailFieldItems = new ArrayList<SearchConditionItem>();
try {
//主表字段
RecordSet rs = new RecordSet();
String mainFieldsSql = " select b.* from workflow_bill a,workflow_billfield b " +
" where a.id=b.billid and a.tablename='uf_zdclrpz' and detailtable is null order by b.dsporder ";
rs.executeQuery(mainFieldsSql);
while(rs.next()){
String fieldid = Util.null2String(rs.getString("id"));
String fieldname = Util.null2String(rs.getString("fieldname"));
String fielddbtype = Util.null2String(rs.getString("fielddbtype"));
String fieldhtmltype = Util.null2String(rs.getString("fieldhtmltype"));
String type = Util.null2String(rs.getString("type"));
String fieldlabel = Util.null2String(rs.getString("fieldlabel"));
SearchConditionItem fieldItem = getFieldItem(conditionFactory,fieldid,fieldname,fielddbtype,fieldhtmltype,type,fieldlabel,3,1);
fieldItem.setRules("required");
if(fieldname.equals("dqpzld") || fieldname.equals("gw")){
fieldItem.setViewAttr(3);
String value = Util.null2String(request.getParameter(fieldname));
fieldItem.setValue(value);
}
mainFieldItems.add(fieldItem);
}
//获取流程字段
rs.executeQuery(" select * from uf_lctjzd where lc=? ",new Object[]{workflowid});
while(rs.next()){
String lczd = Util.null2String(rs.getString("lczd"));
String zdlx = Util.null2String(rs.getString("zdlx"));
String zdyw = Util.null2String(rs.getString("zdyw"));
String lbid = Util.null2String(rs.getString("lbid"));
String zdymlx = Util.null2String(rs.getString("zdymlx"));
String zdzlx = Util.null2String(rs.getString("zdzlx"));
SearchConditionItem fieldItem = getFieldItem(conditionFactory,lczd,lczd,zdlx,zdymlx,zdzlx,lbid,3,1);
fieldItem.setRules("required");
detailFieldItems.add(fieldItem);
}
fieldGroup.add(new SearchConditionGroup("基本信息",true,mainFieldItems));
fieldGroup.add(new SearchConditionGroup("指定条件配置",true,detailFieldItems));
apidatas.put("fields",fieldGroup);
apidatas.put("success", true);
} catch (Exception e) {
e.printStackTrace();
apidatas.put("success", false);
}
return JSONObject.toJSONString(apidatas);
}
/**
*
* @param request
* @param response
* @return
*/
@GET
@Path("/setting/getEditFormfields")
@Produces({MediaType.TEXT_PLAIN})
public String getEditFormfields(@Context HttpServletRequest request, @Context HttpServletResponse response){
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> apidatas = new HashMap<String, Object>();
String dataid = request.getParameter("dataid");
ConditionFactory conditionFactory = new ConditionFactory(user);
List<SearchConditionGroup> fieldGroup = new ArrayList<SearchConditionGroup>();
List<SearchConditionItem> mainFieldItems = new ArrayList<SearchConditionItem>();
List<SearchConditionItem> detailFieldItems = new ArrayList<SearchConditionItem>();
try {
RecordSet rs = new RecordSet();
//查询当前编辑数据的主表数据
Map<String,String> mainDataMap = new HashMap<>();
rs.executeQuery( " select * from uf_zdclrpz where id=? ",new Object[]{dataid});
if(rs.next()){
String columnNames[] = rs.getColumnName();
for(int i=0;i<columnNames.length;i++){
String fieldName = columnNames[i].toLowerCase();
String fieldValue = Util.null2String(rs.getString(fieldName));
mainDataMap.put(fieldName,fieldValue);
}
}
//主表字段
String mainFieldsSql = " select b.* from workflow_bill a,workflow_billfield b " +
" where a.id=b.billid and a.tablename='uf_zdclrpz' and detailtable is null order by b.dsporder ";
rs.executeQuery(mainFieldsSql);
while(rs.next()){
String fieldid = Util.null2String(rs.getString("id"));
String fieldname = Util.null2String(rs.getString("fieldname"));
String fielddbtype = Util.null2String(rs.getString("fielddbtype"));
String fieldhtmltype = Util.null2String(rs.getString("fieldhtmltype"));
String type = Util.null2String(rs.getString("type"));
String fieldlabel = Util.null2String(rs.getString("fieldlabel"));
SearchConditionItem fieldItem = getFieldItem(conditionFactory,fieldid,fieldname,fielddbtype,fieldhtmltype,type,fieldlabel,3,1);
// fieldItem.setValue(mainDataMap.get(fieldname));
fieldItem.setRules("required");
if(fielddbtype.startsWith("browser")){
fielddbtype = fielddbtype.split("\\.")[1];
}else{
fielddbtype = "";
}
Object fieldvalue = getItemDefaultValue(user,mainDataMap.get(fieldname),fielddbtype,fieldhtmltype,type,fieldid);
BrowserInitUtil.setConditionItemDefaultValue(fieldItem, fieldvalue,3);
mainFieldItems.add(fieldItem);
}
//查询明细表数据
String detailSql = " select zd,z,b.* from uf_zdclrpz_dt1 a,workflow_billfield b " +
" where a.mainid=? and b.id=a.zd ";
rs.executeQuery(detailSql,new Object[]{dataid});
while(rs.next()){
String fieldid = Util.null2String(rs.getString("zd"));
String fieldValue = Util.null2String(rs.getString("z"));
String fieldname = Util.null2String(rs.getString("fieldname"));
String fielddbtype = Util.null2String(rs.getString("fielddbtype"));
String fieldhtmltype = Util.null2String(rs.getString("fieldhtmltype"));
String type = Util.null2String(rs.getString("type"));
String fieldlabel = Util.null2String(rs.getString("fieldlabel"));
SearchConditionItem fieldItem = getFieldItem(conditionFactory,fieldid,fieldid,fielddbtype,fieldhtmltype,type,fieldlabel,3,1);
fieldItem.setRules("required");
// fieldItem.setValue(mainDataMap.get(fieldname));
if(fielddbtype.startsWith("browser")){
fielddbtype = fielddbtype.split("\\.")[1];
}else{
fielddbtype = "";
}
Object fieldvalue = getItemDefaultValue(user,fieldValue,fielddbtype,fieldhtmltype,type,fieldid);
BrowserInitUtil.setConditionItemDefaultValue(fieldItem, fieldvalue,3);
detailFieldItems.add(fieldItem);
}
fieldGroup.add(new SearchConditionGroup("基本信息",true,mainFieldItems));
fieldGroup.add(new SearchConditionGroup("指定条件配置",true,detailFieldItems));
apidatas.put("fields",fieldGroup);
apidatas.put("success", true);
} catch (Exception e) {
e.printStackTrace();
apidatas.put("success", false);
}
return JSONObject.toJSONString(apidatas);
}
/**
*
* @param request
* @param response
* @return
*/
@POST
@Path("/setting/saveFormfields")
@Produces({MediaType.TEXT_PLAIN})
public String saveFormfields(@Context HttpServletRequest request, @Context HttpServletResponse response){
User user = HrmUserVarify.getUser(request, response);
BaseBean bb = new BaseBean();
Map<String, Object> apidatas = new HashMap<String, Object>();
String dataid = request.getParameter("dataid");
String baseParams = request.getParameter("baseparams");
String settingParams = request.getParameter("settingparams");
RecordSetTrans rts = new RecordSetTrans();
rts.setAutoCommit(false);
try {
//更新主表数据
JSONObject baseParamsJson = JSONObject.parseObject(baseParams);
int dqpzld = baseParamsJson.getIntValue("dqpzld");
int cjbm = User.getUser(dqpzld,0).getUserDepartment();
String gw = Util.null2String(baseParamsJson.getString("gw"));
String lc = Util.null2String(baseParamsJson.getString("lc"));
String cftj = Util.null2String(baseParamsJson.getString("cftj"));
String zdclr = Util.null2String(baseParamsJson.getString("zdclr"));
String uuid = UUID.randomUUID().toString();
String currentdate = TimeUtil.getCurrentDateString();
String currenttime = TimeUtil.getOnlyCurrentTimeString();
//int formmodeid = Util.getIntValue(bb.getPropValue("HtscFormmode","uf_zdclrpz"),2004);
PropBean pb = new PropBean();
String uf_zdclrpz_cubeuuid = pb.getPropName("UF_ZDCLRPZ_CUBEUUID");
JSONObject jsonObject = pb.getModeInfoByUUID(uf_zdclrpz_cubeuuid);
int formmodeid = Util.getIntValue(jsonObject.getString("modeid"));
bb.writeLog("AssignProcessorAction-formmodeid:"+formmodeid);
int creater = user.getUID();
String mainSql = " insert into uf_zdclrpz (dqpzld,gw,cjbm,lc,cftj,zdclr," +
"modedatacreater,modedatacreatedate,modedatacreatetime,formmodeid,modeuuid) " +
"values(?,?,?,?,?,?,?,?,?,?,?) ";
boolean res = rts.executeUpdate(mainSql,new Object[]{dqpzld,gw,cjbm,lc,cftj,zdclr,creater,currentdate,currenttime,formmodeid,uuid});
if(res){
rts.executeQuery("select id from uf_zdclrpz where dqpzld=? and lc=? and zdclr=? ",
new Object[]{dqpzld,lc,zdclr});
rts.next();
int mainid = rts.getInt("id");
//重构权限
ModeRightInfo moderight = new ModeRightInfo();
moderight.editModeDataShare(creater, formmodeid, mainid);
//插入明细数据
JSONObject settingParamsJson = JSONObject.parseObject(settingParams);
Iterator iter = settingParamsJson.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry entry = (Map.Entry) iter.next();
String fieldname = (String)entry.getKey();
String fieldvalue = (String) entry.getValue();
rts.executeUpdate(" insert into uf_zdclrpz_dt1(mainid,zd,z) values(?,?,?) ", new Object[]{mainid,fieldname,fieldvalue});
}
}
rts.commit();
apidatas.put("success", true);
} catch (Exception e) {
e.printStackTrace();
rts.rollback();
apidatas.put("success", false);
}
return JSONObject.toJSONString(apidatas);
}
/**
*
* @param request
* @param response
* @return
*/
@POST
@Path("/setting/updateFormfields")
@Produces({MediaType.TEXT_PLAIN})
public String updateFormfields(@Context HttpServletRequest request, @Context HttpServletResponse response){
User user = HrmUserVarify.getUser(request, response);
BaseBean bb = new BaseBean();
Map<String, Object> apidatas = new HashMap<String, Object>();
String dataid = request.getParameter("dataid");
String baseParams = request.getParameter("baseparams");
String settingParams = request.getParameter("settingparams");
RecordSetTrans rts = new RecordSetTrans();
rts.setAutoCommit(false);
try {
//更新主表数据
JSONObject baseParamsJson = JSONObject.parseObject(baseParams);
String cftj = Util.null2String(baseParamsJson.getString("cftj"));
String zdclr = Util.null2String(baseParamsJson.getString("zdclr"));
String modifyDatetime = TimeUtil.getCurrentTimeString();
int modifier = user.getUID();
String mainSql = " update uf_zdclrpz set cftj=?,zdclr=?," +
" modedatamodifier=?,modedatamodifydatetime=? where id=? ";
boolean res = rts.executeUpdate(mainSql,new Object[]{cftj,zdclr,modifier,modifyDatetime,dataid});
if(res){
//更新明细数据
JSONObject settingParamsJson = JSONObject.parseObject(settingParams);
Iterator iter = settingParamsJson.entrySet().iterator();
while (iter.hasNext())
{
Map.Entry entry = (Map.Entry) iter.next();
String fieldname = (String)entry.getKey();
String fieldvalue = (String) entry.getValue();
rts.executeUpdate(" update uf_zdclrpz_dt1 set z=? where zd=? and mainid=? ", new Object[]{fieldvalue,fieldname,dataid});
}
}
rts.commit();
apidatas.put("success", true);
} catch (Exception e) {
e.printStackTrace();
rts.rollback();
apidatas.put("success", false);
}
return JSONObject.toJSONString(apidatas);
}
/**
*
* @param request
* @param response
* @return
*/
@GET
@Path("/setting/getAssignUserList")
@Produces({MediaType.TEXT_PLAIN})
public String getAssignUserList(@Context HttpServletRequest request, @Context HttpServletResponse response){
User user = HrmUserVarify.getUser(request, response);
Map<String, Object> apidatas = new HashMap<String, Object>();
try {
List<Map<String,Object>> userList = new ArrayList<>();
//如果当前人员安全级别大于等于50 有配置权限
if(Util.getIntValue(user.getSeclevel())>=50){
Map<String,Object> userMap = getUserMap(user);
userList.add(userMap);
}
RecordSet rs = new RecordSet();
rs.executeQuery(" select bpzr from uf_pzrqxb where pzr=? ", new Object[]{user.getUID()});
if(rs.next()){
String bpzr = Util.null2String(rs.getString("bpzr"));
String bpzrArr[] = bpzr.split(",");
for(int i=0;i<bpzrArr.length;i++){
int id = Util.getIntValue(bpzrArr[i]);
User userItem = User.getUser(id,0);
Map userMap = getUserMap(userItem);
userList.add(userMap);
}
}
apidatas.put("users",userList);
apidatas.put("success", true);
} catch (Exception e) {
e.printStackTrace();
apidatas.put("success", false);
}
return JSONObject.toJSONString(apidatas);
}
/**
* condition
* @param conditionFactory
* @param fieldid
* @param fieldname
* @param fieldhtmltype
* @param type
* @param fieldlabel
* @param viewAttr
* @param colSpan
* @return
*/
public SearchConditionItem getFieldItem(ConditionFactory conditionFactory,String fieldid,String fieldname,
String fielddbtype,String fieldhtmltype,String type,String fieldlabel,int viewAttr,int colSpan){
SearchConditionItem fieldItem = null;
if("1".equals(fieldhtmltype)){//输入框类型
if("1".equals(type)){ //文本
fieldItem = conditionFactory.createCondition(ConditionType.INPUT,fieldlabel,fieldname);
}else{//数值
fieldItem = conditionFactory.createCondition(ConditionType.INPUTNUMBER,fieldlabel,fieldname);
}
}
if("2".equals(fieldhtmltype)){//多行文本类型
fieldItem = conditionFactory.createCondition(ConditionType.TEXTAREA,fieldlabel,fieldname);
}
if("5".equals(fieldhtmltype)){//下拉框类型
fieldItem = conditionFactory.createCondition(ConditionType.SELECT,fieldlabel,fieldname);
List<SearchConditionOption> selectOptions = WorkflowUtil.getSelectOptions(fieldid);
fieldItem.setOptions(selectOptions);
}
if("3".equals(fieldhtmltype)){
fieldItem = conditionFactory.createCondition(ConditionType.BROWSER,fieldlabel,fieldname,type);
if("161".equals(type)){
BrowserBean browserBean= fieldItem.getBrowserConditionParam();
Map<String,Object> conditionParams = new HashMap<>();
conditionParams.put("type",fielddbtype);
browserBean.setConditionDataParams(conditionParams);
Map<String,Object> completeParams= new HashMap<>();
completeParams.put("type",type);
completeParams.put("fielddbtype",fielddbtype);
browserBean.setCompleteParams(completeParams);
browserBean.getDestDataParams().put("type",fielddbtype);
browserBean.getDataParams().put("type",fielddbtype);
fieldItem.setBrowserConditionParam(browserBean);
}
}
fieldItem.setColSpan(colSpan);//定义一行显示条件数默认值为2,当值为1时标识该条件单独占一行
fieldItem.setFieldcol(12); //条件输入框所占宽度默认值18
fieldItem.setViewAttr(viewAttr);
return fieldItem;
}
/**
* condition
* @param conditionFactory
* @param fieldid id
* @param viewAttr
* @param colSpan
* @return
*/
public SearchConditionItem getFieldItem(ConditionFactory conditionFactory,String fieldid,int viewAttr,int colSpan){
SearchConditionItem fieldItem = null;
RecordSet rs = new RecordSet();
rs.executeQuery(" select * from workflow_billfield where id=? ",new Object[]{fieldid});
if(rs.next()){
String fieldname = Util.null2String(rs.getString("fieldname"));
String fieldhtmltype = Util.null2String(rs.getString("fieldhtmltype"));
String fielddbtype = Util.null2String(rs.getString("fielddbtype"));
String type = Util.null2String(rs.getString("type"));
String fieldlabel = Util.null2String(rs.getString("fieldlabel"));
fieldItem = getFieldItem(conditionFactory,fieldid,fieldname,fielddbtype,fieldhtmltype,type,fieldlabel,viewAttr,colSpan);
}
return fieldItem;
}
/**
*
* @param value
* @param fieldhtmltype
* @return
*/
public Object getItemDefaultValue(User user,String value,String fiedlddbtype,String fieldhtmltype,String detailtype,String fieldid){
Object defaultValue = value;
try{
if("3".equals(fieldhtmltype)){
List<Map<String, Object>> replaceDatas = new ArrayList<Map<String, Object>>();
if(value.length()>0){
HrmFieldManager hrmFieldManager = new HrmFieldManager();
String fieldshowname = hrmFieldManager.getFieldvalue(user, fiedlddbtype, Util.getIntValue(fieldid), Util.getIntValue(fieldhtmltype), Util.getIntValue(detailtype), value, 0);
String[] fieldvalues = Util.splitString(value, ",");
String[] fieldshownames = Util.splitString(fieldshowname, ",");
if (detailtype.equals("257")){
if(fieldshowname.endsWith("&nbsp")){
fieldshowname=fieldshowname.substring(0,fieldshowname.length()-5);
}
fieldshownames = Util.splitString(fieldshowname, "&nbsp");
}
for(int i=0;fieldvalues!=null&&i<fieldvalues.length;i++){
if(fieldvalues.length != fieldshownames.length){
break;
}
if(Util.null2String(fieldshownames[i]).length()==0){
continue;
}
Map<String, Object> replaceData = new HashMap<String, Object>();
replaceData.put("id", fieldvalues[i]);
replaceData.put("name", fieldshownames[i]);
replaceDatas.add(replaceData);
}
}
return replaceDatas;
}
}catch (Exception e){
new BaseBean().writeLog(e);
}
return defaultValue;
}
/**
* userMap
* @param user
* @return
*/
public Map<String,Object> getUserMap(User user){
Map<String,Object> userMap = new HashMap<String,Object>();
if(user!=null){
userMap.put("uID",user.getUID());
userMap.put("lastname",user.getLastname());
userMap.put("seclevel",user.getSeclevel());
userMap.put("sex",user.getSex());
userMap.put("status",user.getStatus());
userMap.put("account",user.getAccount());
userMap.put("account_type",user.getAccount_type());
userMap.put("userDepartment",user.getUserDepartment());
userMap.put("userSubCompany1",user.getUserSubCompany1());
userMap.put("loginid",user.getLoginid());
userMap.put("email",user.getEmail());
userMap.put("jobtitle",user.getJobtitle());
try {
JobComInfo jobComInfo = new JobComInfo();
DepartmentComInfo deptComInfo = new DepartmentComInfo();
String jobTitleName = jobComInfo.getJobName(user.getJobtitle());
userMap.put("jobactivity",jobTitleName);
String departmentName = deptComInfo.getDepartmentName(user.getUserDepartment()+"");
userMap.put("departmentName",departmentName);
}catch (Exception e){
e.printStackTrace();
}
}
return userMap;
}
}

@ -0,0 +1,13 @@
package com.engine.htxc.apprchalink.cinterface;
/**
* Remark
* @author K1810015
* @version 1.0.0
* @ClassName ContractLink.java
* @createTime 20220726 14:26:00
*/
public interface ApprachaLink<T,R> {
}

@ -0,0 +1,70 @@
package com.engine.htxc.apprchalink.cinterface;
import com.engine.htxc.commonutil.user.UserTools;
import com.engine.integration.util.StringUtils;
import weaver.general.Util;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author K1810015
* @version 1.0.0
* @ClassName ApprachaLinkBuilder.java
* @createTime 20220726 15:00:00
*/
public class ApprachaLinkBuilder<T> {
/**
* <p></p>
* @title collback
* @author K1810015
* @updateTime 2022/7/26 15:01
* @ps Vo,
* @throws
*/
public Map<String,Object> collback(List<T> list,List<String> fileid){
Map<String,Object> retmap=new HashMap<>(2);
if(list==null || list.size()<=0 || fileid==null) {
return retmap;
}
list.forEach(t->{
Map<String,Object> map=(Map<String, Object>) t;
if(map!=null && map.size()>0){
fileid.forEach(item->{
String value= Util.null2String(map.get(item));
if(!StringUtils.isBlank(value)){
if(StringUtils.isBlank(Util.null2String(retmap.get(item)))){
retmap.put(item,map.get(item));
}else {
retmap.put(item, retmap.get(item) + "," + map.get(item));
}
}
});
}
});
fileid.forEach(item->{
if(!retmap.containsKey(item)){
retmap.put(item,"");
}
});
Map<String,Object> filtermap= retmap.entrySet().stream().filter((item)->{
return !StringUtils.isBlank(item.getKey());
}).collect(Collectors.toMap(p->p.getKey(),p->
Arrays.stream(p.getValue().toString().split(",")).distinct().collect(Collectors.joining(","))
));
filtermap.entrySet().stream().forEach((item)->{
retmap.put(item.getKey()+"_specialobj",getUserInfo(Util.null2String(item.getValue())));
});
return retmap;
}
public List<Map<String,Object>> getUserInfo(String userids){
return UserTools.getUserInfo(userids,"id,lastname as name");
}
}

@ -0,0 +1,64 @@
package com.engine.htxc.commonutil.base;
import com.engine.htxc.commonutil.db.DbTools;
import com.engine.integration.util.StringUtils;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
/**
* <p></p>
* @author K1810015
* @version 1.0.0
* @ClassName BaseUtil.java
* @createTime 20220711 15:07:00
*/
public class BaseUtil {
public static String getdeptdirectors(int deptid){
DbTools dbtools=new DbTools();
if(deptid<=0){
return "";
}
String sql="select deptdirectors from hrmdepartmentdefined where deptid ='"+deptid+"'";
return dbtools.getsqlonevalue(sql,(Object) null);
}
public static String getusertoszjg(String userid){
DbTools dbtools=new DbTools();
String sql="select id from ( select t.* from HrmDepartment t start with t.id=( select a.id from HRMDEPARTMENT a,HRMRESOURCE b where a.id=b.DEPARTMENTID and b.id='"+userid+"') connect by prior t.supdepid=t.id) where SUPDEPID is null or SUPDEPID=0 ";
return dbtools.getsqlonevalue(sql,(Object) null);
}
/**
* <p></p>
* @title compare
* @author K1810015
* @updateTime 2022/8/12 13:37
* @throws
*/
public static boolean stringcompare(String a,String b){
if(StringUtils.isBlank(a) || StringUtils.isBlank(b)) {
//特殊操作防止null和空字符串的操作
if(a.equals(b)){
return true;
}else{
return false;
}
}
List<String> alist= Arrays.stream(a.split(",")).collect(Collectors.toList());
List<String> blist= Arrays.stream(b.split(",")).collect(Collectors.toList());
alist.removeAll(blist);
if(alist.size()==0){
return true;
}else{
return false;
}
}
private BaseUtil() {
}
}

@ -0,0 +1,26 @@
package com.engine.htxc.contract.dto;
/**
* @Title: ecology-9
* @Company:
* @author: K1810050
* @version: 1.0
* @CreateDate: 2022/8/18 21:04
* @Description: ,,
* @ModifyLog:
**/
public enum AmountTypeEnum {
/**
*
*/
FIX_AMOUNT,
/**
*
*/
NO_FIX_AMOUNT,
/**
*
*/
NO_AMOUNT
}

@ -0,0 +1,21 @@
package com.engine.htxc.contract.dto;
/**
* @Title: ecology-9
* @Company:
* @author: K1810050
* @version: 1.0
* @CreateDate: 2022/8/18 21:07
* @Description: 0
* @ModifyLog:
**/
public enum ApprovalWayEnum {
/**
*
*/
SEQUENTIAL,
/**
*
*/
PARALLEL
}

@ -0,0 +1,22 @@
package com.engine.htxc.contract.dto;
/**
* @Title: ecology-9
* @Company:
* @author: K1810050
* @version: 1.0
* @CreateDate: 2022/8/18 21:08
* @Description:
* @ModifyLog:
**/
public enum AuthoritySimplifyEnum {
/**
*
*/
SIMPLIFY,
/**
*
*/
NO_SIMPLIFY
}

@ -0,0 +1,20 @@
package com.engine.htxc.workflow.create.autotrigger.contract.service;
import com.engine.htxc.workflow.create.autotrigger.contract.vo.AutoApproval;
/**
*
* @author K1810015
* @version 1.0.0
* @ClassName AutoApprovalService.java
* @createTime 20220805 10:07:00
*/
public interface AutoApprovalService {
/**
* <p></p>
* @title create
* @author K1810015
* @updateTime 2022/8/21 22:07
*/
public int create(AutoApproval autoApproval);
}

@ -0,0 +1,89 @@
package com.engine.htxc.workflow.create.autotrigger.contract.service.impl;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.engine.core.impl.Service;
import com.engine.htxc.commonutil.workflow.WorkflowCreate;
import com.engine.htxc.workflow.create.autotrigger.contract.service.AutoApprovalService;
import com.engine.htxc.workflow.create.autotrigger.contract.vo.AutoApproval;
import com.engine.htxc.workflow.create.autotrigger.contract.vo.ContractInfo;
import com.engine.integration.util.StringUtils;
import weaver.general.Util;
import weaver.interfaces.htsc.comInfo.PropBean;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author K1810015
* @version 1.0.0
* @ClassName AutoApprovalService.java
* @createTime 2022-08-0510:07:00
*/
public class AutoApprovalServiceImpl extends Service implements AutoApprovalService {
private String workflowid=new PropBean().getPropName("constract.approval.workflowid");
private String creatorid="";
private String requestname="";
@Override
public int create(AutoApproval autoApproval) {
if(autoApproval==null){
return -100;
}
creatorid=Util.null2String(autoApproval.creatorid);
requestname=Util.null2String(autoApproval.requestname);
if(StringUtils.isBlank(creatorid) || StringUtils.isBlank(requestname)){
return -101;
}
Map<String,Object> map=new HashMap<>(15);
map.put("ngr",creatorid);
map.put("szbm",Util.null2String(autoApproval.getSzbm()));
map.put("szjg",Util.null2String(autoApproval.getSzjg()));
map.put("jjcd",Util.null2String(autoApproval.getJjcd()));
map.put("lxfs",Util.null2String(autoApproval.getLxfs()));
map.put("ngrq",Util.null2String(autoApproval.getNgrq()));
map.put("nbsh",Util.null2String(autoApproval.getNbsh()));
map.put("bmld",Util.null2String(autoApproval.getBmld()));
map.put("sqjh",Util.null2String(autoApproval.getSqjh()));
map.put("qttzyddx",Util.null2String(autoApproval.getQttzyddx()));
map.put("shfs",Util.null2String(autoApproval.getShfs()));
map.put("lkrqsfytsyq",Util.null2String(autoApproval.getLkrqsfytsyq()));
map.put("xzhtlb",Util.null2String(autoApproval.getXzhtlb()));
map.put("htlx",Util.null2String(autoApproval.getHtlx()));
map.put("yz",Util.null2String(autoApproval.getYz()));
Map<String,String> result= map.entrySet().stream().filter(mapfilter->
!StringUtils.isBlank(Util.null2String(mapfilter.getValue()))
).collect(Collectors.toMap(p->p.getKey(), p->Util.null2String(p.getValue()) ));
List<ContractInfo> contractlist= autoApproval.getListcontrat();
List<Map<String,String>> listdetail=new ArrayList<>();
if(contractlist!=null){
contractlist.forEach(item->{
Map<String,Object> map2=JSONObject.parseObject(JSON.toJSONString(item),Map.class);
if(map2!=null && map2.size()>0) {
listdetail.add(map2.entrySet().stream().collect(Collectors.toMap(p -> p.getKey(), p -> Util.null2String(p.getValue()))));
}
});
}
return createworkflow(result,listdetail);
}
private int createworkflow(Map<String,String> mainmap, List<Map<String,String>> listmap){
WorkflowCreate workflowCreate= WorkflowCreate.createWorkflow(p->{
p.setCreatorId(creatorid);
p.setWorkflowId(workflowid);
p.setRequestName(requestname);
p.setIsNextFlow("");
p.setRequestMainMap(mainmap);
}).workflowCreateByRequestMap();
String requestid= workflowCreate.requestid;
if(StringUtils.isBlank(requestid)){
return -1;
}
if(listmap!=null && listmap.size()>0){
workflowCreate.workflowCreatelist("4",listmap);
}
return Util.getIntValue(requestid,-1);
}
}

@ -0,0 +1,189 @@
package com.engine.htxc.workflow.create.autotrigger.contract.vo;
import java.util.List;
/**
* @author K1810015
* @version 1.0.0
* @ClassName AutoApproval.java
* @createTime 20220805 10:12:00
*/
public class AutoApproval {
public String creatorid;
public String requestname;
public String szbm;
public String szjg;
public String jjcd;
public String lxfs;
public String ngrq;
public String nbsh;
public String bmld;
public String sqjh;
public String qttzyddx;
public String shfs;
public String lkrqsfytsyq;
public String xzhtlb;
public String getHtlx() {
return htlx;
}
public void setHtlx(String htlx) {
this.htlx = htlx;
}
public String htlx;
public List<ContractInfo> getListcontrat() {
return listcontrat;
}
public void setListcontrat(List<ContractInfo> listcontrat) {
this.listcontrat = listcontrat;
}
public List<ContractInfo> listcontrat;
public String getCreatorid() {
return creatorid;
}
public void setCreatorid(String creatorid) {
this.creatorid = creatorid;
}
public String getRequestname() {
return requestname;
}
public void setRequestname(String requestname) {
this.requestname = requestname;
}
public String getSzbm() {
return szbm;
}
public void setSzbm(String szbm) {
this.szbm = szbm;
}
public String getSzjg() {
return szjg;
}
public void setSzjg(String szjg) {
this.szjg = szjg;
}
public String getJjcd() {
return jjcd;
}
public void setJjcd(String jjcd) {
this.jjcd = jjcd;
}
public String getLxfs() {
return lxfs;
}
public void setLxfs(String lxfs) {
this.lxfs = lxfs;
}
public String getNgrq() {
return ngrq;
}
public void setNgrq(String ngrq) {
this.ngrq = ngrq;
}
public String getNbsh() {
return nbsh;
}
public void setNbsh(String nbsh) {
this.nbsh = nbsh;
}
public String getBmld() {
return bmld;
}
public void setBmld(String bmld) {
this.bmld = bmld;
}
public String getSqjh() {
return sqjh;
}
public void setSqjh(String sqjh) {
this.sqjh = sqjh;
}
public String getQttzyddx() {
return qttzyddx;
}
public void setQttzyddx(String qttzyddx) {
this.qttzyddx = qttzyddx;
}
public String getShfs() {
return shfs;
}
public void setShfs(String shfs) {
this.shfs = shfs;
}
public String getLkrqsfytsyq() {
return lkrqsfytsyq;
}
public void setLkrqsfytsyq(String lkrqsfytsyq) {
this.lkrqsfytsyq = lkrqsfytsyq;
}
public String getXzhtlb() {
return xzhtlb;
}
public void setXzhtlb(String xzhtlb) {
this.xzhtlb = xzhtlb;
}
public String getYz() {
return yz;
}
public void setYz(String yz) {
this.yz = yz;
}
public String yz;
@Override
public String toString() {
return "AutoApproval{" +
"creatorid='" + creatorid + '\'' +
", requestname='" + requestname + '\'' +
", szbm='" + szbm + '\'' +
", szjg='" + szjg + '\'' +
", jjcd='" + jjcd + '\'' +
", lxfs='" + lxfs + '\'' +
", ngrq='" + ngrq + '\'' +
", nbsh='" + nbsh + '\'' +
", bmld='" + bmld + '\'' +
", sqjh='" + sqjh + '\'' +
", qttzyddx='" + qttzyddx + '\'' +
", shfs='" + shfs + '\'' +
", lkrqsfytsyq='" + lkrqsfytsyq + '\'' +
", xzhtlb='" + xzhtlb + '\'' +
", yz='" + yz + '\'' +
'}';
}
}

@ -0,0 +1,136 @@
package com.engine.htxc.workflow.create.business.contract.approval.service.impl;
import java.util.*;
import java.util.stream.Collectors;
import com.engine.htxc.commonutil.base.BaseUtil;
import com.engine.htxc.commonutil.user.UserHt;
import com.engine.htxc.commonutil.workflow.WorkflowCreate;
import com.engine.htxc.workflow.create.business.contract.init.ContractWorkflowData;
import com.engine.htxc.workflow.create.business.contract.util.ContracrtBaseUtil;
import com.engine.htxc.workflow.create.business.contract.util.ContractUpdateStatus;
import com.engine.htxc.workflow.create.cinterface.CustomizeWorkflow;
import com.engine.integration.util.StringUtils;
import cn.hutool.core.date.DateTime;
import weaver.general.Util;
import weaver.interfaces.htsc.comInfo.PropBean;
/**
* <p></p>
* @author K1810015
* @version 1.0.0
* @ClassName approvaltosign.java
* @createTime 20220720 17:00:00
*/
public class Approvaltosign extends ContractWorkflowData implements CustomizeWorkflow {
private PropBean pb = new PropBean();
private String requestnamevalue = "";
public Map<String, Object> ufhtqcmap = new HashMap<>();
public Map<String, Object> linkmodemap = new HashMap<>();
public Approvaltosign(Map<String, Object> map) {
super(map);
}
@Override
public int create() {
if (StringUtils.isBlank(requestid) || StringUtils.isBlank(requestname)) {
return -101;
}
String creatorid = Util.null2String(map.get("creatorid"));
if (StringUtils.isBlank(creatorid)) {
return -102;
}
int value = createworkflow();
return value;
}
public int createworkflow() {
String workflowid = Util.null2String(pb.getPropName("constract.sign.workflowid"));
String field = "ngr,szbm,szjg,jjcd,lxfs,ngrq,jjyy,xzhtlb,fhtlx";
Map<String, Object> maintable = getmaintable(Arrays.stream(field.split(",")).collect(Collectors.toList()));
List<Map<String, String>> dt4maplist = getdetailtable(4, null);
boolean flag= (
maintable == null || maintable.isEmpty()
|| dt4maplist == null || dt4maplist.isEmpty());
if (flag) {
return -1;
}
Map<String, String> retmap = new HashMap<>(3);
retmap.put("jjcd", Util.null2String(maintable.get("jjcd")));
retmap.put("ngrq", DateTime.now().toString("yyyy-MM-dd hh:mm"));
retmap.put("jjyy", Util.null2String(maintable.get("jjyy")));
dt4maplist.forEach(dt4map -> {
Map<String, Object> draftedmap = new HashMap<>(2);
draftedmap.put("htbh", Util.null2String(dt4map.get("htbh")));
draftedmap.put("htbb", Util.null2String(dt4map.get("htbb")));
String prefix = Util.null2String(pb.getPropName("constract.sign.workflowname"));
ufhtqcmap = ContracrtBaseUtil.getufhtqcmap(draftedmap);
if (ufhtqcmap != null || ufhtqcmap.size() > 0) {
String htmc = Util.null2String(ufhtqcmap.get("htmc"));
String qcr = Util.null2String(ufhtqcmap.get("qcr"));
if (!StringUtils.isBlank(htmc) && !StringUtils.isBlank(qcr)) {
requestnamevalue = prefix + htmc;
List<String> draftedlist = Arrays.stream(qcr.split(",")).collect(Collectors.toList());
draftedlist.forEach(createidvalue -> {
int userid = Util.getIntValue(createidvalue, -1);
UserHt userht = new UserHt(userid);
if (userid > 0) {
retmap.put("xzhtlb", Util.null2String(dt4map.get("htbh")));
retmap.put("fhtlx", Util.null2String(dt4map.get("htflx")));
retmap.put("htbb", Util.null2String(dt4map.get("htbb")));
retmap.put("htlx", Util.null2String(dt4map.get("htlx")));
retmap.put("htzt", "3");
retmap.put("ngr", Util.null2String(userid));
retmap.put("szbm", Util.null2String(userht.getUserDepartment()));
retmap.put("szjg", Util.null2String(BaseUtil.getusertoszjg(Util.null2String(userid))));
Map<String, Object> contracttypemap = new HashMap<>(1);
contracttypemap.put("contracttype", Util.null2String(dt4map.get("htlx")));
linkmodemap = ContracrtBaseUtil.getmodeltype(contracttypemap);
if (linkmodemap != null && linkmodemap.size() > 0) {
retmap.put("gljmmc", Util.null2String(linkmodemap.get("jmbd")));
}
Map<String,
String> result = retmap.entrySet().stream()
.filter(mapfilter -> !StringUtils.isBlank(Util.null2String(mapfilter.getValue())))
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
WorkflowCreate workflowCreate = WorkflowCreate.createWorkflow(p -> {
p.setCreatorId(createidvalue);
p.setWorkflowId(workflowid);
p.setRequestName(requestnamevalue);
p.setIsNextFlow("");
p.setRequestMainMap(result);
}).workflowCreateByRequestMap();
if (!StringUtils.isBlank(workflowCreate.requestid)
&& Util.getIntValue(workflowCreate.requestid, -100) > 0) {
String htdsf = Util.null2String(ufhtqcmap.get("htdsf"));
if (!StringUtils.isBlank(htdsf)) {
List<Map<String, String>> dsflist = new ArrayList<>();
Arrays.stream(htdsf.split(",")).distinct().forEach((item) -> {
Map<String, String> dsfmap = new HashMap<>(1);
dsfmap.put("dsfmc", Util.null2String(item));
dsflist.add(dsfmap);
});
workflowCreate.workflowCreatelist("5", dsflist);
}
ContractUpdateStatus
.createContractUpdateStatus(requestid, Util.null2String(dt4map.get("htflx")),
Util.null2String(dt4map.get("htbh")), ufhtqcmap, user)
.approvalend(workflowCreate.requestid);
} else {
// 做好记录
}
}
});
}
}
});
return 1;
}
}

@ -0,0 +1,314 @@
package weaver.interfaces.htsc.cus;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import weaver.conn.RecordSet;
import weaver.file.ImageFileManager;
import weaver.general.BaseBean;
import weaver.general.GCONST;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.company.DepartmentComInfo;
import weaver.interfaces.htsc.GlobatTools.JAVATools;
import weaver.interfaces.htsc.GlobatTools.MessageDetailLog;
import weaver.interfaces.htsc.comInfo.PropBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import weaver.workflow.request.RequestManager;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
/**
*
*/
public class AutoSignAction extends BaseBean implements Action { private Log log = LogFactory.getLog(this.getClass());
@Override
public String execute(RequestInfo requestInfo) {
HTUtil htUtil = new HTUtil();
String requestid = Util.null2String(requestInfo.getRequestid());//流程请求ID
//流程标题
String requestName = Util.null2String(requestInfo.getRequestManager().getRequestname());
requestName=JAVATools.lengthsub(requestName,0,100);
String tableName = Util.null2String(requestInfo.getRequestManager().getBillTableName());
//当前操作人(印章管理员)
User user = requestInfo.getRequestManager().getUser();
MessageDetailLog messageDetailLog=new MessageDetailLog(tableName);
log.info("自动签章流程接口-----START-----" + requestid);
try {
PropBean pb = new PropBean();
//应用ID
String appid = Util.null2String(pb.getPropName("AutoSign.appId"));
//秘钥
String secret = Util.null2String(pb.getPropName("AutoSign.secret"));
//文件类型
String doctype = Util.null2String(pb.getPropName("AutoSign.docType"));
//统一信用代码
String code = Util.null2String(pb.getPropName("AutoSign.code"));
//增加dzyyfs用于keyword
String sql = "select id,sfcwgz,zwpdf,yz,sfcwgz,flowNum,qzbj,lcbh from " + tableName + " where requestid = "+requestid;
RecordSet rs = new RecordSet();
rs.execute(sql);
rs.next();
int heightMoveSize=0;
int moveSize=0;
try {
moveSize = Integer.parseInt(Util.null2String(pb.getPropName("AutoSign.moveSize")));
heightMoveSize = Integer.parseInt(Util.null2String(pb.getPropName("AutoSign.heightMoveSize")));
}catch (Exception exo){
System.out.println("自动用印转换失败");
}
String sfcwgz = Util.null2String(rs.getString("sfcwgz"));//是否盖章 0是 1
String zwpdf = Util.null2String(rs.getString("zwpdf"));
String flowNumWf = Util.null2String(rs.getString("flowNum"));//
String qzbj = Util.null2String(rs.getString("qzbj"));//
String lcbh=Util.null2String(rs.getString("lcbh"));
String keyword="华泰证券股份有限公司签章";
if(!"".equals(qzbj)){
keyword=qzbj;
}
if("".equals(zwpdf)){
requestInfo.getRequestManager().setMessageid("111111");
requestInfo.getRequestManager().setMessagecontent("请进行【定稿】操作!");
return Action.FAILURE_AND_CONTINUE;
}
String yz = Util.null2String(rs.getString("yz"));
if("0".equals(sfcwgz) && "".equals(flowNumWf)){//只有盖章的时候才会自动用印,避免重复用印
if("".equals(yz)){
requestInfo.getRequestManager().setMessageid("111111");
requestInfo.getRequestManager().setMessagecontent("请选择印章后提交!");
return Action.FAILURE_AND_CONTINUE;
}else if(!yz.contains(",")){//判断只有有且仅有一个印章的时候才会调用自动印章
JSONObject obj = new JSONObject();
obj.put("appId",appid);
obj.put("secret",secret);
obj.put("flowName",requestName);
obj.put("flowNum",lcbh);//这里流程编号修改成requestid
obj.put("needWatermark","ENABLE");
JSONObject flowOwnerObj = new JSONObject();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
flowOwnerObj.put("flowSendTime",sdf.format(new Date()));
DepartmentComInfo dc = new DepartmentComInfo();
//部门编码
String orgId = Util.null2String(dc.getDepartmentCode(user.getUserDepartment()+""));
flowOwnerObj.put("orgId",orgId);
//部门编码
String orgName = Util.null2String(dc.getDepartmentName(user.getUserDepartment()+""));
flowOwnerObj.put("orgName",orgName);
//姓名
String personName = user.getLastname();
//工号
String personNum = user.getLoginid();
personName+="("+personNum+")";
flowOwnerObj.put("personName",personName);
flowOwnerObj.put("personNum",personNum);
obj.put("flowOwner",flowOwnerObj);
JSONArray docSignsArr = new JSONArray();
JSONObject docObj = new JSONObject();//正文对象
docObj.put("docId",zwpdf);
docObj.put("docType",doctype);
docObj.put("effectType","ELECTRONIC");
Map<String,String> pdfMap = getLatestVersionPDF(requestid,zwpdf);
if(pdfMap.isEmpty()){
requestInfo.getRequestManager().setMessageid("111111");
requestInfo.getRequestManager().setMessagecontent("上传挂载正文PDF文件出错");
return Action.FAILURE_AND_CONTINUE;
}
System.out.println("正文pdf文件上传成功");
String fileAttachPatch = pdfMap.get("mountpath");//挂载出去的地址
docObj.put("fileAttachPatch",fileAttachPatch);
String fileNameDisplay = pdfMap.get("imagefilename");//文件名称
docObj.put("fileNameDisplay",fileNameDisplay);
JSONObject jsonContent = new JSONObject();
docObj.put("jsonContent",jsonContent);
docObj.put("signMethod","ORDER");
JSONArray signersArr = new JSONArray();
JSONObject signersObj = new JSONObject();
signersObj.put("code",code);
signersObj.put("codeType","USC");
signersObj.put("revokeFlag","false");
String yzcode = getSignCode(yz);
if("".equals(yzcode)){
System.out.println("未找到对应的印章ID");
requestInfo.getRequestManager().setMessageid("111111");
requestInfo.getRequestManager().setMessagecontent("未找到对应的印章ID请查看是否维护");
return Action.FAILURE_AND_CONTINUE;
}
signersObj.put("sealId",yzcode);
signersObj.put("signNum","1");
signersObj.put("ownerType","INSIDE");
signersObj.put("signatoryType","ENTERPRISE");
signersObj.put("keyWord",keyword);
System.out.println("已添加keyword");
signersObj.put("moveSize",moveSize);
signersObj.put("heightMoveSize",heightMoveSize);
System.out.println("已添加偏移量");
signersObj.put("signMethod","TRUSTEESHIP");
signersObj.put("signedExamine","DISABLE");
signersArr.add(signersObj);
docObj.put("signers",signersArr);
docObj.put("validityStartDate",sdf.format(new Date()));
docObj.put("validityEndDate",getNextYear(sdf.format(new Date()),"yyyy-MM-dd HH:mm:ss",30));
docSignsArr.add(docObj);
obj.put("docSigns",docSignsArr);
messageDetailLog.writLogsnotretrun(requestid,obj.toJSONString(),"1",messageDetailLog.Other);
String response = htUtil.doAutoSign(obj.toJSONString());//返回结果
if("".equals(response)){
requestInfo.getRequestManager().setMessageid("111111");
requestInfo.getRequestManager().setMessagecontent("自动签章接口返回结果为空!");
return Action.FAILURE_AND_CONTINUE;
}
JSONObject res = JSONObject.parseObject(response);
String status = Util.null2String(res.get("status"));//标识 200成功 否则失败
String message = Util.null2String(res.get("message"));
log.info("自动签章响应状态:"+status);
log.info("自动签章响应信息:"+message);
if(!"200".equals(status)){
messageDetailLog.writeinseertLogs(requestid,obj.toJSONString(),"1",messageDetailLog.success,messageDetailLog.error,response);
requestInfo.getRequestManager().setMessageid("111111");
requestInfo.getRequestManager().setMessagecontent("用印失败,请联系管理员处理!");
return Action.FAILURE_AND_CONTINUE;
}
messageDetailLog.writeinseertLogs(requestid,obj.toJSONString(),"1",messageDetailLog.success,messageDetailLog.success,response);
JSONObject data = JSONObject.parseObject(Util.null2String(res.get("data")));
String flowNum = Util.null2String(data.get("flowNum"));
JSONArray docIdsArr = JSONArray.parseArray(Util.null2String(data.get("docIds")));
RecordSet rs_up = new RecordSet();
String docidStr = "";
for(int i=0;i<docIdsArr.size();i++){
if("".equals(docidStr)){
docidStr = Util.null2String(docIdsArr.get(i));
}else{
docidStr += "," + Util.null2String(docIdsArr.get(i));
}
}
rs_up.execute("update "+ tableName + " set flowNum='"+flowNum+"',docIds='"+docidStr+"' where requestid = "+requestid);
// messageDetailLog.writLogsnotretrun(requestid,obj.toJSONString(),"1",messageDetailLog.Other);
}
}
} catch (Exception e) {
e.printStackTrace();
requestInfo.getRequestManager().setMessageid("111111");
requestInfo.getRequestManager().setMessagecontent("自动签章接口异常,请联系系统管理员!");
return Action.FAILURE_AND_CONTINUE;
}
log.info("自动签章流程接口-----END-----" + requestid);
return Action.SUCCESS;
}
/**
*
* @param requestid ID
* @param docid ID
* @return
*/
private Map<String,String> getLatestVersionPDF(String requestid,String docid){
Map<String,String> map = new HashMap<>();
PropBean pb = new PropBean();
try{
//取最大版本的正文信息
String sql = "select t.* from (select imagefileid,imagefilename,versionid from docimagefile \n" +
"where docid = ? \n" +
"order by versionid desc) t where rownum < 2";
RecordSet rs = new RecordSet();
rs.executeQuery(sql,new Object[]{docid});
if(rs.next()){
String imagefileid = Util.null2String(rs.getString("imagefileid"));
// String imagefilename = Util.null2String(rs.getString("imagefilename"));
String imagefilename = docid+".pdf";
String versionid = Util.null2String(rs.getString("versionid"));
log.info("正文:"+imagefilename+"的最新版本是:"+versionid);
InputStream inputstream = ImageFileManager.getInputStreamById(Util.getIntValue(imagefileid));
int index;
byte[] bytes = new byte[1024];
// 文件夹名称
String folderName = requestid+"_"+docid+"_"+System.currentTimeMillis();
String mountdir = Util.null2String(pb.getPropName("AutoSign.mountdir"));
if("".equals(mountdir)){
log.info("获取的用印上传共享目录为空!");
return map;
}
String path = mountdir+"/" + folderName;
// linux 下 先创建文件夹
File dir = new File(path);
//设置写权限windows下不用此语句
dir.setWritable(true, false);
dir.mkdirs();
//赋权限正常是当前用户的权限但是这里和之前的老OA不是同一个用户
Runtime.getRuntime().exec("chmod -R 777 " + path);
path += "/"+imagefilename;//创建文件
File file = new File(path);
if (file.exists()) {
file.delete();
}
// file.createNewFile();
FileOutputStream uploadFile = new FileOutputStream(file);
while ((index = inputstream.read(bytes)) != -1) {
uploadFile.write(bytes, 0, index);
uploadFile.flush();
}
inputstream.close();
uploadFile.close();
Runtime.getRuntime().exec("chmod -R 777 " + path);
log.info("正文imagefilename"+imagefilename);
log.info("正文realpath"+path);
log.info("正文mountpath"+imagefilename);
map.put("imagefilename",folderName+"/"+imagefilename);
map.put("realpath",path);
String Signmountpath = Util.null2String(pb.getPropName("Signmountpath"));
String mountpath=Signmountpath+folderName+"/"+imagefilename;
map.put("mountpath",mountpath);
}
}catch (Exception e){
e.printStackTrace();
}
return map;
}
/**
* ID
* @param signid ID
* @return
*/
private String getSignCode(String signid){
RecordSet rs = new RecordSet();
rs.executeQuery("select yzbh from uf_yinzhang where id = ?",new Object[]{signid});
rs.next();
return Util.null2String(rs.getString("yzbh"));
}
/**
*
* @param dateStr
* @param pattern
* @param num
* @return
*/
private String getNextYear(String dateStr,String pattern,int num) {
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
Date date = sdf.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.YEAR, num);
return sdf.format(cal.getTime());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
}

@ -0,0 +1,63 @@
package weaver.interfaces.htsc.financialadjustment;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import weaver.workflow.request.RequestManager;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* k1810012
*
* 3dcbmdrbmuf_cwkhtzsdbm,jhcwbshr
* dcbmdrbm(16)
*
*/
public class ApproveAction implements Action {
@Override
public String execute(RequestInfo requestInfo) {
RecordSet rs = new RecordSet();
String rid = requestInfo.getRequestid();
RequestManager rm = requestInfo.getRequestManager();
String tableName = rm.getBillTableName();
int billid = rm.getBillid();
rs.writeLog(String.format("ApproveAction -- requestid:%s; billid:%s;", rid, billid));
try {
List<String> departs = new ArrayList<>();
rs.executeQuery("SELECT DCBM,DRBM FROM "+tableName+"_dt3 where mainid=?", billid);
while (rs.next()) {
departs.add(Util.null2String(rs.getString("DCBM")));
departs.add(Util.null2String(rs.getString("DRBM")));
}
String departss = departs.stream()
.distinct()
.filter(StringUtils::isNotBlank)
.filter(d -> !d.equals("16")).collect(Collectors.joining("','"));
rs.executeQuery("SELECT SDBM,JHCWBSHR FROM uf_cwkhtz WHERE SDBM IN ('"+departss+"')");
List<String> shrs = new ArrayList<>();
while (rs.next()) {
shrs.add(Util.null2String(rs.getString("JHCWBSHR")));
}
String shrss = shrs.stream()
.distinct()
.filter(StringUtils::isNotBlank)
.collect(Collectors.joining(","));
rs.writeLog(String.format("查询审核人,SDBM:%s; shrs:%s", departss, shrss));
boolean b = rs.executeUpdate(
"UPDATE " + tableName + " set jhcwbshr='" + shrss + "' WHERE ID =?", billid);
rs.writeLog("更新审批链:" + b);
return SUCCESS;
} catch (Exception e) {
rm.setMessagecontent( "节点任务,ApproveAction出现异常,请联系管理员!");
rs.errorLog("节点任务,ApproveAction出现异常", e);
return FAILURE_AND_CONTINUE;
}
}
}

@ -0,0 +1,128 @@
package weaver.interfaces.htsc.payment;
import com.alibaba.fastjson.JSONObject;
import com.engine.htsc.common.utils.DoubleUtil;
import com.engine.htsc.payment.pojo.InvoiceData;
import org.apache.commons.collections4.CollectionUtils;
import weaver.conn.RecordSet;
import weaver.conn.RecordSetTrans;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import weaver.workflow.request.RequestManager;
import java.util.*;
import java.util.stream.Collectors;
/**
* k1810012
* <p>
* action
* ,
*/
public class BillSummaryAction extends BaseBean implements Action {
@Override
public String execute(RequestInfo requestInfo) {
String rid = requestInfo.getRequestid();
RequestManager rm = requestInfo.getRequestManager();
String tableName = rm.getBillTableName();
writeLog(String.format("票据汇总,requestid:%s; tableName=%s", rid, tableName));
RecordSet rs = new RecordSet();
try {
String sql = "select t1.mainid,t1.FPLX,t1.JSHJ,t1.SE from " + tableName + "_DT5 t1\n" +
"left join " + tableName + " t2\n" +
"on t1.MAINID=t2.ID\n" +
"where t2.REQUESTID=?";
rs.executeQuery(sql, rid);
List<InvoiceData> dataList = new ArrayList<>();
String mainid = "";
while (rs.next()) {
mainid = rs.getString("mainid");
InvoiceData invoiceData = new InvoiceData();
invoiceData.setType(Util.null2String(rs.getString("FPLX")));
invoiceData.setPriceTax(Util.null2String(rs.getString("JSHJ"), "0.00"));
invoiceData.setTaxes(Util.null2String(rs.getString("SE"), "0.00"));
dataList.add(invoiceData);
}
//表6同步汇总
sql = "select t1.mainid,t1.FPLX,t1.KPJE,t1.SE from " + tableName + "_DT6 t1\n" +
"left join " + tableName + " t2\n" +
"on t1.MAINID=t2.ID\n" +
"where t2.REQUESTID=?";
rs.executeQuery(sql, rid);
while (rs.next()) {
InvoiceData invoiceData = new InvoiceData();
invoiceData.setType(Util.null2String(rs.getString("FPLX")));
invoiceData.setPriceTax(Util.null2String(rs.getString("KPJE"), "0.00"));
invoiceData.setTaxes(Util.null2String(rs.getString("SE"), "0.00"));
dataList.add(invoiceData);
}
//分组数据
List<InvoiceData> packetData = dataList.stream().collect(Collectors.groupingBy(InvoiceData::getType,
Collectors.reducing((sum, data) ->
new InvoiceData(sum.getType(),
String.valueOf(DoubleUtil.add(sum.getPriceTax(), data.getPriceTax(), 2)),
String.valueOf(DoubleUtil.add(sum.getTaxes(), data.getTaxes(), 2))))
)).values().stream().map(Optional::get).collect(Collectors.toList());
writeLog(String.format("packetData:%s", JSONObject.toJSONString(packetData)));
//批量插入
savePacketData(packetData, tableName, mainid);
return SUCCESS;
} catch (Exception e) {
rm.setMessagecontent("票据汇总信息计算错误,原因:" + e.getMessage());
rm.setMessageid("500");
return FAILURE_AND_CONTINUE;
}
}
/**
*
*
* @param packetData
* @throws Exception
*/
private void savePacketData(List<InvoiceData> packetData, String tableName, String mainId) throws Exception {
if (CollectionUtils.isNotEmpty(packetData)) {
RecordSetTrans rst = new RecordSetTrans();
rst.setAutoCommit(false);
String save = "insert into " + tableName + "_DT7 (MAINID,JSHJZE,BHSHJ,SJHJ,PJLX)\n" +
"values(?,?,?,?,?)";
List<List<Object>> paramList = new ArrayList<>();
packetData.forEach(item -> {
List<Object> valueList = new ArrayList<>();
valueList.add(mainId);
valueList.add(item.getPriceTax()); //价税
valueList.add(String.valueOf(DoubleUtil.sub(item.getPriceTax(), item.getTaxes(), 2))); //价
valueList.add(item.getTaxes()); //税
valueList.add(item.getType());
paramList.add(valueList);
});
try {
rst.executeUpdate("delete " + tableName + "_DT7 where MAINID=?", mainId);
rst.executeBatchSql(save, paramList);
rst.commit();
} catch (Exception e) {
rst.rollback();
throw new Exception("savePacketData error:" + e.getMessage());
}
}
}
}

@ -0,0 +1,116 @@
package weaver.interfaces.htsc.workflow;
import com.engine.htsc.payment.util.PayUtil;
import weaver.conn.RecordSet;
import weaver.formmode.setup.ModeRightInfo;
import weaver.general.BaseBean;
import weaver.general.TimeUtil;
import weaver.general.Util;
import weaver.hrm.resource.ResourceComInfo;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.util.UUID;
/**
* Created by K1810006 on 2020/9/17.
*/
public class BankAccountHistoryHKAction extends BaseBean implements Action{
@Override
public String execute(RequestInfo requestInfo) {
String tablename = requestInfo.getRequestManager().getBillTableName();
String requestid = requestInfo.getRequestid();
int workflowid = Util.getIntValue(requestInfo.getWorkflowid());
RecordSet rs = new RecordSet();
String wfunnumber = PayUtil.getUnNumberByWorkFlowId(workflowid);
if("xgtybx".equals(wfunnumber)){
String dataSql = " select ngr,ygxm,bm,yxzh,khx,'' skdw from "+tablename+" a,"+tablename+"_dt11 b \n" +
"where a.id=b.mainid and a.requestid=? ";
rs.executeQuery(dataSql,requestid);
}
if("xgtyfk".equals(wfunnumber)){
String dataSql = " select ngr,'' ygxm,'' bm,yxzh,khx,skdw from "+tablename+" a,"+tablename+"_dt11 b \n" +
"where a.id=b.mainid and a.requestid=? ";
rs.executeQuery(dataSql,requestid);
}
inserBankAccount(rs);
return Action.SUCCESS;
}
/**
* ,,,
*
* @return boolean
*/
public boolean isRepeat(String yxzh) {
boolean flag = false;
RecordSet rs = new RecordSet();
rs.executeQuery("select id from uf_xgyhlsjl where yxzh=? ",yxzh);
if (rs.next()) {
flag = true;
}
return flag;
}
public void inserBankAccount(RecordSet rs){
try{
ResourceComInfo resComInfo = new ResourceComInfo();
RecordSet rs2 = new RecordSet();
int formModeId = PayUtil.getFormModeIdByCubeName("uf_xgyhlsjl");
String uuid = UUID.randomUUID().toString();
String createdate = TimeUtil.getCurrentDateString();
String createtime = TimeUtil.getOnlyCurrentTimeString();
String insertSql = "insert into uf_xgyhlsjl(ygxm,bm,yxzh,khx,skdw,workcode,formmodeid,modedatacreater," +
"modedatacreatertype,modedatacreatedate,modedatacreatetime,modeuuid) \n" +
"values(?,?,?,?,?,?,?,?,?,?,?,?)";
while (rs.next()){
String yxzh = Util.null2String(rs.getString("yxzh"));
if(isRepeat(yxzh)){
continue;
}
int ngr = Util.getIntValue(rs.getString("ngr"));
String workcode = resComInfo.getWorkcode(ngr+"");
String ygxm = Util.null2String(rs.getString("ygxm"));
String bm = Util.null2String(rs.getString("bm"));
String skdw = Util.null2String(rs.getString("skdw"));
String khx = Util.null2String(rs.getString("khx"));
boolean result = rs2.executeUpdate(insertSql,new Object[]{ygxm,bm,yxzh,khx,skdw,workcode,formModeId,ngr,0,createdate,createtime,uuid});
if(result){
rebuildRight(ngr,formModeId,uuid);
}
}
}catch (Exception e) {
}
}
/**
*
* @param creater
* @param formModeId
* @param uuid
*/
public void rebuildRight(int creater,int formModeId, String uuid) {
RecordSet rs = new RecordSet();
rs.executeQuery(" select id from uf_xgyhlsjl where modeuuid=?",uuid);
rs.next();
int id = rs.getInt("id");
if(id>0){
ModeRightInfo modeRightInfo = new ModeRightInfo();
modeRightInfo.editModeDataShare(creater, formModeId, id);
}
}
}

@ -0,0 +1,118 @@
package weaver.interfaces.htsc.wpscenter.convert;
import net.sf.json.JSONObject;
import weaver.hrm.User;
import weaver.interfaces.htsc.wpscenter.utils.*;
import weaver.systeminfo.SystemEnv;
import weaver.workflow.logging.Logger;
import weaver.workflow.logging.LoggerFactory;
import java.util.HashMap;
import java.util.Map;
public class BaseConvert {
private Logger log = LoggerFactory.getLogger(BaseConvert.class);
private TaskUtil task ;
private User user;
public BaseConvert(){
task = new TaskUtil();
}
/**
*
* @param user
*/
public BaseConvert(User user){
this();
this.user = user;
task.setUser(user);
}
public User getUser() {
return user;
}
public BaseConvert setUser(User user) {
this.user = user;
task.setUser(user);
return this;
}
public Logger getLog() {
return log;
}
public BaseConvert setLog(Logger log) {
this.log = log;
return this;
}
public Map<String, String> convert(String apiUrl, JSONObject requestParams, String targetFilename, Map<String, String> params) throws Exception {
Map<String, String> result = new HashMap<String, String>();
if(null == requestParams || requestParams.isEmpty()){
throw new IllegalArgumentException("the argument requestParams can't be null or empty!");
}
TokenUtil tokenUtil = new TokenUtil();
String appToken = tokenUtil.getFileFormatToken(user);
apiUrl = apiUrl + "?app_token=" + appToken;
HttpUtil httpUtil = new HttpUtil(user);
requestParams.put("task_id", task.getTask_id());
// 请求接口转换文档
JSONObject response = httpUtil.post(apiUrl, requestParams, null);
String code = Tools.getJsonData(response, "result");
if(Config.isLogInfo()) {
log.info("调用接口结果:" + response);
}
if(!"0".equals(code)){
String message = Tools.getJsonData(response, "msg");
result.put("response", response.toString());
result.put("status", code);
result.put("message", message);
result.put("messageid", code);
return response;
}
JSONObject taskResult = task.waitForTaskResult();
code = Tools.getJsonData(taskResult, "result");
if(!"0".equals(code)){
return taskResult;
}
boolean onlyDownloadUrl = "true".equals(params.get("onlyDownloadUrl"));
// 文件下载地址,预览时用不到
String download = Tools.getJsonData(taskResult, "download_id");
if("".equals(download)) {
result.put("response", response.toString());
result.put("status", "514617");
result.put("message", SystemEnv.getHtmlLabelName(514617, Tools.getUserLanguageid(user)));
result.put("messageid", "514617");
return result;
} else if(onlyDownloadUrl) {
result.put("status", "0");
result.put("downloadUrl", Config.getCpsV1DownloadFile() + Config.URL_SEPARATOR + download);
return result;
}
int newImagefileId = httpUtil.getFileFromRomoteForWPSDoccenter(Config.getCpsV1DownloadFile() + Config.URL_SEPARATOR + download, targetFilename, null);
if(newImagefileId > 0) {
result.put("status", "0");
result.put("imagefileid", newImagefileId+"");
} else {
result.put("response", response.toString());
result.put("status", "514617");
result.put("message", SystemEnv.getHtmlLabelName(514617, Tools.getUserLanguageid(user)));
result.put("messageid", "514617");
}
return result;
}
}

@ -0,0 +1,145 @@
package weaver.interfaces.htsc.zbgg.action;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.interfaces.htsc.comInfo.PropBean;
import weaver.interfaces.htsc.cus.HTUtil;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import weaver.workflow.request.RequestManager;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
public class ApproveBulletinAction extends BaseBean implements Action {
private Log log = LogFactory.getLog(this.getClass());
@Override
public String execute(RequestInfo requestInfo) {
HTUtil htUtil = new HTUtil();
String requestid = Util.null2String(requestInfo.getRequestid());
RequestManager requestManager = requestInfo.getRequestManager();
PropBean propBean = new PropBean();
String ApproveBulletin = propBean.getPropName("getInfoToIbull"); //测试环境ip地址
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//获取主表名
String tableName = requestManager.getBillTableName();
log.info("tableName: "+tableName+"==requestid "+requestid);
//主表
Long id;
String ggbh = "";
String oaId = "";
Short status = 3;
String zw = "";
String fj = "";
String badge = "";
String name = "";
JSONObject datas = new JSONObject();
RecordSet rs = new RecordSet();
try {
String mainsql = "select a.ggbh as ggbh,a.lcbh as lcbh,a.zw as zw,a.fj as fj,b.loginid as badge,b.lastname as name from " + tableName + " a,hrmresource b where a.ngr = b.id and requestid = " + requestid;
rs.execute(mainsql);
log.info("查询主表sql: " + mainsql);
if(rs.next()){
ggbh = Util.null2String(rs.getString("ggbh"));
oaId = Util.null2String(rs.getString("lcbh"));
zw = Util.null2String(rs.getString("zw"));
fj = Util.null2String(rs.getString("fj"));
badge = Util.null2String(rs.getString("badge"));
name = Util.null2String(rs.getString("name"));
}
if(!"".equals(ggbh)){
id = Long.parseLong(ggbh);
datas.put("id",id);
datas.put("oaId",oaId);
datas.put("status",status);
//正文
JSONArray bulletinAnnexArray = new JSONArray();
JSONObject fileObject = new JSONObject();
String zwName = "";
String zwfileId = "";
String zwuploadTime = "";
String zwsql = "select a.imagefilename as filename,a.operatedate as operatedate,a.operatetime as operatetime,b.fileid as fileid from docimagefile a, imagefile b where a.imagefileid = b.imagefileid and docid =" + zw;
rs.execute(zwsql);
if(rs.next()){
zwName = Util.null2String(rs.getString("filename"));
zwfileId = Util.null2String(rs.getString("fileid"));
zwuploadTime = Util.null2String(rs.getString("operatedate")) + " " + Util.null2String(rs.getString("operatetime"));
}
Date uploadTime1 = new Date();
try {
uploadTime1 = sdf.parse(zwuploadTime);
}catch (Exception e) {
log.error("正文上传时间转换date格式异常");
e.printStackTrace();
}
fileObject.put("annexName",zwName);
fileObject.put("annexCeName",zwName);
fileObject.put("annexCeId",zwfileId);
fileObject.put("annexType",1);
fileObject.put("uploadPname",name);
fileObject.put("uploadWorkno",badge);
fileObject.put("uploadTime",uploadTime1);
bulletinAnnexArray.add(fileObject);
//附件
if(!"".equals(fj)){
String[] split = fj.split(",");
for(String value : split){
JSONObject attachObject = new JSONObject();
String fjname = "";
String fjfileid = "";
String fjuploadTime = "";
String fjsql = "select a.imagefilename as filename,a.operatedate as operatedate,a.operatetime as operatetimeb.fileid as fileid from docimagefile a, imagefile b where a.imagefileid = b.imagefileid and docid =" + value;;
rs.execute(fjsql);
if(rs.next()){
fjname = Util.null2String(rs.getString("filename"));
fjfileid = Util.null2String(rs.getString("fileid"));
fjuploadTime = Util.null2String(rs.getString("operatedate")) + " " + Util.null2String(rs.getString("operatetime"));
}
Date uploadTime2 = new Date();
try {
uploadTime2 = sdf.parse(fjuploadTime);
}catch (Exception e) {
log.error("附件上传时间转换date格式异常");
e.printStackTrace();
}
attachObject.put("annexName",fjname);
attachObject.put("annexCeName",fjname);
attachObject.put("annexCeId",fjfileid);
attachObject.put("annexType",2);
attachObject.put("uploadPname",name);
attachObject.put("uploadWorkno",badge);
attachObject.put("uploadTime",uploadTime2);
bulletinAnnexArray.add(attachObject);
}
}
datas.put("bulletinAnnex",bulletinAnnexArray);
log.info("参数详情"+requestid+"==="+datas.toString());
String encode = "utf-8";
Map<String, String> headers = new HashMap<>();
log.info("url:"+ApproveBulletin);
String content = htUtil.httpPostRaw(ApproveBulletin, datas.toString(), headers, encode);
log.info("content结果集"+ content);
}else{
log.info("公告编号为空,该流程非外部平台触发,无需回调接口");
}
}catch (Exception e) {
e.printStackTrace();
return Action.FAILURE_AND_CONTINUE;
}
return Action.SUCCESS;
}
}

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<!--
/**
* @author wangcd
* @date 2014-11-19
*/
-->
<beans default-autowire="byName">
<bean id="applicationContextHolder"
class="weaver.common.web.ApplicationContextHolder" singleton="true">
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />
</beans>
Loading…
Cancel
Save