diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/bip/ctrl/NccSsoController.java b/v5/apps-customize/src/main/java/com/seeyon/apps/bip/ctrl/NccSsoController.java index ecfef85..8fbe736 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/bip/ctrl/NccSsoController.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/bip/ctrl/NccSsoController.java @@ -65,7 +65,7 @@ public class NccSsoController extends BaseController { BipResponse bipResponse = BipHttpUtil.parseResponse(body); if(bipResponse.isSuccess()) { String ssoUrl = url + "/nccloud/resources/uap/rbac/thirdpartylogin/main/index.htmlac?cesstoken=" + bipResponse.getData() - + "&redirect_uri=" + url + "/nccloud"; + + "&redirect_uri=" + url + "/nccloud"; response.sendRedirect(ssoUrl); } else { super.rendJavaScript(response, "alert('单点登录错误:" + bipResponse.getMsg() + "');"); diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jybip/node/TongyongshukuanNode.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jybip/node/TongyongshukuanNode.java index 6713112..5df307c 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jybip/node/TongyongshukuanNode.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jybip/node/TongyongshukuanNode.java @@ -12,6 +12,7 @@ import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; import com.seeyon.apps.jync_file.kit.PropKit; import com.seeyon.apps.jync_file.util.HeaderUtil; +import com.seeyon.apps.jync_file.util.ParamNewUtil; import com.seeyon.apps.jync_file.util.ParamUtil; import com.seeyon.apps.jync_file.util.ProtUtil; import com.seeyon.cap4.form.bean.FormDataMasterBean; @@ -58,8 +59,8 @@ public class TongyongshukuanNode extends ACommonSuperNode { context.setNeedSave(true); String summaryId = formDataVo.getColSummary().getId()+""; try { - ParamUtil paramUtil = new ParamUtil(); - JSONObject jsonObject = paramUtil.getTongyongshoukuanParam(formDataVo,summaryId); + ParamNewUtil paramNewUtil = new ParamNewUtil(); + JSONObject jsonObject = paramNewUtil.getTongyongshoukuanParam(formDataVo,summaryId); JSONObject headerer = HeaderUtil.getHeader(); log.info(headerer.toString()); String url = PropKit.getProp(PropKit.GENERALBILLURL); diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/StrKit.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/StrKit.java index ca69d6d..25c68e0 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/StrKit.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/StrKit.java @@ -29,11 +29,13 @@ public class StrKit { } return o.toString(); } - + public static String str(Object o, boolean null2Str) { if(o == null && null2Str) { + System.out.println("结果为空,转换成空字符串"); return ""; } + System.out.println("结果不为空将object转换成字符串"); return str(o); } @@ -94,7 +96,7 @@ public class StrKit { } return 0; } - + public static Date toDate(Object o) throws Exception { if(null == o) { return null; @@ -107,7 +109,7 @@ public class StrKit { } return null; } - + public static List toList(Object o) { if(o == null) { return null; @@ -117,7 +119,7 @@ public class StrKit { return null; } } - + /** * 判断对象是否为空 * @param o @@ -136,7 +138,7 @@ public class StrKit { } return false; } - + /** * 删除最后一个字符 * @param input @@ -148,7 +150,7 @@ public class StrKit { return input.substring(0, input.length() - 1); } - + /** * 转换成 123,456,789的格式 * @param inputString @@ -165,10 +167,10 @@ public class StrKit { } return deleteLastChar(str); } - + /** * 把原始字符串分割成指定长度的字符串列表 - * + * * @param inputString * 原始字符串 * @param length @@ -185,7 +187,7 @@ public class StrKit { /** * 把原始字符串分割成指定长度的字符串列表 - * + * * @param inputString * 原始字符串 * @param length @@ -207,7 +209,7 @@ public class StrKit { /** * 分割字符串,如果开始位置大于字符串长度,返回空 - * + * * @param str * 原始字符串 * @param f @@ -225,7 +227,7 @@ public class StrKit { return str.substring(f, t); } } - + public static String getFixedLengthStr(String str, int length) { // 如果为空,返回全部都是0 if(length < 1) { @@ -239,7 +241,7 @@ public class StrKit { } return str.substring(0, length); } - + private static String getZeor(int length) { String str = ""; for(int i = 0; i < length; i++) { @@ -247,5 +249,5 @@ public class StrKit { } return str; } - + } diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/form/CAP4FormKit.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/form/CAP4FormKit.java index 2d97a31..16a706f 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/form/CAP4FormKit.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/kit/form/CAP4FormKit.java @@ -3,6 +3,7 @@ package com.seeyon.apps.jync_file.kit.form; import java.util.List; import java.util.Map; +import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer; import org.apache.commons.logging.Log; import com.seeyon.apps.jync_file.kit.StrKit; @@ -48,15 +49,18 @@ public class CAP4FormKit { if(bean == null) { return null; } + FormTableBean table = bean.getFormTable(); if(table == null) { return null; } FormFieldBean field = table.getFieldBeanByDisplay(disPlay); if(field == null) { + System.out.println("不存在"+disPlay+"字段"); LOGGER.info("字段不存在:" + disPlay); return null; } + System.out.println("存在此字段,字段名称为:"+field.getName()); return bean.getFieldValue(field.getName()); } @@ -68,6 +72,7 @@ public class CAP4FormKit { public static String getFieldStrValue(FormDataBean bean, String disPlay) { Object value = getFieldValue(bean, disPlay); + System.out.println("返回结果是否为空:"+value); return StrKit.str(value, true); } diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/InterfaceListUtil.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/InterfaceListUtil.java index 8fb958a..023131d 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/InterfaceListUtil.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/InterfaceListUtil.java @@ -45,12 +45,12 @@ public class InterfaceListUtil { /** * 获取一个token - * + * * @param restUserName rest用户名 * @param restPassword rest密码 * @return - * @throws IOException - * @throws FileNotFoundException + * @throws IOException + * @throws FileNotFoundException */ public String getToken(String loginName) throws FileNotFoundException, IOException { String address = ""; @@ -88,14 +88,14 @@ public class InterfaceListUtil { /** * 调用get接口 - * + * * @param par 拼接在url中的参数 * @param strUrl 需要调用的url对应的配置文件的key * @return */ public String doGet(String par, String strUrl, String token) { String address = MessageFormat.format(getProperties(strUrl), par + "?token=") + token; - + DefaultHttpClient client = new DefaultHttpClient(); String result = ""; HttpGet get = new HttpGet(address); @@ -114,7 +114,7 @@ public class InterfaceListUtil { /** * 调用post接口 - * + * * @param str 调用接口传递的参数json * @param urlStr 需要调用的url对应的参数文件中的编码 * @return @@ -202,7 +202,7 @@ public class InterfaceListUtil { /** * 获取指定参数文件的值(pa.properties) - * + * * @param str 参数文件中的key * @return */ @@ -290,10 +290,10 @@ public class InterfaceListUtil { byte[] bytes = new byte[is.available()]; is.read(bytes); String result = new String(bytes); - + return result; } - + /** * 下载文件到指定目录 * @param dowUrl:http地址 diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ParamNewUtil.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ParamNewUtil.java new file mode 100644 index 0000000..eac5d74 --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ParamNewUtil.java @@ -0,0 +1,861 @@ +package com.seeyon.apps.jync_file.util; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.ext.workflow.vo.FieldDataVo; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; +import org.apache.commons.lang3.StringUtils; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ParamNewUtil { + + private static final Log log = Log.get(ParamUtil.class); + + private EnumManager enumManagerNew; + + public void setEnumManagerNew(EnumManager enumManagerNew) { + this.enumManagerNew = enumManagerNew; + } + + public EnumManager getEnumManagerNew() { + if (enumManagerNew == null) { + enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew"); + } + return enumManagerNew; + } + + /** + * 薪酬分账参数封装 + * @param formDataVo + * @param summaryId + * @return + * @throws IOException + */ + public JSONObject getXinChouFenZhangParam(FormDataVo formDataVo, String summaryId) throws NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + Map> subFormMaps = formDataVo.getSubFormMap(); + List subFormMap = subFormMaps.get("分账明细表"); + List istrue = new ArrayList(); + FieldDataVo isbearidVo = formDataVo.getFieldData("支付公司是否成本承担公司"); + String isbearid = ""; + if(isbearidVo!=null){ + isbearid = isbearidVo.getDbValue().toString(); + } + + String isbear = ""; + if("".equals(isbearid)){ + isbear = "否"; + }else { + isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); + } + for (FormDataVo subFormDataVo : subFormMap) { + FieldDataVo bipNoVo = subFormDataVo.getFieldData("BIP单据号"); + String bipNo = ""; + if(bipNoVo!=null){ + bipNo = bipNoVo.getStringValue(); + istrue.add(bipNo); + } + JSONObject subjson = new JSONObject(); + FieldDataVo psndoccodeVo = subFormDataVo.getFieldData("分账收款人编码"); + String psndoccode = ""; + if(psndoccodeVo!=null){ + psndoccode = psndoccodeVo.getStringValue(); + } + subjson.put("psndoccode", psndoccode); + FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); + String businessdate = ""; + if(businessdateVo!=null){ + businessdate = businessdateVo.getStringValue(); + } + subjson.put("businessdate", businessdate); + JSONArray data = new JSONArray(); + JSONObject jsondata = new JSONObject(); + FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); + String scomment = ""; + if(scommentVo!=null){ + scomment = scommentVo.getStringValue(); + } + jsondata.put("scomment", scomment); + FieldDataVo field0120Vo = subFormDataVo.getFieldData("摘要内容"); + String field0120 = ""; + if(field0120Vo!=null){ + field0120 = field0120Vo.getStringValue(); + } + jsondata.put("field0120", field0120); + FieldDataVo field0121Vo = subFormDataVo.getFieldData("分账税额"); + String field0121 = ""; + if(field0121Vo!=null){ + field0121 = field0121Vo.getStringValue(); + } + jsondata.put("field0121", field0121); + FieldDataVo field0119Vo = subFormDataVo.getFieldData("分账行无税金额"); + String field0119 = ""; + if(field0119Vo!=null){ + field0119 = field0119Vo.getStringValue(); + } + jsondata.put("field0119", field0119); + FieldDataVo moneyVo = subFormDataVo.getFieldData("分账原币金额"); + String money = ""; + if(moneyVo!=null){ + money = moneyVo.getStringValue(); + } + jsondata.put("money", money); + FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); + String jsfs = ""; + if(jsfsVo!=null){ + jsfs = jsfsVo.getStringValue(); + } + jsondata.put("jsfs", jsfs); + FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); + String kmdl = ""; + if(kmdlVo!=null){ + kmdl = kmdlVo.getStringValue(); + } + jsondata.put("kmdl", kmdl); + FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); + String szxm = ""; + if(szxmVo!=null){ + szxm = szxmVo.getStringValue(); + } + jsondata.put("szxm",szxm); + jsondata.put("fkyw", "OA"); + data.add(jsondata); + subjson.put("data", data); + if("是".equals(isbear)) { + FieldDataVo orgcodeVo = subFormDataVo.getFieldData("分账组织编码"); + String orgcode = ""; + if(orgcodeVo!=null){ + orgcode = orgcodeVo.getStringValue(); + } + subjson.put("orgcode",orgcode); + FieldDataVo fkbankcodeVo = subFormDataVo.getFieldData("分账付款银行账号"); + String fkbankcode = ""; + if(fkbankcodeVo!=null){ + fkbankcode = fkbankcodeVo.getStringValue(); + } + subjson.put("fkbankcode", fkbankcode); + }else { + FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); + String orgcode = ""; + if(orgcodeVo!=null){ + orgcode = orgcodeVo.getStringValue(); + } + subjson.put("orgcode", orgcode); + FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); + String fkbankcode = ""; + if(fkbankcodeVo!=null){ + fkbankcode = fkbankcodeVo.getStringValue(); + } + subjson.put("fkbankcode",fkbankcode); + } + FieldDataVo skbankcodeVo = subFormDataVo.getFieldData("分账收款银行账号"); + String skbankcode = ""; + if(skbankcodeVo!=null){ + skbankcode = skbankcodeVo.getStringValue(); + } + subjson.put("skbankcode", skbankcode); + subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); + FieldDataVo oabillcodeVo = subFormDataVo.getFieldData("分账单据流水号"); + String oabillcode = ""; + if(oabillcodeVo!=null){ + oabillcode = oabillcodeVo.getStringValue(); + } + subjson.put("oabillcode", oabillcode); + FieldDataVo field0006Vo = formDataVo.getFieldData("原始单据数"); + String field0006 = ""; + if(field0006Vo!=null){ + field0006 = field0006Vo.getStringValue(); + } + subjson.put("field0006", field0006); + FieldDataVo suppliercodeVo = subFormDataVo.getFieldData("分账收款人编码"); + String suppliercode = ""; + if(suppliercodeVo!=null){ + suppliercode = suppliercodeVo.getStringValue(); + } + subjson.put("suppliercode", suppliercode); + FieldDataVo ytVo = formDataVo.getFieldData("摘要内容"); + String yt = ""; + if(ytVo!=null){ + yt = ytVo.getStringValue(); + } + subjson.put("yt", yt); + FieldDataVo busitypecodeIdVo = formDataVo.getFieldData("业务流程"); + String busitypecodeId = ""; + if(busitypecodeIdVo!=null){ + busitypecodeId = busitypecodeIdVo.getDbValue().toString(); + } + String busitypecodeCode = getEnumManagerNew().getEnumItem(Long.parseLong(busitypecodeId)).getEnumItemCode(); + String busitypecode = busitypecodeCode.substring(5); + subjson.put("busitypecode", busitypecode); + FieldDataVo wldxidVo = subFormDataVo.getFieldData("业务流程"); + String wldxid = ""; + if(wldxidVo!=null){ + wldxid = wldxidVo.getDbValue().toString(); + } + String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); + String wldxvalue = wldxCode.substring(5); + subjson.put("wldx", wldxvalue); + subjson.put("fklx", "D3"); + jsonArray.add(subjson); + } + jsonObject.put("data", jsonArray); + if(istrue.size()==subFormMap.size()) { + jsonObject = new JSONObject(); + } + return jsonObject; + } + + /** + * 通用分账参数封装-新 + * @param formDataVo + * @param summaryId + * @return + * @throws IOException + */ + public JSONObject getTongYongFenZhangParam(FormDataVo formDataVo,String summaryId) throws NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + Map> subFormMaps = formDataVo.getSubFormMap(); + List subFormMap = subFormMaps.get("分账明细表"); + + FieldDataVo isbearidVo = formDataVo.getFieldData("支付公司是否成本承担公司"); + String isbearid = ""; + if(isbearidVo!=null){ + isbearid = isbearidVo.getStringValue(); + } + String isbear = ""; + if("".equals(isbearid)){ + isbear = "否"; + }else { + isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); + } + for (FormDataVo subFormDataVo : subFormMap) { + FieldDataVo numVo = subFormDataVo.getFieldData("分账原币金额"); + String num = ""; + if(numVo!=null){ + num = numVo.getStringValue(); + } + if("0".equals(num)) { + FieldDataVo fieldDataVo = subFormDataVo.getFieldData("分账收款人编码"); + log.info("分账原币金额为0,跳过处理:"+ fieldDataVo.getStringValue()); + continue; + } + JSONObject subjson = new JSONObject(); + FieldDataVo psndoccodeVo = subFormDataVo.getFieldData("分账收款人编码"); + String psndoccode = ""; + if(psndoccodeVo!=null){ + psndoccode = psndoccodeVo.getStringValue(); + } + subjson.put("psndoccode", psndoccode); + FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); + String businessdate = ""; + if(businessdateVo!=null){ + businessdate = businessdateVo.getStringValue(); + } + subjson.put("businessdate", businessdate); + JSONArray data = new JSONArray(); + JSONObject jsondata = new JSONObject(); + FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); + String scomment = ""; + if(scommentVo!=null){ + scomment = scommentVo.getStringValue(); + } + jsondata.put("scomment", scomment); + FieldDataVo field0120Vo = subFormDataVo.getFieldData("分账税率"); + String field0120 = ""; + if(field0120Vo!=null){ + field0120 = field0120Vo.getStringValue(); + } + jsondata.put("field0120", field0120); + FieldDataVo field0121Vo = subFormDataVo.getFieldData("分账税额"); + String field0121 = ""; + if(field0121Vo!=null){ + field0121 = field0121Vo.getStringValue(); + } + jsondata.put("field0121", field0121); + FieldDataVo field0119Vo = subFormDataVo.getFieldData("分账行无税金额"); + String field0119 = ""; + if(field0119Vo!=null){ + field0119 = field0119Vo.getStringValue(); + } + jsondata.put("field0119", field0119); + FieldDataVo moneyVo = subFormDataVo.getFieldData("分账原币金额"); + String money = ""; + if(moneyVo!=null){ + money = moneyVo.getStringValue(); + } + jsondata.put("money", money); + FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); + String jsfs = ""; + if(jsfsVo!=null){ + jsfs = jsfsVo.getStringValue(); + } + jsondata.put("jsfs",jsfs); + FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); + String kmdl = ""; + if(kmdlVo!=null){ + kmdl = kmdlVo.getStringValue(); + } + jsondata.put("kmdl", kmdl); + FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); + String szxm = ""; + if(szxmVo!=null){ + szxm = szxmVo.getStringValue(); + } + jsondata.put("szxm", szxm); + jsondata.put("fkyw", "OA"); + data.add(jsondata); + subjson.put("data", data); + if("是".equals(isbear)) { + FieldDataVo orgcodeVo = subFormDataVo.getFieldData("分账组织编码"); + String orgcode = ""; + if(orgcodeVo!=null){ + orgcode = orgcodeVo.getStringValue(); + } + subjson.put("orgcode",orgcode); + FieldDataVo fkbankcodeVo = subFormDataVo.getFieldData("分账付款银行账号"); + String fkbankcode = ""; + if(fkbankcodeVo!=null){ + fkbankcode = fkbankcodeVo.getStringValue(); + } + subjson.put("fkbankcode", fkbankcode); + }else { + FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); + String orgcode = ""; + if(orgcodeVo!=null){ + orgcode = orgcodeVo.getStringValue(); + } + subjson.put("orgcode", orgcode); + FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); + String fkbankcode = ""; + if(fkbankcodeVo!=null){ + fkbankcode = fkbankcodeVo.getStringValue(); + } + subjson.put("fkbankcode", fkbankcode); + } + FieldDataVo skbankcodeVo = subFormDataVo.getFieldData("分账收款银行账号"); + String skbankcode = ""; + if(skbankcodeVo!=null){ + skbankcode = skbankcodeVo.getStringValue(); + } + subjson.put("skbankcode", skbankcode); + subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); + FieldDataVo oabillcodeVo = subFormDataVo.getFieldData("分账单据流水号"); + String oabillcode = ""; + if(oabillcodeVo!=null){ + oabillcode = oabillcodeVo.getStringValue(); + } + subjson.put("oabillcode", oabillcode); + FieldDataVo field0006Vo = formDataVo.getFieldData("分账单据流水号"); + String field0006 = ""; + if(field0006Vo!=null){ + field0006 = field0006Vo.getStringValue(); + } + subjson.put("field0006", field0006); + FieldDataVo suppliercodeVo = subFormDataVo.getFieldData("分账单据流水号"); + String suppliercode = ""; + if(suppliercodeVo!=null){ + suppliercode = suppliercodeVo.getStringValue(); + } + subjson.put("suppliercode", suppliercode); + FieldDataVo ytVo = formDataVo.getFieldData("分账单据流水号"); + String yt = ""; + if(ytVo!=null){ + yt = ytVo.getStringValue(); + } + subjson.put("yt", yt); + FieldDataVo busitypecodeIdVo = formDataVo.getFieldData("业务流程"); + String busitypecodeId = ""; + if(ytVo!=null){ + busitypecodeId = busitypecodeIdVo.getDbValue().toString(); + } + String busitypecodeCode = getEnumManagerNew().getEnumItem(Long.parseLong(busitypecodeId)).getEnumItemCode(); + String busitypecode = busitypecodeCode.substring(5); + subjson.put("busitypecode", busitypecode); + FieldDataVo wldxidVo = subFormDataVo.getFieldData("往来对象"); + String wldxid = ""; + if(wldxidVo!=null) { + wldxid = wldxidVo.getDbValue().toString(); + } + String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); + String wldxvalue = wldxCode.substring(5); + subjson.put("wldx", wldxvalue); + subjson.put("fklx", "D3"); + jsonArray.add(subjson); + } + jsonObject.put("data", jsonArray); + return jsonObject; + } + + + + /** + * 社保分账参数封装 + * @param formDataVo + * @param summaryId + * @return + * @throws IOException + */ + public JSONObject getSheBaoFenZhangParam( FormDataVo formDataVo,String summaryId) throws IOException, NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + Map> subFormMaps = formDataVo.getSubFormMap(); + List subFormMap = subFormMaps.get("分账明细表"); + List istrue = new ArrayList(); + FieldDataVo isbearidVo = formDataVo.getFieldData("支付公司是否成本承担公司"); + String isbearid = ""; + if(isbearidVo!=null){ + isbearid = isbearidVo.getDbValue().toString(); + } + String isbear = ""; + if("".equals(isbearid)){ + isbear = "否"; + }else { + isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); + } + FieldDataVo isunitidVo = formDataVo.getFieldData("是否同一收款单位"); + String isunitid = ""; + if(isunitidVo!=null){ + isunitid = isunitidVo.getDbValue().toString(); + } + String isunit = ""; + if("".equals(isunitid)){ + isunit = "是"; + }else { + isunit = getEnumManagerNew().getEnumItem(Long.parseLong(isunitid)).getLabel(); + } + if("是".equals(isunit) && "否".equals(isbear)) { + JSONObject subjson = new JSONObject(); + FieldDataVo psndoccodeVo = formDataVo.getFieldData("收款单位编码"); + String psndoccode = ""; + if(psndoccodeVo!=null){ + psndoccode = psndoccodeVo.getStringValue(); + } + subjson.put("psndoccode", psndoccode); + FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); + String businessdate = ""; + if(businessdateVo!=null){ + businessdate = businessdateVo.getStringValue(); + } + subjson.put("businessdate", businessdate); + JSONArray data = new JSONArray(); + JSONObject jsondata = new JSONObject(); + FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); + String scomment = ""; + if(scommentVo!=null){ + scomment = scommentVo.getStringValue(); + } + jsondata.put("scomment", scomment); + jsondata.put("field0120", "0"); + jsondata.put("field0121", "0"); + FieldDataVo moneyVo = formDataVo.getFieldData("合计分账支付"); + String money = ""; + if(moneyVo!=null){ + money = moneyVo.getStringValue(); + } + jsondata.put("money", money); + FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); + String jsfs = ""; + if(jsfsVo!=null){ + jsfs = jsfsVo.getStringValue(); + } + jsondata.put("jsfs", jsfs); + FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); + String kmdl = ""; + if(kmdlVo!=null){ + kmdl = kmdlVo.getStringValue(); + } + jsondata.put("kmdl", kmdl); + FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); + String szxm = ""; + if(szxmVo!=null){ + szxm = szxmVo.getStringValue(); + } + jsondata.put("szxm", szxm); + jsondata.put("field0119","0"); + jsondata.put("fkyw", "OA"); + data.add(jsondata); + subjson.put("data", data); + jsondata.put("szxm", szxm); + FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); + String orgcode = ""; + if(orgcodeVo!=null){ + orgcode = orgcodeVo.getStringValue(); + } + subjson.put("orgcode", orgcode); + FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); + String fkbankcode = ""; + if(fkbankcodeVo!=null){ + fkbankcode = fkbankcodeVo.getStringValue(); + } + subjson.put("fkbankcode", fkbankcode); + FieldDataVo skbankcodeVo = formDataVo.getFieldData("收款银行账号"); + String skbankcode = ""; + if(skbankcodeVo!=null){ + skbankcode = skbankcodeVo.getStringValue(); + } + subjson.put("skbankcode", skbankcode); + subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); + FieldDataVo oabillcodeVo = formDataVo.getFieldData("单据流水号"); + String oabillcode = ""; + if(oabillcodeVo!=null){ + oabillcode = oabillcodeVo.getStringValue(); + } + subjson.put("oabillcode",oabillcode); + FieldDataVo field0006Vo = formDataVo.getFieldData("原始单据数"); + String field0006 = ""; + if(field0006Vo!=null){ + field0006 = field0006Vo.getStringValue(); + } + subjson.put("field0006", field0006); + FieldDataVo suppliercodeVo = formDataVo.getFieldData("收款单位编码"); + String suppliercode = ""; + if(suppliercodeVo!=null){ + suppliercode = suppliercodeVo.getStringValue(); + } + subjson.put("suppliercode", suppliercode); + FieldDataVo ytVo = formDataVo.getFieldData("摘要内容"); + String yt = ""; + if(ytVo!=null){ + yt = ytVo.getStringValue(); + } + subjson.put("yt", yt); + + FieldDataVo wldxidVo = formDataVo.getFieldData("表头往来对象"); + String wldxid = ""; + if(wldxidVo!=null){ + wldxid = wldxidVo.getDbValue().toString(); + } + String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); + String wldxvalue = wldxCode.substring(5); + subjson.put("wldx", wldxvalue); + subjson.put("fklx", "D3"); + jsonArray.add(subjson); + }else { + for (FormDataVo subFormDataVo : subFormMap) { + FieldDataVo bipNoVo = subFormDataVo.getFieldData("BIP单据号"); + if(bipNoVo!=null){ + istrue.add(bipNoVo.getStringValue()); + } + JSONObject subjson = new JSONObject(); + if("否".equals(isunit)) { + FieldDataVo psndoccodeVo = subFormDataVo.getFieldData("分账收款人编码"); + String psndoccode = ""; + if(psndoccodeVo!=null){ + psndoccode = psndoccodeVo.getStringValue(); + } + subjson.put("psndoccode", psndoccode); + subjson.put("suppliercode", psndoccode); + FieldDataVo skbankcodeVo = subFormDataVo.getFieldData("分账收款银行账号"); + String skbankcode = ""; + if(skbankcodeVo!=null){ + skbankcode = skbankcodeVo.getStringValue(); + } + subjson.put("skbankcode", skbankcode); + + }else { + FieldDataVo psndoccodeVo = formDataVo.getFieldData("收款单位编码"); + String psndoccode = ""; + if(psndoccodeVo!=null){ + psndoccode = psndoccodeVo.getStringValue(); + } + subjson.put("psndoccode", psndoccode); + subjson.put("suppliercode", psndoccode); + FieldDataVo skbankcodeVo = formDataVo.getFieldData("收款银行账号"); + String skbankcode = ""; + if(skbankcodeVo!=null){ + skbankcode = skbankcodeVo.getStringValue(); + } + subjson.put("skbankcode",skbankcode); + + } + FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); + String businessdate = ""; + if(businessdateVo!=null){ + businessdate = businessdateVo.getStringValue(); + } + subjson.put("businessdate", businessdate); + JSONArray data = new JSONArray(); + JSONObject jsondata = new JSONObject(); + FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); + String scomment = ""; + if(scommentVo!=null){ + scomment = scommentVo.getStringValue(); + } + jsondata.put("scomment", scomment); + FieldDataVo field0120Vo = subFormDataVo.getFieldData("分账税率"); + String field0120 = ""; + if(field0120Vo!=null){ + field0120 = field0120Vo.getStringValue(); + } + jsondata.put("field0120",field0120); + FieldDataVo field0121Vo = subFormDataVo.getFieldData("分账税额"); + String field0121 = ""; + if(field0121Vo!=null){ + field0121 = field0121Vo.getStringValue(); + } + jsondata.put("field0121",field0121); + FieldDataVo field0119Vo = subFormDataVo.getFieldData("分账行无税金额"); + String field0119 = ""; + if(field0119Vo!=null){ + field0119 = field0119Vo.getStringValue(); + } + jsondata.put("field0119", field0119); + FieldDataVo moneyVo = subFormDataVo.getFieldData("分账原币金额"); + String money = ""; + if(moneyVo!=null){ + money = moneyVo.getStringValue(); + } + jsondata.put("money", money); + FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); + String jsfs = ""; + if(jsfsVo!=null){ + jsfs = jsfsVo.getStringValue(); + } + jsondata.put("jsfs", jsfs); + FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); + String kmdl = ""; + if(kmdlVo!=null){ + kmdl = kmdlVo.getStringValue(); + } + jsondata.put("kmdl", kmdl); + FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); + String szxm = ""; + if(szxmVo!=null){ + szxm = szxmVo.getStringValue(); + } + jsondata.put("szxm", szxm); + jsondata.put("fkyw", "OA"); + data.add(jsondata); + subjson.put("data", data); + if("是".equals(isbear)) { + FieldDataVo orgcodeVo = subFormDataVo.getFieldData("分账组织编码"); + String orgcode = ""; + if(orgcodeVo!=null){ + orgcode = orgcodeVo.getStringValue(); + } + subjson.put("orgcode", orgcode); + FieldDataVo fkbankcodeVo = subFormDataVo.getFieldData("分账付款银行账号"); + String fkbankcode = ""; + if(fkbankcodeVo!=null){ + fkbankcode = fkbankcodeVo.getStringValue(); + } + subjson.put("fkbankcode", fkbankcode); + } + else { + FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); + String orgcode = ""; + if(orgcodeVo!=null){ + orgcode = orgcodeVo.getStringValue(); + } + subjson.put("orgcode", orgcode); + FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); + String fkbankcode = ""; + if(fkbankcodeVo!=null){ + fkbankcode = fkbankcodeVo.getStringValue(); + } + subjson.put("fkbankcode", fkbankcode); + } + subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); + FieldDataVo oabillcodeVo = subFormDataVo.getFieldData("分账单据流水号"); + String oabillcode = ""; + if(oabillcodeVo!=null){ + oabillcode = oabillcodeVo.getStringValue(); + } + subjson.put("oabillcode", oabillcode); + FieldDataVo field0006Vo = formDataVo.getFieldData("原始单据数"); + String field0006 = ""; + if(field0006Vo!=null){ + field0006 = field0006Vo.getStringValue(); + } + subjson.put("field0006", field0006); + FieldDataVo ytVo = formDataVo.getFieldData("摘要内容"); + String yt = ""; + if(ytVo!=null){ + yt = ytVo.getStringValue(); + } + subjson.put("yt", yt); + //业务流程 + String wldxid = ""; + FieldDataVo wldxidVo = subFormDataVo.getFieldData("往来对象"); + if(wldxidVo!=null){ + wldxid = wldxidVo.getDbValue().toString(); + } + String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); + String wldxvalue = wldxCode.substring(5); + subjson.put("wldx", wldxvalue); + subjson.put("fklx", "D3"); + jsonArray.add(subjson); + } + } + + jsonObject.put("data", jsonArray); + if(istrue.size()==subFormMap.size()) { + jsonObject = new JSONObject(); + } + return jsonObject; + } + + /** + * 薪酬分账终止参数 + * @param formDataVo + * @return + * @throws IOException + */ + public JSONObject getXinChouFenZhangStopParam(FormDataVo formDataVo) throws NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); +// System.out.println("设置终止参数"); + FieldDataVo billcodeVo = formDataVo.getFieldData("NC单据编号"); + String billcode = ""; + if(billcodeVo!=null){ + billcode = billcodeVo.getStringValue(); + } +// String billcode = CAP4FormKit.getFieldStrValue(master, "NC单据编号"); + jsonObject.put("billcode", billcode); + jsonObject.put("status", "0"); + log.info("终止参数:"+jsonObject); + return jsonObject; + } + + /** + * 社保分账终止参数 + * @param formDataVo + * @return + * @throws IOException + */ + public JSONObject getSheBaoFenZhangStopParam( FormDataVo formDataVo) throws NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); + FieldDataVo billcodeVo = formDataVo.getFieldData("BIP单据编号"); + String billcode = ""; + if(billcodeVo!=null){ + billcode = billcodeVo.getStringValue(); + } + jsonObject.put("compose_pk", billcode); + jsonObject.put("status", 1); + return jsonObject; + } + + /** + * 薪酬分账结束参数 + * @param formDataVo + * @return + * @throws IOException + */ + public JSONObject getXinChouFenZhangEndParam(FormDataVo formDataVo) throws NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); + FieldDataVo billcodeVo = formDataVo.getFieldData("NC单据编号"); + String billcode = ""; + if(billcodeVo!=null){ + billcode = billcodeVo.getStringValue(); + } + jsonObject.put("billcode", billcode); + jsonObject.put("status", "1"); + log.info("流程结束参数:"+jsonObject); + return jsonObject; + } + + + /** + * 社保分账结束参数 + * @param formDataVo + * @return + * @throws IOException + */ + public JSONObject getSheBaoFenZhangEndParam(FormDataVo formDataVo) throws NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); + FieldDataVo billcodeVo = formDataVo.getFieldData("BIP单据编号"); + String billcode = ""; + if(billcodeVo!=null){ + billcode = billcodeVo.getStringValue(); + } + jsonObject.put("compose_pk", billcode); + jsonObject.put("status", 2); + log.info("流程结束参数:"+jsonObject); + return jsonObject; + } + + + /** + * 通用收款参数 + * @param formDataVo + * @return + * @throws IOException + */ + public JSONObject getTongyongshoukuanParam(FormDataVo formDataVo,String summaryId) throws NoSuchFieldException { + JSONObject jsonObject = new JSONObject(); +// jsonObject.put("oabillcode", CAP4FormKit.getFieldStrValue(master, "单据流水号")); + jsonObject.put("oabillcode", formDataVo.getFieldData("单据流水号")!=null?formDataVo.getFieldData("单据流水号").getStringValue():""); + jsonObject.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); +// jsonObject.put("financialOrg", CAP4FormKit.getFieldStrValue(master, "BIP公司编号")); + jsonObject.put("financialOrg", formDataVo.getFieldData("BIP公司编号")!=null?formDataVo.getFieldData("BIP公司编号").getStringValue():""); +// jsonObject.put("billDate", CAP4FormKit.getFieldStrValue(master, "单据日期")); + jsonObject.put("billDate", formDataVo.getFieldData("单据日期")!=null?formDataVo.getFieldData("单据日期").getStringValue():""); +// jsonObject.put("customer", CAP4FormKit.getFieldStrValue(master, "客商编号")); + jsonObject.put("customer", formDataVo.getFieldData("客商编号")!=null?formDataVo.getFieldData("客商编号").getStringValue():""); +// jsonObject.put("paymentAccount", CAP4FormKit.getFieldStrValue(master, "付款银行账号")); + jsonObject.put("paymentAccount", formDataVo.getFieldData("付款银行账号")!=null?formDataVo.getFieldData("付款银行账号").getStringValue():""); +// jsonObject.put("settlementMethod", CAP4FormKit.getFieldStrValue(master, "结算方式编码")); + jsonObject.put("settlementMethod", formDataVo.getFieldData("结算方式编码")!=null?formDataVo.getFieldData("结算方式编码").getStringValue():""); +// jsonObject.put("recAccount", CAP4FormKit.getFieldStrValue(master, "收款银行账号")); + jsonObject.put("recAccount", formDataVo.getFieldData("收款银行账号")!=null?formDataVo.getFieldData("收款银行账号").getStringValue():""); +// jsonObject.put("psndoc", CAP4FormKit.getFieldStrValue(master, "业务员编码")); + jsonObject.put("psndoc", formDataVo.getFieldData("业务员编码")!=null?formDataVo.getFieldData("业务员编码").getStringValue():""); +// String sklxId = CAP4FormKit.getFieldStrValue(master, "收款类型"); + String sklxId = formDataVo.getFieldData("收款类型")!=null?formDataVo.getFieldData("收款类型").getDbValue()+"":""; + String sklxCode = getEnumManagerNew().getEnumItem(Long.parseLong(sklxId)).getEnumItemCode(); + jsonObject.put("sklx",sklxCode); +// jsonObject.put("def29", CAP4FormKit.getFieldStrValue(master, "摘要")); + jsonObject.put("def29", formDataVo.getFieldData("摘要")!=null?formDataVo.getFieldData("摘要").getStringValue():""); +// jsonObject.put("prepay", CAP4FormKit.getFieldStrValue(master, "收款性质")); + jsonObject.put("prepay", formDataVo.getFieldData("收款性质")!=null?formDataVo.getFieldData("收款性质").getStringValue():""); + + //该超级节点存在多流程共用情况,通过不同变量,兼容不同表单的数据域 + String subName =formDataVo.getFieldData("明细表名称")!=null?formDataVo.getFieldData("明细表名称").getStringValue():""; +// StringUtils.isEmpty(formDataVo.getFieldData("明细表名称")!=null?formDataVo.getFieldData("明细表名称").getStringValue():"")?"通用收费明细":CAP4FormKit.getFieldStrValue(master, "明细表名称"); + subName = StringUtils.isEmpty(subName)?"通用收费明细":subName; + List subFormDataVos = formDataVo.getSubFormMap().get(subName); +// List formDataSubBeans = CAP4FormKit.getSubBeans(master,subName); + JSONArray jsonArray = new JSONArray(); + for (FormDataVo subFormDataVo : subFormDataVos) { + JSONObject items = new JSONObject(); + //该超级节点存在多流程共用情况,通过不同变量,兼容不同表单的数据域 + String skywName =formDataVo.getFieldData("明细表名称")!=null?formDataVo.getFieldData("明细表名称").getStringValue():""; +// StringUtils.isEmpty(CAP4FormKit.getFieldStrValue(master, "收款业务类型名称"))?"收款业务类型编码":CAP4FormKit.getFieldStrValue(master, "收款业务类型名称"); + skywName = StringUtils.isEmpty(skywName)?"收款业务类型编码":skywName; + +// items.put("skyw", CAP4FormKit.getSubFieldValue(formDataSubBean, skywName)); + items.put("skyw", subFormDataVo.getFieldData(skywName)!=null?subFormDataVo.getFieldData(skywName).getStringValue():""); +// items.put("money", CAP4FormKit.getSubFieldValue(formDataSubBean, "本次收款金额")); + items.put("money", subFormDataVo.getFieldData("本次收款金额")!=null?subFormDataVo.getFieldData("本次收款金额").getStringValue():""); +// items.put("field0120", CAP4FormKit.getSubFieldValue(formDataSubBean, "税率")); + items.put("field0120", subFormDataVo.getFieldData("税率")!=null?subFormDataVo.getFieldData("税率").getStringValue():""); +// items.put("field0121", CAP4FormKit.getSubFieldValue(formDataSubBean, "税额")); + items.put("field0121", subFormDataVo.getFieldData("税额")!=null?subFormDataVo.getFieldData("税额").getStringValue():""); +// items.put("field0119", CAP4FormKit.getSubFieldValue(formDataSubBean, "无税金额")); + items.put("field0119", subFormDataVo.getFieldData("无税金额")!=null?subFormDataVo.getFieldData("无税金额").getStringValue():""); +// String subjectCode = CAP4FormKit.getSubFieldValue(formDataSubBean, "科目大类编码").toString(); + String subjectCode =subFormDataVo.getFieldData("科目大类编码")!=null?subFormDataVo.getFieldData("科目大类编码").getStringValue():""; + subjectCode = subjectCode.substring(5); + items.put("subjectCode", subjectCode);//科目大类01-应收款项,02-预收款项 +// items.put("scomment", CAP4FormKit.getSubFieldValue(formDataSubBean, "备注")); + items.put("scomment", subFormDataVo.getFieldData("备注")!=null?subFormDataVo.getFieldData("备注").getStringValue():""); +// items.put("szxm", CAP4FormKit.getSubFieldValue(formDataSubBean, "收支项目编码")); + items.put("szxm",subFormDataVo.getFieldData("收支项目编码")!=null?subFormDataVo.getFieldData("收支项目编码").getStringValue():""); + jsonArray.add(items); + } + jsonObject.put("items", jsonArray); +// System.out.println("通用收款参数:"+jsonObject); +// String str = SystemEnvironment.getApplicationFolder(); +// String date = DateUtil.format(new Date(), "yyyyMMddHHmmss"); +// FileUtils.writeStringToFile(new File(str+"/bipjson/"+date.substring(0,4)+"/"+date.substring(5,6)+"/"+date.substring(7,8)+"/TYSK_" + date + ".json"), jsonObject.toString(), "UTF-8"); + return jsonObject; + } +} diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ParamUtil.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ParamUtil.java index 46f900a..20dadb0 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ParamUtil.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ParamUtil.java @@ -5,13 +5,11 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Map; -import cn.hutool.log.Log; -import com.seeyon.apps.ext.workflow.vo.FieldDataVo; -import com.seeyon.apps.ext.workflow.vo.FormDataVo; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -24,190 +22,84 @@ import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; import com.seeyon.v3x.dee.util.DateUtil; public class ParamUtil { - - private static final Log log = Log.get(ParamUtil.class); + + private static final Log log = LogFactory.getLog(ParamUtil.class); private EnumManager enumManagerNew; - + public void setEnumManagerNew(EnumManager enumManagerNew) { this.enumManagerNew = enumManagerNew; } - + public EnumManager getEnumManagerNew() { if (enumManagerNew == null) { enumManagerNew = (EnumManager) AppContext.getBean("enumManagerNew"); } return enumManagerNew; } - + /** * 薪酬分账参数封装 - * @param formDataVo + * @param master * @param summaryId * @return * @throws IOException */ - public JSONObject getXinChouFenZhangParam(FormDataVo formDataVo,String summaryId) throws NoSuchFieldException { + public JSONObject getXinChouFenZhangParam(FormDataMasterBean master,String summaryId) throws IOException{ JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); - Map> subFormMaps = formDataVo.getSubFormMap(); - List subFormMap = subFormMaps.get("分账明细表"); + List formDataSubBeans = CAP4FormKit.getSubBeans(master,"分账明细表"); List istrue = new ArrayList(); - FieldDataVo isbearidVo = formDataVo.getFieldData("支付公司是否成本承担公司"); - String isbearid = ""; - if(isbearidVo!=null){ - isbearid = isbearidVo.getDbValue().toString(); - } - + String isbearid = CAP4FormKit.getFieldStrValue(master, "支付公司是否成本承担公司"); String isbear = ""; if("".equals(isbearid)){ isbear = "否"; }else { isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); } - for (FormDataVo subFormDataVo : subFormMap) { - FieldDataVo bipNoVo = subFormDataVo.getFieldData("BIP单据号"); - String bipNo = ""; - if(bipNoVo!=null){ - bipNo = bipNoVo.getStringValue(); - istrue.add(bipNo); + for (FormDataSubBean formDataSubBean : formDataSubBeans) { + if(CAP4FormKit.getSubFieldValue(formDataSubBean, "BIP单据号")!=null) { + istrue.add(CAP4FormKit.getSubFieldValue(formDataSubBean, "BIP单据号")); } JSONObject subjson = new JSONObject(); - FieldDataVo psndoccodeVo = subFormDataVo.getFieldData("分账收款人编码"); - String psndoccode = ""; - if(psndoccodeVo!=null){ - psndoccode = psndoccodeVo.getStringValue(); - } - subjson.put("psndoccode", psndoccode); - FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); - String businessdate = ""; - if(businessdateVo!=null){ - businessdate = businessdateVo.getStringValue(); - } - subjson.put("businessdate", businessdate); + subjson.put("psndoccode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款人编码")); + subjson.put("businessdate", CAP4FormKit.getFieldStrValue(master, "单据日期")); JSONArray data = new JSONArray(); JSONObject jsondata = new JSONObject(); - FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); - String scomment = ""; - if(scommentVo!=null){ - scomment = scommentVo.getStringValue(); - } - jsondata.put("scomment", scomment); - FieldDataVo field0120Vo = subFormDataVo.getFieldData("摘要内容"); - String field0120 = ""; - if(field0120Vo!=null){ - field0120 = field0120Vo.getStringValue(); - } - jsondata.put("field0120", field0120); - FieldDataVo field0121Vo = subFormDataVo.getFieldData("分账税额"); - String field0121 = ""; - if(field0121Vo!=null){ - field0121 = field0121Vo.getStringValue(); - } - jsondata.put("field0121", field0121); - FieldDataVo field0119Vo = subFormDataVo.getFieldData("分账行无税金额"); - String field0119 = ""; - if(field0119Vo!=null){ - field0119 = field0119Vo.getStringValue(); - } - jsondata.put("field0119", field0119); - FieldDataVo moneyVo = subFormDataVo.getFieldData("分账原币金额"); - String money = ""; - if(moneyVo!=null){ - money = moneyVo.getStringValue(); - } - jsondata.put("money", money); - FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); - String jsfs = ""; - if(jsfsVo!=null){ - jsfs = jsfsVo.getStringValue(); - } - jsondata.put("jsfs", jsfs); - FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); - String kmdl = ""; - if(kmdlVo!=null){ - kmdl = kmdlVo.getStringValue(); - } - jsondata.put("kmdl", kmdl); - FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); - String szxm = ""; - if(szxmVo!=null){ - szxm = szxmVo.getStringValue(); - } - jsondata.put("szxm",szxm); + jsondata.put("scomment", CAP4FormKit.getFieldStrValue(master, "摘要内容")); + jsondata.put("field0120", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税率")); + jsondata.put("field0121", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税额")); + jsondata.put("field0119", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账行无税金额")); + jsondata.put("money", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账原币金额")); + jsondata.put("jsfs", CAP4FormKit.getFieldStrValue(master, "结算方式编号")); + jsondata.put("kmdl", CAP4FormKit.getFieldStrValue(master, "科目大类编号")); + jsondata.put("szxm", CAP4FormKit.getFieldStrValue(master, "收支项目编号")); +// String fkyw = CAP4FormKit.getFieldStrValue(master, "可选转账用途"); +// String fkywvalue = enumManagerNew.getEnumItem(Long.parseLong(fkyw)).getValue(); +// jsondata.put("fkyw", fkywvalue); jsondata.put("fkyw", "OA"); data.add(jsondata); subjson.put("data", data); if("是".equals(isbear)) { - FieldDataVo orgcodeVo = subFormDataVo.getFieldData("分账组织编码"); - String orgcode = ""; - if(orgcodeVo!=null){ - orgcode = orgcodeVo.getStringValue(); - } - subjson.put("orgcode",orgcode); - FieldDataVo fkbankcodeVo = subFormDataVo.getFieldData("分账付款银行账号"); - String fkbankcode = ""; - if(fkbankcodeVo!=null){ - fkbankcode = fkbankcodeVo.getStringValue(); - } - subjson.put("fkbankcode", fkbankcode); + subjson.put("orgcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账组织编码")); + subjson.put("fkbankcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账付款银行账号")); }else { - FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); - String orgcode = ""; - if(orgcodeVo!=null){ - orgcode = orgcodeVo.getStringValue(); - } - subjson.put("orgcode", orgcode); - FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); - String fkbankcode = ""; - if(fkbankcodeVo!=null){ - fkbankcode = fkbankcodeVo.getStringValue(); - } - subjson.put("fkbankcode",fkbankcode); + subjson.put("orgcode", CAP4FormKit.getFieldStrValue(master, "主表支付公司编码")); + subjson.put("fkbankcode", CAP4FormKit.getFieldStrValue(master, "付款银行账号")); } - FieldDataVo skbankcodeVo = subFormDataVo.getFieldData("分账收款银行账号"); - String skbankcode = ""; - if(skbankcodeVo!=null){ - skbankcode = skbankcodeVo.getStringValue(); - } - subjson.put("skbankcode", skbankcode); + subjson.put("skbankcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款银行账号")); subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); - FieldDataVo oabillcodeVo = subFormDataVo.getFieldData("分账单据流水号"); - String oabillcode = ""; - if(oabillcodeVo!=null){ - oabillcode = oabillcodeVo.getStringValue(); - } - subjson.put("oabillcode", oabillcode); - FieldDataVo field0006Vo = formDataVo.getFieldData("原始单据数"); - String field0006 = ""; - if(field0006Vo!=null){ - field0006 = field0006Vo.getStringValue(); - } - subjson.put("field0006", field0006); - FieldDataVo suppliercodeVo = subFormDataVo.getFieldData("分账收款人编码"); - String suppliercode = ""; - if(suppliercodeVo!=null){ - suppliercode = suppliercodeVo.getStringValue(); - } - subjson.put("suppliercode", suppliercode); - FieldDataVo ytVo = formDataVo.getFieldData("摘要内容"); - String yt = ""; - if(ytVo!=null){ - yt = ytVo.getStringValue(); - } - subjson.put("yt", yt); - FieldDataVo busitypecodeIdVo = formDataVo.getFieldData("业务流程"); - String busitypecodeId = ""; - if(busitypecodeIdVo!=null){ - busitypecodeId = busitypecodeIdVo.getDbValue().toString(); - } + subjson.put("oabillcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账单据流水号")); + subjson.put("field0006", CAP4FormKit.getFieldStrValue(master, "原始单据数")); + subjson.put("suppliercode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款人编码")); + subjson.put("yt", CAP4FormKit.getFieldStrValue(master, "摘要内容")); + String busitypecodeId = CAP4FormKit.getFieldStrValue(master, "业务流程"); String busitypecodeCode = getEnumManagerNew().getEnumItem(Long.parseLong(busitypecodeId)).getEnumItemCode(); String busitypecode = busitypecodeCode.substring(5); subjson.put("busitypecode", busitypecode); - FieldDataVo wldxidVo = subFormDataVo.getFieldData("业务流程"); String wldxid = ""; - if(wldxidVo!=null){ - wldxid = wldxidVo.getDbValue().toString(); + if(CAP4FormKit.getSubFieldValue(formDataSubBean, "往来对象")!=null) { + wldxid = CAP4FormKit.getSubFieldValue(formDataSubBean, "往来对象").toString(); } String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); String wldxvalue = wldxCode.substring(5); @@ -216,226 +108,123 @@ public class ParamUtil { jsonArray.add(subjson); } jsonObject.put("data", jsonArray); - System.out.println(istrue.size()==subFormMap.size()); - if(istrue.size()==subFormMap.size()) { + System.out.println(istrue.size()==formDataSubBeans.size()); + if(istrue.size()==formDataSubBeans.size()) { jsonObject = new JSONObject(); } - return jsonObject; - } - - /** - * 通用分账参数封装-新 - * @param formDataVo - * @param summaryId - * @return - * @throws IOException - */ - public JSONObject getTongYongFenZhangParam(FormDataVo formDataVo,String summaryId) throws NoSuchFieldException { - JSONObject jsonObject = new JSONObject(); - JSONArray jsonArray = new JSONArray(); - Map> subFormMaps = formDataVo.getSubFormMap(); - List subFormMap = subFormMaps.get("分账明细表"); - - FieldDataVo isbearidVo = formDataVo.getFieldData("支付公司是否成本承担公司"); - String isbearid = ""; - if(isbearidVo!=null){ - isbearid = isbearidVo.getStringValue(); - } - String isbear = ""; - if("".equals(isbearid)){ - isbear = "否"; - }else { - isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); - } - for (FormDataVo subFormDataVo : subFormMap) { - FieldDataVo numVo = subFormDataVo.getFieldData("分账原币金额"); - String num = ""; - if(numVo!=null){ - num = numVo.getStringValue(); - } - if("0".equals(num)) { - FieldDataVo fieldDataVo = subFormDataVo.getFieldData("分账收款人编码"); - log.info("分账原币金额为0,跳过处理:"+ fieldDataVo.getStringValue()); - continue; - } - JSONObject subjson = new JSONObject(); - FieldDataVo psndoccodeVo = subFormDataVo.getFieldData("分账收款人编码"); - String psndoccode = ""; - if(psndoccodeVo!=null){ - psndoccode = psndoccodeVo.getStringValue(); - } - subjson.put("psndoccode", psndoccode); - FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); - String businessdate = ""; - if(businessdateVo!=null){ - businessdate = businessdateVo.getStringValue(); - } - subjson.put("businessdate", businessdate); - JSONArray data = new JSONArray(); - JSONObject jsondata = new JSONObject(); - FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); - String scomment = ""; - if(scommentVo!=null){ - scomment = scommentVo.getStringValue(); - } - jsondata.put("scomment", scomment); - FieldDataVo field0120Vo = subFormDataVo.getFieldData("分账税率"); - String field0120 = ""; - if(field0120Vo!=null){ - field0120 = field0120Vo.getStringValue(); - } - jsondata.put("field0120", field0120); - FieldDataVo field0121Vo = subFormDataVo.getFieldData("分账税额"); - String field0121 = ""; - if(field0121Vo!=null){ - field0121 = field0121Vo.getStringValue(); - } - jsondata.put("field0121", field0121); - FieldDataVo field0119Vo = subFormDataVo.getFieldData("分账行无税金额"); - String field0119 = ""; - if(field0119Vo!=null){ - field0119 = field0119Vo.getStringValue(); - } - jsondata.put("field0119", field0119); - FieldDataVo moneyVo = subFormDataVo.getFieldData("分账原币金额"); - String money = ""; - if(moneyVo!=null){ - money = moneyVo.getStringValue(); - } - jsondata.put("money", money); - FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); - String jsfs = ""; - if(jsfsVo!=null){ - jsfs = jsfsVo.getStringValue(); - } - jsondata.put("jsfs",jsfs); - FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); - String kmdl = ""; - if(kmdlVo!=null){ - kmdl = kmdlVo.getStringValue(); - } - jsondata.put("kmdl", kmdl); - FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); - String szxm = ""; - if(szxmVo!=null){ - szxm = szxmVo.getStringValue(); - } - jsondata.put("szxm", szxm); - jsondata.put("fkyw", "OA"); - data.add(jsondata); - subjson.put("data", data); - if("是".equals(isbear)) { - FieldDataVo orgcodeVo = subFormDataVo.getFieldData("分账组织编码"); - String orgcode = ""; - if(orgcodeVo!=null){ - orgcode = orgcodeVo.getStringValue(); - } - subjson.put("orgcode",orgcode); - FieldDataVo fkbankcodeVo = subFormDataVo.getFieldData("分账付款银行账号"); - String fkbankcode = ""; - if(fkbankcodeVo!=null){ - fkbankcode = fkbankcodeVo.getStringValue(); - } - subjson.put("fkbankcode", fkbankcode); - }else { - FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); - String orgcode = ""; - if(orgcodeVo!=null){ - orgcode = orgcodeVo.getStringValue(); - } - subjson.put("orgcode", orgcode); - FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); - String fkbankcode = ""; - if(fkbankcodeVo!=null){ - fkbankcode = fkbankcodeVo.getStringValue(); - } - subjson.put("fkbankcode", fkbankcode); - } - FieldDataVo skbankcodeVo = subFormDataVo.getFieldData("分账收款银行账号"); - String skbankcode = ""; - if(skbankcodeVo!=null){ - skbankcode = skbankcodeVo.getStringValue(); - } - subjson.put("skbankcode", skbankcode); - subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); - FieldDataVo oabillcodeVo = subFormDataVo.getFieldData("分账单据流水号"); - String oabillcode = ""; - if(oabillcodeVo!=null){ - oabillcode = oabillcodeVo.getStringValue(); - } - subjson.put("oabillcode", oabillcode); - FieldDataVo field0006Vo = formDataVo.getFieldData("分账单据流水号"); - String field0006 = ""; - if(field0006Vo!=null){ - field0006 = field0006Vo.getStringValue(); - } - subjson.put("field0006", field0006); - FieldDataVo suppliercodeVo = subFormDataVo.getFieldData("分账单据流水号"); - String suppliercode = ""; - if(suppliercodeVo!=null){ - suppliercode = suppliercodeVo.getStringValue(); - } - subjson.put("suppliercode", suppliercode); - FieldDataVo ytVo = formDataVo.getFieldData("分账单据流水号"); - String yt = ""; - if(ytVo!=null){ - yt = ytVo.getStringValue(); - } - subjson.put("yt", yt); - FieldDataVo busitypecodeIdVo = formDataVo.getFieldData("业务流程"); - String busitypecodeId = ""; - if(ytVo!=null){ - busitypecodeId = busitypecodeIdVo.getDbValue().toString(); - } - String busitypecodeCode = getEnumManagerNew().getEnumItem(Long.parseLong(busitypecodeId)).getEnumItemCode(); - String busitypecode = busitypecodeCode.substring(5); - subjson.put("busitypecode", busitypecode); - FieldDataVo wldxidVo = subFormDataVo.getFieldData("往来对象"); - String wldxid = ""; - if(wldxidVo!=null) { - wldxid = wldxidVo.getDbValue().toString(); - } - String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); - String wldxvalue = wldxCode.substring(5); - subjson.put("wldx", wldxvalue); - subjson.put("fklx", "D3"); - jsonArray.add(subjson); - } - jsonObject.put("data", jsonArray); + String str = SystemEnvironment.getApplicationFolder(); + String date = DateUtil.format(new Date(), "yyyyMMddHHmmss"); + FileUtils.writeStringToFile(new File(str+"/bipjson/"+date.substring(0,4)+"/"+date.substring(5,6)+"/"+date.substring(7,8)+"/XCFZ_" + date + ".json"), jsonObject.toString(), "UTF-8"); return jsonObject; } - - + /** - * 社保分账参数封装 - * @param formDataVo + * 通用分账参数封装 + * @param master * @param summaryId * @return * @throws IOException */ - public JSONObject getSheBaoFenZhangParam( FormDataVo formDataVo,String summaryId) throws IOException, NoSuchFieldException { + public JSONObject getTongYongFenZhangParam(FormDataMasterBean master,String summaryId) throws IOException{ JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); - Map> subFormMaps = formDataVo.getSubFormMap(); - List subFormMap = subFormMaps.get("分账明细表"); - List istrue = new ArrayList(); - FieldDataVo isbearidVo = formDataVo.getFieldData("支付公司是否成本承担公司"); - String isbearid = ""; - if(isbearidVo!=null){ - isbearid = isbearidVo.getDbValue().toString(); - } + List formDataSubBeans = CAP4FormKit.getSubBeans(master,"分账明细表"); +// List istrue = new ArrayList(); + String isbearid = CAP4FormKit.getFieldStrValue(master, "支付公司是否成本承担公司"); String isbear = ""; if("".equals(isbearid)){ isbear = "否"; }else { isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); } - FieldDataVo isunitidVo = formDataVo.getFieldData("是否同一收款单位"); - String isunitid = ""; - if(isunitidVo!=null){ - isunitid = isunitidVo.getDbValue().toString(); + for (FormDataSubBean formDataSubBean : formDataSubBeans) { +// if(CAP4FormKit.getSubFieldValue(formDataSubBean, "BIP单据号")!=null) { +// istrue.add(CAP4FormKit.getSubFieldValue(formDataSubBean, "BIP单据号")); +// } + String num = CAP4FormKit.getSubFieldValue(formDataSubBean, "分账原币金额").toString(); + if("0".equals(num)) { + log.info("分账原币金额为0,跳过处理:"+ CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款人编码")); + continue; + } + JSONObject subjson = new JSONObject(); + subjson.put("psndoccode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款人编码")); + subjson.put("businessdate", CAP4FormKit.getFieldStrValue(master, "单据日期")); + JSONArray data = new JSONArray(); + JSONObject jsondata = new JSONObject(); + jsondata.put("scomment", CAP4FormKit.getFieldStrValue(master, "摘要内容")); + jsondata.put("field0120", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税率")); + jsondata.put("field0121", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税额")); + jsondata.put("field0119", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账行无税金额")); +// jsondata.put("field0120", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税率")); +// jsondata.put("field0121", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税额")); +// jsondata.put("field0119", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账行无税金额")); + jsondata.put("money", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账原币金额")); + jsondata.put("jsfs", CAP4FormKit.getFieldStrValue(master, "结算方式编号")); + jsondata.put("kmdl", CAP4FormKit.getFieldStrValue(master, "科目大类编号")); + jsondata.put("szxm", CAP4FormKit.getFieldStrValue(master, "收支项目编号")); + jsondata.put("fkyw", "OA"); + data.add(jsondata); + subjson.put("data", data); + if("是".equals(isbear)) { + subjson.put("orgcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账组织编码")); + subjson.put("fkbankcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账付款银行账号")); + }else { + subjson.put("orgcode", CAP4FormKit.getFieldStrValue(master, "主表支付公司编码")); + subjson.put("fkbankcode", CAP4FormKit.getFieldStrValue(master, "付款银行账号")); + } + subjson.put("skbankcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款银行账号")); + subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); + subjson.put("oabillcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账单据流水号")); + subjson.put("field0006", CAP4FormKit.getFieldStrValue(master, "原始单据数")); + subjson.put("suppliercode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款人编码")); + subjson.put("yt", CAP4FormKit.getFieldStrValue(master, "摘要内容")); + String busitypecodeId = CAP4FormKit.getFieldStrValue(master, "业务流程"); + String busitypecodeCode = getEnumManagerNew().getEnumItem(Long.parseLong(busitypecodeId)).getEnumItemCode(); + String busitypecode = busitypecodeCode.substring(5); + subjson.put("busitypecode", busitypecode); + String wldxid = ""; + if(CAP4FormKit.getSubFieldValue(formDataSubBean, "往来对象")!=null) { + wldxid = CAP4FormKit.getSubFieldValue(formDataSubBean, "往来对象").toString(); + } + String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); + String wldxvalue = wldxCode.substring(5); + subjson.put("wldx", wldxvalue); + subjson.put("fklx", "D3"); + jsonArray.add(subjson); } + jsonObject.put("data", jsonArray); +// System.out.println(istrue.size()==formDataSubBeans.size()); +// if(istrue.size()==formDataSubBeans.size()) { +// jsonObject = new JSONObject(); +// } + String str = SystemEnvironment.getApplicationFolder(); + String date = DateUtil.format(new Date(), "yyyyMMddHHmmss"); + FileUtils.writeStringToFile(new File(str+"/bipjson/"+date.substring(0,4)+"/"+date.substring(5,6)+"/"+date.substring(7,8)+"/TYFZ_" + date + ".json"), jsonObject.toString(), "UTF-8"); + return jsonObject; + } + + + /** + * 社保分账参数封装 + * @param master + * @param summaryId + * @return + * @throws IOException + */ + public JSONObject getSheBaoFenZhangParam(FormDataMasterBean master,String summaryId) throws IOException{ + JSONObject jsonObject = new JSONObject(); + JSONArray jsonArray = new JSONArray(); + List formDataSubBeans = CAP4FormKit.getSubBeans(master,"分账明细表"); + List istrue = new ArrayList(); + String isbearid = CAP4FormKit.getFieldStrValue(master, "支付公司是否成本承担公司"); + String isbear = ""; + if("".equals(isbearid)){ + isbear = "否"; + }else { + isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); + } + String isunitid = CAP4FormKit.getFieldStrValue(master, "是否同一收款单位"); String isunit = ""; if("".equals(isunitid)){ isunit = "是"; @@ -443,106 +232,37 @@ public class ParamUtil { isunit = getEnumManagerNew().getEnumItem(Long.parseLong(isunitid)).getLabel(); } if("是".equals(isunit) && "否".equals(isbear)) { +// istrue.add(CAP4FormKit.getFieldStrValue(master, "BIP单据编号")); JSONObject subjson = new JSONObject(); - FieldDataVo psndoccodeVo = formDataVo.getFieldData("收款单位编码"); - String psndoccode = ""; - if(psndoccodeVo!=null){ - psndoccode = psndoccodeVo.getStringValue(); - } - subjson.put("psndoccode", psndoccode); - FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); - String businessdate = ""; - if(businessdateVo!=null){ - businessdate = businessdateVo.getStringValue(); - } - subjson.put("businessdate", businessdate); + subjson.put("psndoccode", CAP4FormKit.getFieldStrValue(master, "收款单位编码")); + subjson.put("businessdate", CAP4FormKit.getFieldStrValue(master, "单据日期")); JSONArray data = new JSONArray(); JSONObject jsondata = new JSONObject(); - FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); - String scomment = ""; - if(scommentVo!=null){ - scomment = scommentVo.getStringValue(); - } - jsondata.put("scomment", scomment); + jsondata.put("scomment", CAP4FormKit.getFieldStrValue(master, "摘要内容")); jsondata.put("field0120", "0"); jsondata.put("field0121", "0"); - FieldDataVo moneyVo = formDataVo.getFieldData("合计分账支付"); - String money = ""; - if(moneyVo!=null){ - money = moneyVo.getStringValue(); - } - jsondata.put("money", money); - FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); - String jsfs = ""; - if(jsfsVo!=null){ - jsfs = jsfsVo.getStringValue(); - } - jsondata.put("jsfs", jsfs); - FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); - String kmdl = ""; - if(kmdlVo!=null){ - kmdl = kmdlVo.getStringValue(); - } - jsondata.put("kmdl", kmdl); - FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); - String szxm = ""; - if(szxmVo!=null){ - szxm = szxmVo.getStringValue(); - } - jsondata.put("szxm", szxm); + jsondata.put("money", CAP4FormKit.getFieldStrValue(master, "合计分账支付")); + jsondata.put("jsfs", CAP4FormKit.getFieldStrValue(master, "结算方式编号")); + jsondata.put("kmdl", CAP4FormKit.getFieldStrValue(master, "科目大类编号")); + jsondata.put("szxm", CAP4FormKit.getFieldStrValue(master, "收支项目编号")); jsondata.put("field0119","0"); +// String fkyw = CAP4FormKit.getFieldStrValue(master, "可选转账用途"); +// String fkywvalue = enumManagerNew.getEnumItem(Long.parseLong(fkyw)).getValue(); +// jsondata.put("fkyw", fkywvalue); jsondata.put("fkyw", "OA"); data.add(jsondata); subjson.put("data", data); - jsondata.put("szxm", szxm); - FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); - String orgcode = ""; - if(orgcodeVo!=null){ - orgcode = orgcodeVo.getStringValue(); - } - subjson.put("orgcode", orgcode); - FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); - String fkbankcode = ""; - if(fkbankcodeVo!=null){ - fkbankcode = fkbankcodeVo.getStringValue(); - } - subjson.put("fkbankcode", fkbankcode); - FieldDataVo skbankcodeVo = formDataVo.getFieldData("收款银行账号"); - String skbankcode = ""; - if(skbankcodeVo!=null){ - skbankcode = skbankcodeVo.getStringValue(); - } - subjson.put("skbankcode", skbankcode); + subjson.put("orgcode", CAP4FormKit.getFieldStrValue(master, "主表支付公司编码")); + subjson.put("fkbankcode", CAP4FormKit.getFieldStrValue(master, "付款银行账号")); + subjson.put("skbankcode", CAP4FormKit.getFieldStrValue(master, "收款银行账号")); subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); - FieldDataVo oabillcodeVo = formDataVo.getFieldData("单据流水号"); - String oabillcode = ""; - if(oabillcodeVo!=null){ - oabillcode = oabillcodeVo.getStringValue(); - } - subjson.put("oabillcode",oabillcode); - FieldDataVo field0006Vo = formDataVo.getFieldData("原始单据数"); - String field0006 = ""; - if(field0006Vo!=null){ - field0006 = field0006Vo.getStringValue(); - } - subjson.put("field0006", field0006); - FieldDataVo suppliercodeVo = formDataVo.getFieldData("原始单据数"); - String suppliercode = ""; - if(suppliercodeVo!=null){ - suppliercode = suppliercodeVo.getStringValue(); - } - subjson.put("suppliercode", suppliercode); - FieldDataVo ytVo = formDataVo.getFieldData("摘要内容"); - String yt = ""; - if(ytVo!=null){ - yt = ytVo.getStringValue(); - } - subjson.put("yt", yt); - - FieldDataVo wldxidVo = formDataVo.getFieldData("表头往来对象"); + subjson.put("oabillcode", CAP4FormKit.getFieldStrValue(master, "单据流水号")); + subjson.put("field0006", CAP4FormKit.getFieldStrValue(master, "原始单据数")); + subjson.put("suppliercode", CAP4FormKit.getFieldStrValue(master, "收款单位编码")); + subjson.put("yt", CAP4FormKit.getFieldStrValue(master, "摘要内容")); String wldxid = ""; - if(wldxidVo!=null){ - wldxid = wldxidVo.getDbValue().toString(); + if(CAP4FormKit.getFieldStrValue(master, "表头往来对象")!=null) { + wldxid = CAP4FormKit.getFieldStrValue(master, "表头往来对象").toString(); } String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); String wldxvalue = wldxCode.substring(5); @@ -550,154 +270,57 @@ public class ParamUtil { subjson.put("fklx", "D3"); jsonArray.add(subjson); }else { - for (FormDataVo subFormDataVo : subFormMap) { - FieldDataVo bipNoVo = subFormDataVo.getFieldData("BIP单据号"); - if(bipNoVo!=null){ - istrue.add(bipNoVo.getStringValue()); + for (FormDataSubBean formDataSubBean : formDataSubBeans) { + if(CAP4FormKit.getSubFieldValue(formDataSubBean, "BIP单据号")!=null) { + istrue.add(CAP4FormKit.getSubFieldValue(formDataSubBean, "BIP单据号")); } JSONObject subjson = new JSONObject(); if("否".equals(isunit)) { - FieldDataVo psndoccodeVo = subFormDataVo.getFieldData("分账收款人编码"); - String psndoccode = ""; - if(psndoccodeVo!=null){ - psndoccode = psndoccodeVo.getStringValue(); - } - subjson.put("psndoccode", psndoccode); - subjson.put("suppliercode", psndoccode); - FieldDataVo skbankcodeVo = subFormDataVo.getFieldData("分账收款银行账号"); - String skbankcode = ""; - if(skbankcodeVo!=null){ - skbankcode = skbankcodeVo.getStringValue(); - } - subjson.put("skbankcode", skbankcode); - + subjson.put("psndoccode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款人编码")); + subjson.put("skbankcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款银行账号")); + subjson.put("suppliercode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账收款人编码")); }else { - FieldDataVo psndoccodeVo = formDataVo.getFieldData("收款单位编码"); - String psndoccode = ""; - if(psndoccodeVo!=null){ - psndoccode = psndoccodeVo.getStringValue(); - } - subjson.put("psndoccode", psndoccode); - subjson.put("suppliercode", psndoccode); - FieldDataVo skbankcodeVo = formDataVo.getFieldData("收款银行账号"); - String skbankcode = ""; - if(skbankcodeVo!=null){ - skbankcode = skbankcodeVo.getStringValue(); - } - subjson.put("skbankcode",skbankcode); - + subjson.put("psndoccode", CAP4FormKit.getFieldStrValue(master, "收款单位编码")); + subjson.put("skbankcode", CAP4FormKit.getFieldStrValue(master, "收款银行账号")); + subjson.put("suppliercode", CAP4FormKit.getFieldStrValue(master, "收款单位编码")); } - FieldDataVo businessdateVo = formDataVo.getFieldData("单据日期"); - String businessdate = ""; - if(businessdateVo!=null){ - businessdate = businessdateVo.getStringValue(); - } - subjson.put("businessdate", businessdate); + subjson.put("businessdate", CAP4FormKit.getFieldStrValue(master, "单据日期")); JSONArray data = new JSONArray(); JSONObject jsondata = new JSONObject(); - FieldDataVo scommentVo = formDataVo.getFieldData("摘要内容"); - String scomment = ""; - if(scommentVo!=null){ - scomment = scommentVo.getStringValue(); - } - jsondata.put("scomment", scomment); - FieldDataVo field0120Vo = subFormDataVo.getFieldData("分账税率"); - String field0120 = ""; - if(field0120Vo!=null){ - field0120 = field0120Vo.getStringValue(); - } - jsondata.put("field0120",field0120); - FieldDataVo field0121Vo = subFormDataVo.getFieldData("分账税额"); - String field0121 = ""; - if(field0121Vo!=null){ - field0121 = field0121Vo.getStringValue(); - } - jsondata.put("field0121",field0121); - FieldDataVo field0119Vo = subFormDataVo.getFieldData("分账行无税金额"); - String field0119 = ""; - if(field0119Vo!=null){ - field0119 = field0119Vo.getStringValue(); - } - jsondata.put("field0119", field0119); - FieldDataVo moneyVo = subFormDataVo.getFieldData("分账原币金额"); - String money = ""; - if(moneyVo!=null){ - money = moneyVo.getStringValue(); - } - jsondata.put("money", money); - FieldDataVo jsfsVo = formDataVo.getFieldData("结算方式编号"); - String jsfs = ""; - if(jsfsVo!=null){ - jsfs = jsfsVo.getStringValue(); - } - jsondata.put("jsfs", jsfs); - FieldDataVo kmdlVo = formDataVo.getFieldData("科目大类编号"); - String kmdl = ""; - if(kmdlVo!=null){ - kmdl = kmdlVo.getStringValue(); - } - jsondata.put("kmdl", kmdl); - FieldDataVo szxmVo = formDataVo.getFieldData("收支项目编号"); - String szxm = ""; - if(szxmVo!=null){ - szxm = szxmVo.getStringValue(); - } - jsondata.put("szxm", szxm); + jsondata.put("scomment", CAP4FormKit.getFieldStrValue(master, "摘要内容")); + jsondata.put("field0120", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税率")); + jsondata.put("field0121", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账税额")); + jsondata.put("field0119", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账行无税金额")); + jsondata.put("money", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账原币金额")); + jsondata.put("jsfs", CAP4FormKit.getFieldStrValue(master, "结算方式编号")); + jsondata.put("kmdl", CAP4FormKit.getFieldStrValue(master, "科目大类编号")); + jsondata.put("szxm", CAP4FormKit.getFieldStrValue(master, "收支项目编号")); +// String fkyw = CAP4FormKit.getFieldStrValue(master, "可选转账用途"); +// String fkywvalue = enumManagerNew.getEnumItem(Long.parseLong(fkyw)).getValue(); +// jsondata.put("fkyw", fkywvalue); jsondata.put("fkyw", "OA"); data.add(jsondata); subjson.put("data", data); if("是".equals(isbear)) { - FieldDataVo orgcodeVo = subFormDataVo.getFieldData("分账组织编码"); - String orgcode = ""; - if(orgcodeVo!=null){ - orgcode = orgcodeVo.getStringValue(); - } - subjson.put("orgcode", orgcode); - FieldDataVo fkbankcodeVo = subFormDataVo.getFieldData("分账付款银行账号"); - String fkbankcode = ""; - if(fkbankcodeVo!=null){ - fkbankcode = fkbankcodeVo.getStringValue(); - } - subjson.put("fkbankcode", fkbankcode); + subjson.put("orgcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账组织编码")); + subjson.put("fkbankcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账付款银行账号")); } else { - FieldDataVo orgcodeVo = formDataVo.getFieldData("主表支付公司编码"); - String orgcode = ""; - if(orgcodeVo!=null){ - orgcode = orgcodeVo.getStringValue(); - } - subjson.put("orgcode", orgcode); - FieldDataVo fkbankcodeVo = formDataVo.getFieldData("付款银行账号"); - String fkbankcode = ""; - if(fkbankcodeVo!=null){ - fkbankcode = fkbankcodeVo.getStringValue(); - } - subjson.put("fkbankcode", fkbankcode); - } + subjson.put("orgcode", CAP4FormKit.getFieldStrValue(master, "主表支付公司编码")); + subjson.put("fkbankcode", CAP4FormKit.getFieldStrValue(master, "付款银行账号")); + } subjson.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); - FieldDataVo oabillcodeVo = subFormDataVo.getFieldData("分账单据流水号"); - String oabillcode = ""; - if(oabillcodeVo!=null){ - oabillcode = oabillcodeVo.getStringValue(); - } - subjson.put("oabillcode", oabillcode); - FieldDataVo field0006Vo = formDataVo.getFieldData("原始单据数"); - String field0006 = ""; - if(field0006Vo!=null){ - field0006 = field0006Vo.getStringValue(); - } - subjson.put("field0006", field0006); - FieldDataVo ytVo = formDataVo.getFieldData("摘要内容"); - String yt = ""; - if(ytVo!=null){ - yt = ytVo.getStringValue(); - } - subjson.put("yt", yt); + subjson.put("oabillcode", CAP4FormKit.getSubFieldValue(formDataSubBean, "分账单据流水号")); + subjson.put("field0006", CAP4FormKit.getFieldStrValue(master, "原始单据数")); + subjson.put("yt", CAP4FormKit.getFieldStrValue(master, "摘要内容")); //业务流程 +// String busitypecodeId = CAP4FormKit.getFieldStrValue(master, "业务流程"); +// String busitypecodeCode = getEnumManagerNew().getEnumItem(Long.parseLong(busitypecodeId)).getEnumItemCode(); +// String busitypecode = busitypecodeCode.substring(5); +// subjson.put("busitypecode", busitypecode); String wldxid = ""; - FieldDataVo wldxidVo = subFormDataVo.getFieldData("往来对象"); - if(wldxidVo!=null){ - wldxid = wldxidVo.getDbValue().toString(); + if(CAP4FormKit.getSubFieldValue(formDataSubBean, "往来对象")!=null) { + wldxid = CAP4FormKit.getSubFieldValue(formDataSubBean, "往来对象").toString(); } String wldxCode = getEnumManagerNew().getEnumItem(Long.parseLong(wldxid)).getEnumItemCode(); String wldxvalue = wldxCode.substring(5); @@ -706,171 +329,141 @@ public class ParamUtil { jsonArray.add(subjson); } } - + jsonObject.put("data", jsonArray); - System.out.println(istrue.size()==subFormMap.size()); - if(istrue.size()==subFormMap.size()) { + System.out.println(istrue.size()==formDataSubBeans.size()); + if(istrue.size()==formDataSubBeans.size()) { jsonObject = new JSONObject(); } + String str = SystemEnvironment.getApplicationFolder(); + String date = DateUtil.format(new Date(), "yyyyMMddHHmmss"); + FileUtils.writeStringToFile(new File(str+"/bipjson/"+date.substring(0,4)+"/"+date.substring(5,6)+"/"+date.substring(7,8)+"/SBFZ_" + date + ".json"), jsonObject.toString(), "UTF-8"); return jsonObject; } - + /** * 薪酬分账终止参数 - * @param formDataVo + * @param master * @return * @throws IOException */ - public JSONObject getXinChouFenZhangStopParam(FormDataVo formDataVo) throws NoSuchFieldException { + public JSONObject getXinChouFenZhangStopParam(FormDataMasterBean master) throws IOException{ JSONObject jsonObject = new JSONObject(); -// System.out.println("设置终止参数"); - FieldDataVo billcodeVo = formDataVo.getFieldData("NC单据编号"); - String billcode = ""; - if(billcodeVo!=null){ - billcode = billcodeVo.getStringValue(); - } -// String billcode = CAP4FormKit.getFieldStrValue(master, "NC单据编号"); + System.out.println("设置终止参数"); + String billcode = CAP4FormKit.getFieldStrValue(master, "NC单据编号"); jsonObject.put("billcode", billcode); jsonObject.put("status", "0"); System.out.println("终止参数:"+jsonObject); return jsonObject; } - + /** * 社保分账终止参数 - * @param formDataVo + * @param master * @return * @throws IOException */ - public JSONObject getSheBaoFenZhangStopParam( FormDataVo formDataVo) throws NoSuchFieldException { + public JSONObject getSheBaoFenZhangStopParam(FormDataMasterBean master) throws IOException{ JSONObject jsonObject = new JSONObject(); -// System.out.println("设置终止参数"); - FieldDataVo billcodeVo = formDataVo.getFieldData("BIP单据编号"); - String billcode = ""; - if(billcodeVo!=null){ - billcode = billcodeVo.getStringValue(); - } -// String billcode = CAP4FormKit.getFieldStrValue(master, "BIP单据编号"); + System.out.println("设置终止参数"); + String billcode = CAP4FormKit.getFieldStrValue(master, "BIP单据编号"); jsonObject.put("compose_pk", billcode); jsonObject.put("status", 1); System.out.println("终止参数:"+jsonObject); return jsonObject; } - + /** * 薪酬分账结束参数 - * @param formDataVo + * @param master * @return * @throws IOException */ - public JSONObject getXinChouFenZhangEndParam(FormDataVo formDataVo) throws NoSuchFieldException { + public JSONObject getXinChouFenZhangEndParam(FormDataMasterBean master) throws IOException{ JSONObject jsonObject = new JSONObject(); - FieldDataVo billcodeVo = formDataVo.getFieldData("NC单据编号"); - String billcode = ""; - if(billcodeVo!=null){ - billcode = billcodeVo.getStringValue(); - } + System.out.println("设置流程结束参数"); + String billcode = CAP4FormKit.getFieldStrValue(master, "NC单据编号"); jsonObject.put("billcode", billcode); jsonObject.put("status", "1"); System.out.println("流程结束参数:"+jsonObject); return jsonObject; } - - + + /** * 社保分账结束参数 - * @param formDataVo + * @param master * @return * @throws IOException */ - public JSONObject getSheBaoFenZhangEndParam(FormDataVo formDataVo) throws NoSuchFieldException { + public JSONObject getSheBaoFenZhangEndParam(FormDataMasterBean master) throws IOException{ JSONObject jsonObject = new JSONObject(); - FieldDataVo billcodeVo = formDataVo.getFieldData("BIP单据编号"); - String billcode = ""; - if(billcodeVo!=null){ - billcode = billcodeVo.getStringValue(); - } + System.out.println("设置流程结束参数"); + String billcode = CAP4FormKit.getFieldStrValue(master, "BIP单据编号"); jsonObject.put("compose_pk", billcode); jsonObject.put("status", 2); System.out.println("流程结束参数:"+jsonObject); return jsonObject; } - - + + /** * 通用收款参数 - * @param formDataVo + * @param master * @return * @throws IOException */ - public JSONObject getTongyongshoukuanParam(FormDataVo formDataVo,String summaryId) throws NoSuchFieldException { + public JSONObject getTongyongshoukuanParam(FormDataMasterBean master,String summaryId) throws IOException{ JSONObject jsonObject = new JSONObject(); System.out.println("设置通用收款参数"); -// jsonObject.put("oabillcode", CAP4FormKit.getFieldStrValue(master, "单据流水号")); - jsonObject.put("oabillcode", formDataVo.getFieldData("单据流水号")!=null?formDataVo.getFieldData("单据流水号").getStringValue():""); + jsonObject.put("oabillcode", CAP4FormKit.getFieldStrValue(master, "单据流水号")); jsonObject.put("path", "/seeyon/cst/flowInfo.do?summaryId="+summaryId); -// jsonObject.put("financialOrg", CAP4FormKit.getFieldStrValue(master, "BIP公司编号")); - jsonObject.put("financialOrg", formDataVo.getFieldData("BIP公司编号")!=null?formDataVo.getFieldData("BIP公司编号").getStringValue():""); -// jsonObject.put("billDate", CAP4FormKit.getFieldStrValue(master, "单据日期")); - jsonObject.put("billDate", formDataVo.getFieldData("单据日期")!=null?formDataVo.getFieldData("单据日期").getStringValue():""); -// jsonObject.put("customer", CAP4FormKit.getFieldStrValue(master, "客商编号")); - jsonObject.put("customer", formDataVo.getFieldData("客商编号")!=null?formDataVo.getFieldData("客商编号").getStringValue():""); -// jsonObject.put("paymentAccount", CAP4FormKit.getFieldStrValue(master, "付款银行账号")); - jsonObject.put("paymentAccount", formDataVo.getFieldData("付款银行账号")!=null?formDataVo.getFieldData("付款银行账号").getStringValue():""); -// jsonObject.put("settlementMethod", CAP4FormKit.getFieldStrValue(master, "结算方式编码")); - jsonObject.put("settlementMethod", formDataVo.getFieldData("结算方式编码")!=null?formDataVo.getFieldData("结算方式编码").getStringValue():""); -// jsonObject.put("recAccount", CAP4FormKit.getFieldStrValue(master, "收款银行账号")); - jsonObject.put("recAccount", formDataVo.getFieldData("收款银行账号")!=null?formDataVo.getFieldData("收款银行账号").getStringValue():""); -// jsonObject.put("psndoc", CAP4FormKit.getFieldStrValue(master, "业务员编码")); - jsonObject.put("psndoc", formDataVo.getFieldData("业务员编码")!=null?formDataVo.getFieldData("业务员编码").getStringValue():""); -// String sklxId = CAP4FormKit.getFieldStrValue(master, "收款类型"); - String sklxId = formDataVo.getFieldData("收款类型")!=null?formDataVo.getFieldData("收款类型").getDbValue()+"":""; + jsonObject.put("financialOrg", CAP4FormKit.getFieldStrValue(master, "BIP公司编号")); + jsonObject.put("billDate", CAP4FormKit.getFieldStrValue(master, "单据日期")); + jsonObject.put("customer", CAP4FormKit.getFieldStrValue(master, "客商编号")); + jsonObject.put("paymentAccount", CAP4FormKit.getFieldStrValue(master, "付款银行账号")); + jsonObject.put("settlementMethod", CAP4FormKit.getFieldStrValue(master, "结算方式编码")); + jsonObject.put("recAccount", CAP4FormKit.getFieldStrValue(master, "收款银行账号")); +// jsonObject.put("deptid", CAP4FormKit.getFieldStrValue(master, "部门编码")); + jsonObject.put("psndoc", CAP4FormKit.getFieldStrValue(master, "业务员编码")); + String sklxId = CAP4FormKit.getFieldStrValue(master, "收款类型"); String sklxCode = getEnumManagerNew().getEnumItem(Long.parseLong(sklxId)).getEnumItemCode(); - jsonObject.put("sklx",sklxCode); -// jsonObject.put("def29", CAP4FormKit.getFieldStrValue(master, "摘要")); - jsonObject.put("def29", formDataVo.getFieldData("摘要")!=null?formDataVo.getFieldData("摘要").getStringValue():""); -// jsonObject.put("prepay", CAP4FormKit.getFieldStrValue(master, "收款性质")); - jsonObject.put("prepay", formDataVo.getFieldData("收款性质")!=null?formDataVo.getFieldData("收款性质").getStringValue():""); + jsonObject.put("sklx",sklxCode); + jsonObject.put("def29", CAP4FormKit.getFieldStrValue(master, "摘要")); + jsonObject.put("prepay", CAP4FormKit.getFieldStrValue(master, "收款性质")); //该超级节点存在多流程共用情况,通过不同变量,兼容不同表单的数据域 - String subName =formDataVo.getFieldData("明细表名称")!=null?formDataVo.getFieldData("明细表名称").getStringValue():""; -// StringUtils.isEmpty(formDataVo.getFieldData("明细表名称")!=null?formDataVo.getFieldData("明细表名称").getStringValue():"")?"通用收费明细":CAP4FormKit.getFieldStrValue(master, "明细表名称"); - subName = StringUtils.isEmpty(subName)?"通用收费明细":subName; - List subFormDataVos = formDataVo.getSubFormMap().get(subName); -// List formDataSubBeans = CAP4FormKit.getSubBeans(master,subName); - JSONArray jsonArray = new JSONArray(); - for (FormDataVo subFormDataVo : subFormDataVos) { - JSONObject items = new JSONObject(); - //该超级节点存在多流程共用情况,通过不同变量,兼容不同表单的数据域 - String skywName =formDataVo.getFieldData("明细表名称")!=null?formDataVo.getFieldData("明细表名称").getStringValue():""; -// StringUtils.isEmpty(CAP4FormKit.getFieldStrValue(master, "收款业务类型名称"))?"收款业务类型编码":CAP4FormKit.getFieldStrValue(master, "收款业务类型名称"); - skywName = StringUtils.isEmpty(skywName)?"收款业务类型编码":skywName; + String subName = + StringUtils.isEmpty(CAP4FormKit.getFieldStrValue(master, "明细表名称"))?"通用收费明细":CAP4FormKit.getFieldStrValue(master, "明细表名称"); -// items.put("skyw", CAP4FormKit.getSubFieldValue(formDataSubBean, skywName)); - items.put("skyw", subFormDataVo.getFieldData(skywName)!=null?subFormDataVo.getFieldData(skywName).getStringValue():""); -// items.put("money", CAP4FormKit.getSubFieldValue(formDataSubBean, "本次收款金额")); - items.put("money", subFormDataVo.getFieldData("本次收款金额")!=null?subFormDataVo.getFieldData("本次收款金额").getStringValue():""); -// items.put("field0120", CAP4FormKit.getSubFieldValue(formDataSubBean, "税率")); - items.put("field0120", subFormDataVo.getFieldData("税率")!=null?subFormDataVo.getFieldData("税率").getStringValue():""); -// items.put("field0121", CAP4FormKit.getSubFieldValue(formDataSubBean, "税额")); - items.put("field0121", subFormDataVo.getFieldData("税额")!=null?subFormDataVo.getFieldData("税额").getStringValue():""); -// items.put("field0119", CAP4FormKit.getSubFieldValue(formDataSubBean, "无税金额")); - items.put("field0119", subFormDataVo.getFieldData("无税金额")!=null?subFormDataVo.getFieldData("无税金额").getStringValue():""); -// String subjectCode = CAP4FormKit.getSubFieldValue(formDataSubBean, "科目大类编码").toString(); - String subjectCode =subFormDataVo.getFieldData("科目大类编码")!=null?subFormDataVo.getFieldData("科目大类编码").getStringValue():""; + List formDataSubBeans = CAP4FormKit.getSubBeans(master,subName); + JSONArray jsonArray = new JSONArray(); + for (FormDataSubBean formDataSubBean : formDataSubBeans) { + JSONObject items = new JSONObject(); + + //该超级节点存在多流程共用情况,通过不同变量,兼容不同表单的数据域 + String skywName = + StringUtils.isEmpty(CAP4FormKit.getFieldStrValue(master, "收款业务类型名称"))?"收款业务类型编码":CAP4FormKit.getFieldStrValue(master, "收款业务类型名称"); + + items.put("skyw", CAP4FormKit.getSubFieldValue(formDataSubBean, skywName)); + + items.put("money", CAP4FormKit.getSubFieldValue(formDataSubBean, "本次收款金额")); + items.put("field0120", CAP4FormKit.getSubFieldValue(formDataSubBean, "税率")); + items.put("field0121", CAP4FormKit.getSubFieldValue(formDataSubBean, "税额")); + items.put("field0119", CAP4FormKit.getSubFieldValue(formDataSubBean, "无税金额")); +// items.put("subjectCode", CAP4FormKit.getSubFieldValue(formDataSubBean, "科目大类编码")); + String subjectCode = CAP4FormKit.getSubFieldValue(formDataSubBean, "科目大类编码").toString(); subjectCode = subjectCode.substring(5); - items.put("subjectCode", subjectCode);//科目大类01-应收款项,02-预收款项 -// items.put("scomment", CAP4FormKit.getSubFieldValue(formDataSubBean, "备注")); - items.put("scomment", subFormDataVo.getFieldData("备注")!=null?subFormDataVo.getFieldData("备注").getStringValue():""); -// items.put("szxm", CAP4FormKit.getSubFieldValue(formDataSubBean, "收支项目编码")); - items.put("szxm",subFormDataVo.getFieldData("收支项目编码")!=null?subFormDataVo.getFieldData("收支项目编码").getStringValue():""); + items.put("subjectCode", subjectCode);//科目大类01-应收款项,02-预收款项 + items.put("scomment", CAP4FormKit.getSubFieldValue(formDataSubBean, "备注")); + items.put("szxm", CAP4FormKit.getSubFieldValue(formDataSubBean, "收支项目编码")); jsonArray.add(items); } jsonObject.put("items", jsonArray); -// System.out.println("通用收款参数:"+jsonObject); -// String str = SystemEnvironment.getApplicationFolder(); -// String date = DateUtil.format(new Date(), "yyyyMMddHHmmss"); -// FileUtils.writeStringToFile(new File(str+"/bipjson/"+date.substring(0,4)+"/"+date.substring(5,6)+"/"+date.substring(7,8)+"/TYSK_" + date + ".json"), jsonObject.toString(), "UTF-8"); + System.out.println("通用收款参数:"+jsonObject); + String str = SystemEnvironment.getApplicationFolder(); + String date = DateUtil.format(new Date(), "yyyyMMddHHmmss"); + FileUtils.writeStringToFile(new File(str+"/bipjson/"+date.substring(0,4)+"/"+date.substring(5,6)+"/"+date.substring(7,8)+"/TYSK_" + date + ".json"), jsonObject.toString(), "UTF-8"); return jsonObject; } } diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ProtUtil.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ProtUtil.java index 6ad000a..322068f 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ProtUtil.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_file/util/ProtUtil.java @@ -33,10 +33,10 @@ import com.alibaba.fastjson.JSONObject; public class ProtUtil { private static final Log log = LogFactory.getLog(ProtUtil.class); - + /** * 调用post接口 - * + * * @param str 调用接口传递的参数json * @param urlStr 需要调用的url对应的参数文件中的编码 * @return diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/NewSheBaoFenZhangEvent.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/NewSheBaoFenZhangEvent.java new file mode 100644 index 0000000..2462c1f --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/NewSheBaoFenZhangEvent.java @@ -0,0 +1,94 @@ +package com.seeyon.apps.jync_fz.event; + +import cn.hutool.log.Log; +import com.alibaba.fastjson.JSONObject; +import com.seeyon.apps.bip.constants.BipConstants; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.workflow.constants.WorkFlowType; +import com.seeyon.apps.common.workflow.event.ACommonWorkflowEvent; +import com.seeyon.apps.ext.workflow.vo.FormDataVo; +import com.seeyon.apps.ext.workflow.vo.WorkflowEventContext; +import com.seeyon.apps.jync_file.kit.PropKit; +import com.seeyon.apps.jync_file.util.HeaderUtil; +import com.seeyon.apps.jync_file.util.ParamNewUtil; +import com.seeyon.apps.jync_file.util.ParamUtil; +import com.seeyon.apps.jync_file.util.ProtUtil; +import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.constants.ApplicationCategoryEnum; +import com.seeyon.ctp.workflow.event.AbstractWorkflowEvent; +import com.seeyon.ctp.workflow.event.WorkflowEventData; +import com.seeyon.ctp.workflow.event.WorkflowEventResult; + +import java.util.Map; + +public class NewSheBaoFenZhangEvent extends ACommonWorkflowEvent { + + private static final Log log = Log.get(NewSheBaoFenZhangEvent.class); + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); + + @Override + public String getId() { + return "newSheBaoFenZhangEvent"; + } + + @Override + public String getLabel() { + return "新OA社保分账单流程终止监听"; + } + + @Override + public String getPluginId() { + return BipConstants.getPluginId(); + } + + @Override + public String getFormParse() { + return "json"; + } + + + @Override + public WorkFlowType[] getTypes() { + return new WorkFlowType[] { WorkFlowType.onBeforeStop }; + } + + @Override + protected WorkflowEventContext proceed(String request, FormDataVo formDataVo, WorkFlowType workFlowType, FormDataMasterBean formDataMasterBean) throws Exception { + WorkflowEventContext context = new WorkflowEventContext(); + context.setNeedSave(true); + System.out.println("进入终止操作"); + try { + JSONObject headerer = HeaderUtil.getHeader(); + ParamNewUtil paramNewUtil = new ParamNewUtil(); + JSONObject jsonObject = paramNewUtil.getSheBaoFenZhangStopParam(formDataVo); + log.info("接口终止,参数记录:"+jsonObject); + String url = PropKit.getProp(PropKit.SBFZCANCELURL); + context.setUrl(url); + log.info("映射参数:"+request); + context.setRequest(jsonObject.toString()); + JSONObject res = ProtUtil.doPost(jsonObject, url, headerer); + context.setResponse(res.toString()); + if(res.isEmpty()) { + context.setSuccess(false); + context.setErrMsg("请求失败"); + return context; + } + String status = res.getString("status"); + if(!"1".equals(status)) { + context.setSuccess(false); + context.setErrMsg(res.getString("msg")); + return context; + } + }catch (Exception e) { + context.setSuccess(false); + context.setErrMsg(e.getMessage()); + return context; + } + context.setSuccess(true); + context.setErrMsg("请求成功"); + return context; + } + + +} diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/SheBaoFenZhangEvent.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/SheBaoFenZhangEvent.java index 3ef242f..ab7e645 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/SheBaoFenZhangEvent.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/SheBaoFenZhangEvent.java @@ -4,9 +4,9 @@ import cn.hutool.log.Log; import com.seeyon.apps.bip.constants.BipConstants; import com.seeyon.apps.common.config.ICstConfigApi; import com.seeyon.apps.common.workflow.constants.WorkFlowType; -import com.seeyon.apps.common.workflow.event.ACommonWorkflowEvent; import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.WorkflowEventContext; +import com.seeyon.apps.jync_file.util.ParamNewUtil; import com.seeyon.ctp.common.AppContext; import com.alibaba.fastjson.JSONObject; @@ -15,25 +15,23 @@ import com.seeyon.apps.jync_file.util.HeaderUtil; import com.seeyon.apps.jync_file.util.ParamUtil; import com.seeyon.apps.jync_file.util.ProtUtil; import com.seeyon.cap4.form.bean.FormDataMasterBean; +import com.seeyon.ctp.common.constants.ApplicationCategoryEnum; +import com.seeyon.ctp.workflow.event.AbstractWorkflowEvent; +import com.seeyon.ctp.workflow.event.WorkflowEventData; +import com.seeyon.ctp.workflow.event.WorkflowEventResult; -public class SheBaoFenZhangEvent extends ACommonWorkflowEvent { +import java.util.Map; + +//public class SheBaoFenZhangEvent extends ACommonWorkflowEvent { +public class SheBaoFenZhangEvent extends AbstractWorkflowEvent { private static final Log log = Log.get(SheBaoFenZhangEvent.class); protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); - @Override - public String getPluginId() { - return BipConstants.getPluginId(); + public SheBaoFenZhangEvent() { } - - @Override - public String getFormParse() { - return "json"; - } - - @Override - public WorkFlowType[] getTypes() { - return new WorkFlowType[] { WorkFlowType.onBeforeStop }; + public ApplicationCategoryEnum getAppName() { + return ApplicationCategoryEnum.form; } @Override @@ -46,40 +44,73 @@ public class SheBaoFenZhangEvent extends ACommonWorkflowEvent { return "OA社保分账单流程监听"; } - @Override - protected WorkflowEventContext proceed(String request, FormDataVo formDataVo, WorkFlowType workFlowType, FormDataMasterBean formDataMasterBean) throws Exception { - WorkflowEventContext context = new WorkflowEventContext(); -// ConfigVo configVo = cstConfigApi.getConfig(getPluginId()); - context.setNeedSave(true); + public WorkflowEventResult onBeforeStop(WorkflowEventData data) { + WorkflowEventResult workflowEventResult = new WorkflowEventResult(); System.out.println("进入终止操作"); try { + Map map = data.getBusinessData(); + FormDataMasterBean master = (FormDataMasterBean)map.get("formDataBean"); JSONObject headerer = HeaderUtil.getHeader(); ParamUtil paramUtil = new ParamUtil(); - JSONObject jsonObject = paramUtil.getSheBaoFenZhangStopParam(formDataVo); - log.info("接口终止,参数记录:"+jsonObject); - String url = PropKit.getProp(PropKit.SBFZCANCELURL); - context.setUrl(url); - context.setRequest(jsonObject.toString()); - JSONObject res = ProtUtil.doPost(jsonObject, url, headerer); - context.setResponse(res.toString()); - if(res.isEmpty()) { - context.setSuccess(false); - context.setErrMsg("请求失败"); - return context; + log.info("全量参数:"+master.getId()+master.getFieldBeanByFieldName("BIP单据编号")+master.getFormTable()); + System.out.println("直接输出field0065的数据:"+master.getFieldValue("field0065")); + JSONObject jsonObject = paramUtil.getSheBaoFenZhangStopParam(master); + log.info("接口终止,参数记录:" + jsonObject); + JSONObject res = ProtUtil.doPost(jsonObject, PropKit.getProp("sbfzCancelUrl"), headerer); + if (res.isEmpty()) { + workflowEventResult.setAlertMessage("请求失败"); + return workflowEventResult; + } else { + String status = res.getString("status"); + if (!"1".equals(status)) { + workflowEventResult.setAlertMessage(res.getString("msg")); + return workflowEventResult; + } else { + return null; + } } - String status = res.getString("status"); - if(!"1".equals(status)) { - context.setSuccess(false); - context.setErrMsg(res.getString("msg")); - return context; - } - }catch (Exception e) { - context.setSuccess(false); - context.setErrMsg(e.getMessage()); - return context; + } catch (Exception var10) { + var10.printStackTrace(); + workflowEventResult.setAlertMessage("终止异常:"+var10.getMessage()); + return workflowEventResult; } - context.setSuccess(true); - context.setErrMsg("请求成功"); - return context; } + + +// @Override +// protected WorkflowEventContext proceed(String request, FormDataVo formDataVo, WorkFlowType workFlowType, FormDataMasterBean formDataMasterBean) throws Exception { +// WorkflowEventContext context = new WorkflowEventContext(); +//// ConfigVo configVo = cstConfigApi.getConfig(getPluginId()); +// context.setNeedSave(true); +// System.out.println("进入终止操作"); +// try { +// JSONObject headerer = HeaderUtil.getHeader(); +// ParamUtil paramUtil = new ParamUtil(); +// JSONObject jsonObject = paramUtil.getSheBaoFenZhangStopParam(formDataVo); +// log.info("接口终止,参数记录:"+jsonObject); +// String url = PropKit.getProp(PropKit.SBFZCANCELURL); +// context.setUrl(url); +// context.setRequest(jsonObject.toString()); +// JSONObject res = ProtUtil.doPost(jsonObject, url, headerer); +// context.setResponse(res.toString()); +// if(res.isEmpty()) { +// context.setSuccess(false); +// context.setErrMsg("请求失败"); +// return context; +// } +// String status = res.getString("status"); +// if(!"1".equals(status)) { +// context.setSuccess(false); +// context.setErrMsg(res.getString("msg")); +// return context; +// } +// }catch (Exception e) { +// context.setSuccess(false); +// context.setErrMsg(e.getMessage()); +// return context; +// } +// context.setSuccess(true); +// context.setErrMsg("请求成功"); +// return context; +// } } diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/XinChouFenZhangEvent.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/XinChouFenZhangEvent.java index 052f9bc..34df13a 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/XinChouFenZhangEvent.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/event/XinChouFenZhangEvent.java @@ -11,6 +11,7 @@ import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.WorkflowEventContext; import com.seeyon.apps.jync_file.kit.PropKit; import com.seeyon.apps.jync_file.util.HeaderUtil; +import com.seeyon.apps.jync_file.util.ParamNewUtil; import com.seeyon.apps.jync_file.util.ParamUtil; import com.seeyon.apps.jync_file.util.ProtUtil; import com.seeyon.cap4.form.bean.FormDataMasterBean; @@ -53,8 +54,8 @@ public class XinChouFenZhangEvent extends ACommonWorkflowEvent { System.out.println("进入终止操作"); try { JSONObject headerer = HeaderUtil.getHeader(); - ParamUtil paramUtil = new ParamUtil(); - JSONObject jsonObject = paramUtil.getXinChouFenZhangStopParam(formDataVo); + ParamNewUtil paramNewUtil = new ParamNewUtil(); + JSONObject jsonObject = paramNewUtil.getXinChouFenZhangStopParam(formDataVo); log.info("接口终止,参数记录:"+jsonObject); String url = PropKit.getProp(PropKit.XCFZCANCELURL); context.setUrl(url); diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/SheBaoFenZhangNode.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/SheBaoFenZhangNode.java index 01d19a2..1c56b71 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/SheBaoFenZhangNode.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/SheBaoFenZhangNode.java @@ -16,19 +16,21 @@ import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; import com.seeyon.apps.jync_file.kit.PropKit; import com.seeyon.apps.jync_file.util.HeaderUtil; +import com.seeyon.apps.jync_file.util.ParamNewUtil; import com.seeyon.apps.jync_file.util.ParamUtil; import com.seeyon.apps.jync_file.util.ProtUtil; import com.seeyon.cap4.form.bean.FormDataMasterBean; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.ctpenumnew.manager.EnumManager; + public class SheBaoFenZhangNode extends ACommonSuperNode { private static Log log = Log.get(SheBaoFenZhangNode.class); protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); @Override public String getNodeId() { - return "SheBaoFenZhangNode"; + return "sheBaoFenZhangNode"; } @Override public String getNodeName() { @@ -69,16 +71,16 @@ public class SheBaoFenZhangNode extends ACommonSuperNode { // 进入超级审核节点 SuperNodeContext context = new SuperNodeContext(); context.setNeedSave(true); - System.out.println("开始处理单据SheBaoFenZhangNode"); + System.out.println("开始处理单据sheBaoFenZhangNode"); // 封装推送接口参数调用接口 try { JSONObject headerer = HeaderUtil.getHeader(); - ParamUtil paramUtil = new ParamUtil(); + ParamNewUtil paramNewUtil = new ParamNewUtil(); ColSummary summary = formDataVo.getColSummary(); - JSONObject jsonObject = paramUtil.getSheBaoFenZhangParam(formDataVo,summary+""); + JSONObject jsonObject = paramNewUtil.getSheBaoFenZhangParam(formDataVo,summary.getId()+""); context.setRequest(jsonObject.toString()); if(jsonObject.size()==0) { - JSONObject endJsonObject = paramUtil.getSheBaoFenZhangEndParam(formDataVo); + JSONObject endJsonObject = paramNewUtil.getSheBaoFenZhangEndParam(formDataVo); context.setRequest(endJsonObject.toString()); log.info("接口流程结束,参数记录:"+endJsonObject); String url = PropKit.getProp(PropKit.SBFZCANCELURL); @@ -96,7 +98,8 @@ public class SheBaoFenZhangNode extends ACommonSuperNode { context.setErrMsg("流程状态改变失败"); } } - String url = PropKit.getProp(PropKit.TRANSFORMURL); +// String url = PropKit.getProp(PropKit.TRANSFORMURL); + String url = PropKit.getProp(PropKit.SBFZCANCELURL); context.setUrl(url); JSONObject res = ProtUtil.doPost(jsonObject,url , headerer); context.setResponse(res.toString()); @@ -123,7 +126,7 @@ public class SheBaoFenZhangNode extends ACommonSuperNode { if("".equals(isbearid)){ isbear = "否"; }else { - isbear = getEnumManagerNew().getEnumItem(Long.parseLong(isbearid)).getLabel(); + isbear = isbearid; } FieldDataVo isunitidVo = formDataVo.getFieldData("是否同一收款单位"); String isunitid = ""; @@ -134,7 +137,7 @@ public class SheBaoFenZhangNode extends ACommonSuperNode { if("".equals(isunit)){ isunit = "是"; }else { - isunit = getEnumManagerNew().getEnumItem(Long.parseLong(isunitid)).getLabel(); + isunit = isunitid; } if(!("是".equals(isunit) && "否".equals(isbear))){ int i = 0; @@ -145,7 +148,7 @@ public class SheBaoFenZhangNode extends ACommonSuperNode { } } formDataVo.getNewFieldDataMap().put("BIP返回结果", "推送BIP成功:"+msg); - JSONObject endJsonObject = paramUtil.getSheBaoFenZhangEndParam(formDataVo); + JSONObject endJsonObject = paramNewUtil.getSheBaoFenZhangEndParam(formDataVo); log.info("接口流程结束,参数记录:"+endJsonObject); String endurl = PropKit.getProp(PropKit.SBFZCANCELURL); JSONObject EndRes = ProtUtil.doPost(endJsonObject, endurl, headerer); @@ -173,4 +176,4 @@ public class SheBaoFenZhangNode extends ACommonSuperNode { return context; } -} +} \ No newline at end of file diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/TongYongFenZhangNode.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/TongYongFenZhangNode.java index 4e59d8a..daad801 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/TongYongFenZhangNode.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/TongYongFenZhangNode.java @@ -15,7 +15,7 @@ import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; import com.seeyon.apps.jync_file.kit.PropKit; import com.seeyon.apps.jync_file.util.HeaderUtil; -import com.seeyon.apps.jync_file.util.ParamUtil; +import com.seeyon.apps.jync_file.util.ParamNewUtil; import com.seeyon.apps.jync_file.util.ProtUtil; import com.seeyon.cap4.form.bean.FormDataMasterBean; import com.seeyon.ctp.common.AppContext; @@ -70,9 +70,9 @@ public class TongYongFenZhangNode extends ACommonSuperNode { // 封装推送接口参数调用接口 try { JSONObject headerer = HeaderUtil.getHeader(); - ParamUtil paramUtil = new ParamUtil(); + ParamNewUtil paramNewUtil = new ParamNewUtil(); ColSummary colSummary = formDataVo.getColSummary(); - JSONObject jsonObject = paramUtil.getTongYongFenZhangParam(formDataVo,colSummary.getId()+""); + JSONObject jsonObject = paramNewUtil.getTongYongFenZhangParam(formDataVo,colSummary.getId()+""); context.setRequest(jsonObject.toString()); String url = PropKit.getProp(PropKit.TRANSFORMURL); context.setUrl(url); diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/XinChouFenZhangNode.java b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/XinChouFenZhangNode.java index d543bbf..9f31168 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/XinChouFenZhangNode.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/jync_fz/node/XinChouFenZhangNode.java @@ -15,7 +15,7 @@ import com.seeyon.apps.ext.workflow.vo.FormDataVo; import com.seeyon.apps.ext.workflow.vo.SuperNodeContext; import com.seeyon.apps.jync_file.kit.PropKit; import com.seeyon.apps.jync_file.util.HeaderUtil; -import com.seeyon.apps.jync_file.util.ParamUtil; +import com.seeyon.apps.jync_file.util.ParamNewUtil; import com.seeyon.apps.jync_file.util.ProtUtil; import com.seeyon.cap4.form.bean.FormDataMasterBean; import com.seeyon.ctp.common.AppContext; @@ -59,12 +59,12 @@ public class XinChouFenZhangNode extends ACommonSuperNode { // 封装推送接口参数调用接口 try { JSONObject headerer = HeaderUtil.getHeader(); - ParamUtil paramUtil = new ParamUtil(); + ParamNewUtil paramNewUtil = new ParamNewUtil(); ColSummary summary = formDataVo.getColSummary(); - JSONObject jsonObject = paramUtil.getXinChouFenZhangParam(formDataVo,summary.getId()+""); + JSONObject jsonObject = paramNewUtil.getXinChouFenZhangParam(formDataVo,summary.getId()+""); context.setRequest(jsonObject.toString()); if(jsonObject.size()==0) { - JSONObject endJsonObject = paramUtil.getXinChouFenZhangEndParam(formDataVo); + JSONObject endJsonObject = paramNewUtil.getXinChouFenZhangEndParam(formDataVo); log.info("接口流程结束,参数记录:"+endJsonObject); JSONObject EndRes = ProtUtil.doPost(endJsonObject, PropKit.getProp(PropKit.XCFZCANCELURL), headerer); if(EndRes.isEmpty()) { @@ -101,7 +101,7 @@ public class XinChouFenZhangNode extends ACommonSuperNode { subFormDataVo.getNewFieldDataMap().put("BIP单据号", bipNo[1].substring(0,bipNo[1].length()-3)); } formDataVo.getNewFieldDataMap().put("BIP返回结果", "推送BIP成功:"+msg); - JSONObject endJsonObject = paramUtil.getXinChouFenZhangEndParam(formDataVo); + JSONObject endJsonObject = paramNewUtil.getXinChouFenZhangEndParam(formDataVo); log.info("接口流程结束,参数记录:"+endJsonObject); JSONObject EndRes = ProtUtil.doPost(endJsonObject, PropKit.getProp(PropKit.XCFZCANCELURL), headerer); if(EndRes.isEmpty()) { diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/FineReportPluginApi.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/FineReportPluginApi.java new file mode 100644 index 0000000..a91cb1b --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/FineReportPluginApi.java @@ -0,0 +1,45 @@ +package com.seeyon.apps.src_finereport; + +import com.seeyon.apps.common.plugin.api.APluginInfoApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_finereport.constans.FineReportConstants; + + +public class FineReportPluginApi extends APluginInfoApi { + public FineReportPluginApi() { + } + + public String getPluginId() { + System.out.println(FineReportConstants.getPluginId()); + return FineReportConstants.getPluginId(); + } + + public String getCreateUser() { + return "橙阳科技"; + } + + public String getDescription() { + return "帆软集成管理"; + } + + public boolean syncOrg() { + return true; + } + + public ConfigVo getDefaultConfig() { + ConfigVo configVo = new ConfigVo(); + FineReportConstants[] var2 = FineReportConstants.values(); + int var3 = var2.length; + + for(int var4 = 0; var4 < var3; ++var4) { + FineReportConstants value = var2[var4]; + if (value != FineReportConstants.plugin) { + configVo.getDevParams().put(value.name(), value.getDefaultValue()); + configVo.getProdParams().put(value.name(), value.getDefaultValue()); + configVo.getParamMap().put(value.name(), value.getDescription()); + } + } + + return configVo; + } +} diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/constans/FineReportConstants.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/constans/FineReportConstants.java new file mode 100644 index 0000000..6763b4a --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/constans/FineReportConstants.java @@ -0,0 +1,29 @@ +package com.seeyon.apps.src_finereport.constans; + +public enum FineReportConstants { + + plugin("src_finereport", "插件ID"), + fineReportUrl("/webroot/decision", "帆软单点登录地址"), + url("https://bi.hbsxly.com", "帆软地址"); + + private String defaultValue; + private String description; + + private FineReportConstants(String defaultValue, String description) { + this.defaultValue = defaultValue; + this.description = description; + } + + public String getDefaultValue() { + return this.defaultValue; + } + + public String getDescription() { + return this.description; + } + + public static String getPluginId() { + return plugin.defaultValue; + } + +} diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/sso/FineReportesso.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/sso/FineReportesso.java new file mode 100644 index 0000000..e721660 --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/sso/FineReportesso.java @@ -0,0 +1,58 @@ +package com.seeyon.apps.src_finereport.sso; + +import cn.hutool.log.Log; +import com.seeyon.apps.common.config.ICstConfigApi; +import com.seeyon.apps.common.plugin.vo.ConfigVo; +import com.seeyon.apps.src_finereport.constans.FineReportConstants; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.controller.BaseController; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.util.annotation.Inject; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class FineReportesso extends BaseController { + + private static Log log = Log.get(FineReportesso.class); + + @Inject + private ICstConfigApi cstConfigApi; + + private OrgManager orgManager; + public void setOrgManager(OrgManager orgManager) {this.orgManager = orgManager; } + public OrgManager getOrgManager() { + if (orgManager == null) {orgManager = (OrgManager) AppContext.getBean("orgManager");}return orgManager; + } + + public ConfigVo getFineReportConfig() { + return cstConfigApi.getConfig(getPluginId()); + } + + public String getPluginId() { + return FineReportConstants.getPluginId(); + } + + public ModelAndView index(HttpServletRequest request, HttpServletResponse response) throws Exception { + ConfigVo configVo = getFineReportConfig(); +// 获取当前请求连接中的ticket + String ticket = request.getParameter("ticket"); + String fineReportUrl = configVo.getParamVal(FineReportConstants.fineReportUrl.name()); + System.out.println(fineReportUrl); + String url = configVo.getParamVal(FineReportConstants.url.name()); + System.out.println(url); + if(fineReportUrl != null && fineReportUrl.contains("?")){ + url = url+fineReportUrl+"&ticket="+ticket; + }else{ + url = url+fineReportUrl+"?ticket="+ticket; + } +// 跳转前记录跳转链接到log中 + log.info(url); + response.sendRedirect(url); + return null; + + } + + +} diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/util/HttpRequestUtils.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/util/HttpRequestUtils.java new file mode 100644 index 0000000..05c936f --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_finereport/util/HttpRequestUtils.java @@ -0,0 +1,241 @@ +package com.seeyon.apps.src_finereport.util; + +import com.alibaba.fastjson.JSONObject; +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpStatus; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.util.EntityUtils; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLDecoder; +import java.util.Map; +import java.util.Set; + +public class HttpRequestUtils { + /** + * post请求 + * + * @param url + * url地址 + * @param jsonParam + * 参数 + * @param needResponse + * 需要返回结果 + * @return + */ + public static String httpPost(String url, JSONObject jsonParam, + boolean needResponse) { + // post请求返回结果 + DefaultHttpClient httpClient = new DefaultHttpClient(); + String jsonResult = null; + HttpPost method = new HttpPost(url); + try { + if (null != jsonParam) { + // 解决中文乱码问题 + StringEntity entity = new StringEntity(jsonParam.toString(), + "utf-8"); + entity.setContentEncoding("UTF-8"); + entity.setContentType("application/json"); + method.setEntity(entity); + } + HttpResponse result = httpClient.execute(method); + url = URLDecoder.decode(url, "UTF-8"); + /** 请求发送成功,并得到响应 **/ + if (result.getStatusLine().getStatusCode() == 200) { + String str = ""; + try { + /** 读取服务器返回过来的json字符串数据 **/ + str = EntityUtils.toString(result.getEntity()); + if (!needResponse) { + return null; + } + /** 把json字符串转换成json对象 **/ + jsonResult = str; + } catch (Exception e) { + System.out.println("post请求提交失败:" + url); + } + } + } catch (IOException e) { + System.out.println("post请求提交失败:" + url); + } + return jsonResult; + } + + /** + * 发送get请求 + * + * @param url + * 路径 + * @return + */ + public static String httpGet(String url) { + // get请求返回结果 + JSONObject jsonObject = null; + String strResult = ""; + try { + DefaultHttpClient client = new DefaultHttpClient(); + // 发送get请求 + HttpGet request = new HttpGet(url); + HttpResponse response = client.execute(request); + /** 请求发送成功,并得到响应 **/ + if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) { + /** 读取服务器返回过来的json字符串数据 **/ + strResult = EntityUtils.toString(response.getEntity()); + /** 把json字符串转换成json对象 **/ + url = URLDecoder.decode(url, "UTF-8"); + } else { + System.out.println("get请求提交失败:" + url); + } + } catch (IOException e) { + System.out.println("get请求提交失败:" + url); + } + return strResult; + } + + /** + * 向指定 URL 发送POST方法的请求 + * + * @param url + * 发送请求的 URL + * @param param + * 请求参数,请求参数应该是 name1=value1&name2=value2 的形式。 + * @return 所代表远程资源的响应结果 + */ + public static String sendPost(String url, JSONObject param) { + PrintWriter out = null; + BufferedReader in = null; + String result = ""; + try { + URL realUrl = new URL(url); + // 打开和URL之间的连接 + URLConnection conn = realUrl.openConnection(); + // 设置通用的请求属性 + conn.setRequestProperty("accept", "*/*"); + conn.setRequestProperty("connection", "Keep-Alive"); + conn.setRequestProperty("user-agent", + "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); + // 发送POST请求必须设置如下两行 + conn.setDoOutput(true); + conn.setDoInput(true); + // 获取URLConnection对象对应的输出流 + out = new PrintWriter(conn.getOutputStream()); + StringEntity entity = new StringEntity(param.toString(), "utf-8"); + // 发送请求参数 + out.print(entity); + // flush输出流的缓冲 + out.flush(); + // 定义BufferedReader输入流来读取URL的响应 + in = new BufferedReader( + new InputStreamReader(conn.getInputStream())); + String line; + while ((line = in.readLine()) != null) { + result += line; + } + } catch (Exception e) { + System.out.println("发送 POST 请求出现异常!" + e); + e.printStackTrace(); + } + // 使用finally块来关闭输出流、输入流 + finally { + try { + if (out != null) { + out.close(); + } + if (in != null) { + in.close(); + } + } catch (IOException ex) { + ex.printStackTrace(); + } + } + return result; + } + + public static String doPost(String url, Map params, + String charset) { + StringBuffer response = new StringBuffer(); + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(url); + // 设置Http Post数据 + method.setRequestHeader("Content-Type", + "application/x-www-form-urlencoded;charset=" + charset); + if (params != null) { + Set keySet = params.keySet(); + NameValuePair[] param = new NameValuePair[keySet.size()]; + int i = 0; + for (String key : keySet) { + param[i] = new NameValuePair(key, params.get(key)); + i++; + } + method.setRequestBody(param); + } + InputStream responseBodyStream = null; + InputStreamReader streamReader = null; + BufferedReader reader = null; + try { + client.executeMethod(method); + if (method.getStatusCode() == HttpStatus.SC_OK) { + responseBodyStream = method.getResponseBodyAsStream(); + streamReader = new InputStreamReader(responseBodyStream, + charset); + reader = new BufferedReader(streamReader); + String line; + while ((line = reader.readLine()) != null) { + response.append(line); + } + } + } catch (IOException e) { + } finally { + try { + responseBodyStream.close(); + streamReader.close(); + reader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + method.releaseConnection(); + } + return response.toString(); + } + + public static String transport(String url, String message) { + StringBuffer sb = new StringBuffer(); + try { + URL urls = new URL(url); + HttpURLConnection uc = (HttpURLConnection) urls.openConnection(); + uc.setRequestMethod("POST"); + uc.setRequestProperty("content-type", + "application/x-www-form-urlencoded"); + uc.setRequestProperty("charset", "UTF-8"); + uc.setDoOutput(true); + uc.setDoInput(true); + uc.setReadTimeout(10000); + uc.setConnectTimeout(10000); + OutputStream os = uc.getOutputStream(); + DataOutputStream dos = new DataOutputStream(os); + dos.write(message.getBytes("utf-8")); + dos.flush(); + os.close(); + BufferedReader in = new BufferedReader(new InputStreamReader( + uc.getInputStream(), "utf-8")); + String readLine = ""; + while ((readLine = in.readLine()) != null) { + sb.append(readLine); + } + in.close(); + } catch (Exception e) { + } + return sb.toString(); + } + +} + diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/node/FileDataValidateNode.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/node/FileDataValidateNode.java index 65679da..d60b959 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/node/FileDataValidateNode.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/node/FileDataValidateNode.java @@ -17,6 +17,7 @@ import com.seeyon.cap4.form.bean.FormDataMasterBean; import com.seeyon.ctp.common.AppContext; import com.seeyon.ctp.common.SystemEnvironment; +import java.math.BigDecimal; import java.math.RoundingMode; import java.text.NumberFormat; import java.text.ParseException; @@ -29,6 +30,10 @@ public class FileDataValidateNode extends ACommonSuperNode { private static Log log = Log.get(FileDataValidateNode.class); + // 定义常量:保留小数位数(金额计算建议6位,最终展示2位) + final int CALC_SCALE = 6; + final int SHOW_SCALE = 2; + protected ICstConfigApi cstConfigApi = (ICstConfigApi) AppContext.getBean("cstConfigApi"); @Override @@ -76,56 +81,82 @@ public class FileDataValidateNode extends ACommonSuperNode { // 创建DDZXX对象 JSONArray DDZXXS = new JSONArray(); -// 税率判断 +// 税率判断 & 金额计算逻辑 String taxRes = ""; - double zje = 0; - double sj = 0; - double bhsje = 0; +// 初始化所有金额为 BigDecimal.ZERO,避免空指针 + BigDecimal zje = BigDecimal.ZERO; + BigDecimal sj = BigDecimal.ZERO; + BigDecimal bhsje = BigDecimal.ZERO; for(String filePath : filePaths){ JSONArray jsonArray = fileUtil.getFileContent(filePath); context.setResponse(jsonArray.toString()); -// System.out.println("获取附件内容"+jsonArray); + log.info("处理文件:{},文件内容长度:{}", filePath, jsonArray.size()); +// System.out.println("获取附件内容"+jsonArray); for(int i = 0 ; i < jsonArray.size();i++){ JSONObject fileJson = jsonArray.getJSONObject(i); JSONArray SPS = fileJson.getJSONArray("SPS"); - log.info(SPS.size()+"批量开票文件行数"); + log.info("当前批次开票文件行数:{}", SPS.size()); for (int n = 0 ; n < SPS.size() ; n++){ JSONObject SP = SPS.getJSONObject(n); -// String SPBM = SP.getString("SPBM"); -// String XMMC = SP.getString("XMMC"); String SL = SP.getString("SL"); -// List taxRates = hxinvoiceDao.getTaxRateByTaxItemCode(SPBM); -// if(!taxRates.contains(SL)){ -// List listWithoutDuplicates = new ArrayList<>(new HashSet<>(taxRates)); -// taxRes = taxRes+SPBM+XMMC+"税率不在"+listWithoutDuplicates.toString()+"中、"; -// } -// 获取当前金额 +// 获取当前金额 String JE = SP.getString("JE"); -// 忽略千分位 - if(JE.contains(",")){ - try { - NumberFormat format = NumberFormat.getInstance(Locale.US); // 使用美国格式(千分位是逗号) - Number number = format.parse(JE); - double decimalValue = number.doubleValue(); - zje = zje +decimalValue; - } catch (ParseException e) { - context.back("金额填写异常,请检查金额字段是否为为数字格式"); - log.info("解析失败: " + e.getMessage()); - } - }else{ - // 当前金额转换成小数 - zje = zje +Double.parseDouble(JE); + // 1. 解析金额 JE(处理千分位、异常兜底) + BigDecimal jeBig; + try { + NumberFormat format = NumberFormat.getInstance(Locale.US); + Number number = format.parse(JE); + jeBig = new BigDecimal(number.toString()).setScale(2, RoundingMode.HALF_UP); + } catch (ParseException e) { + String errorMsg = "第" + (i+1) + "批次第" + (n+1) + "行金额解析失败:" + JE; + log.error(errorMsg, e); + context.back("金额填写异常,行号:" + (n+1) + ",请检查金额字段是否为数字格式"); + return context; + } + // 2. 累加总金额 zje + zje = zje.add(jeBig); + // 3. 解析税率 SL 并计算不含税金额 bhsje = JE/(1+SL) + BigDecimal slBig; + try { + slBig = new BigDecimal(SL); + } catch (NumberFormatException e) { + String errorMsg = "第" + (i+1) + "批次第" + (n+1) + "行税率解析失败:" + SL; + log.error(errorMsg, e); + context.back("税率填写异常,行号:" + (n+1) + ",请检查税率字段是否为数字格式"); + return context; + } + // 计算 1+税率,避免分母为0 + BigDecimal denominator = BigDecimal.ONE.add(slBig); + if (denominator.compareTo(BigDecimal.ZERO) == 0) { + String errorMsg = "第" + (i+1) + "批次第" + (n+1) + "行税率异常(1+税率=0):" + SL; + log.error(errorMsg); + context.back("税率异常,行号:" + (n+1) + ",税率不能为-1"); + return context ; } - bhsje = bhsje + (Double.parseDouble(JE)/(1+Double.parseDouble(SL))); + // 计算不含税金额:JE/(1+SL),指定精度和四舍五入 + BigDecimal currentBhsje = jeBig.divide(denominator, CALC_SCALE, RoundingMode.HALF_UP); + bhsje = bhsje.add(currentBhsje); + + // 4. 计算税金:JE - 不含税金额 (等价于 不含税金额*税率,更精准) + BigDecimal currentSj = jeBig.subtract(currentBhsje); + sj = sj.add(currentSj); + +// bhsje = bhsje + (Double.parseDouble(JE)/(1+Double.parseDouble(SL))); // sj = sj+(Double.parseDouble(JE)*Double.parseDouble(SL)); } } } + // 最终结果保留2位小数(符合财务展示规范) + BigDecimal finalZje = zje.setScale(SHOW_SCALE, RoundingMode.HALF_UP); + BigDecimal finalBhsje = bhsje.setScale(SHOW_SCALE, RoundingMode.HALF_UP); + BigDecimal finalSj = sj.setScale(SHOW_SCALE, RoundingMode.HALF_UP); + // if(taxRes.length()==0){ - formDataVo.getNewFieldDataMap().put("总金额合计", nf.format(zje)); - formDataVo.getNewFieldDataMap().put("税金合计", nf.format(zje-bhsje)); - formDataVo.getNewFieldDataMap().put("不含税金额合计", nf.format(bhsje)); +// 填充结果到表单 + formDataVo.getNewFieldDataMap().put("总金额合计", nf.format(finalZje)); + formDataVo.getNewFieldDataMap().put("税金合计", nf.format(finalSj)); + formDataVo.getNewFieldDataMap().put("不含税金额合计", nf.format(finalBhsje)); context.success("成功", false); // }else{ // taxRes = taxRes.substring(0,taxRes.length()-1)+"请重新填写"; diff --git a/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/quartz/QueryFastRedInvoiceResultQuartz.java b/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/quartz/QueryFastRedInvoiceResultQuartz.java index cc38da8..f299c81 100644 --- a/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/quartz/QueryFastRedInvoiceResultQuartz.java +++ b/v5/apps-customize/src/main/java/com/seeyon/apps/src_hxinvoice/quartz/QueryFastRedInvoiceResultQuartz.java @@ -61,16 +61,16 @@ public class QueryFastRedInvoiceResultQuartz extends AbstractQuartzTask { log.info("查询符合要求的数据量"+queryFastRedInvoices.size()); // 遍历查询到的所有冲红信息 for(Map queryFastRedInvoice:queryFastRedInvoices){ -// 调用接口查询当前冲红订单是否开票成功。 +// 调用接口查询当前冲红订单是否开票成功。 JSONObject jsonObject =invoiceService.queryFastRedInvoiceResult(methodName,queryFastRedInvoice); log.info("请求参数为"+jsonObject); -// 调用接口查询冲红结果 +// 调用接口查询冲红结果 JSONObject res = protUtil.doPost(jsonObject.toString(),"http://"+url); String contentStr =invoiceService.getInvoiceContentRes(res); JSONObject js = JSONObject.parseObject(contentStr); // log.info("转json"+js); if("000000".equals(js.getString("ZTDM"))){ -// 附件查询成功调用接口通过超级节点 +// 附件查询成功调用接口通过超级节点 JSONObject params = new JSONObject(); params.put("message", "开票完成!!!"); params.put("returnCode", 1); diff --git a/v5/apps-customize/src/main/java/com/seeyon/ctp/portal/sso/thirdpartyintegration/controller/ThirdpartyController.java b/v5/apps-customize/src/main/java/com/seeyon/ctp/portal/sso/thirdpartyintegration/controller/ThirdpartyController.java new file mode 100644 index 0000000..a3d0802 --- /dev/null +++ b/v5/apps-customize/src/main/java/com/seeyon/ctp/portal/sso/thirdpartyintegration/controller/ThirdpartyController.java @@ -0,0 +1,1602 @@ +/** + * $Author: tanmf $ + * $Rev: 50965 $ + * $Date:: 2015-07-30 09:49:55 +#$: + * + * Copyright (C) 2012 Seeyon, Inc. All rights reserved. + * + * This software is the proprietary information of Seeyon, Inc. + * Use is subject to license terms. + */ +package com.seeyon.ctp.portal.sso.thirdpartyintegration.controller; + +import com.seeyon.apps.addressbook.manager.AddressBookCustomerFieldInfoManager; +import com.seeyon.apps.addressbook.po.AddressBook; +import com.seeyon.ctp.common.file.model.CtpLocalFile; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import java.util.Properties; +import javax.annotation.PostConstruct; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import com.seeyon.apps.cip.portal.dynamic.CipAppLinkDynamicAction; +import com.seeyon.ctp.link.biz.ShortChainInterface; +import com.seeyon.ctp.login.online.LoginOpt; +import com.seeyon.ctp.util.annotation.Inject; +import com.seeyon.infra.spring_sdk_core.DynamicContext; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.web.servlet.ModelAndView; +import com.seeyon.apps.cip.api.portal.ThirdpartySpaceManagerApi; +import com.seeyon.apps.cip.custom.manager.CipCustomTaskManager; +import com.seeyon.apps.cip.util.CIPUtil; +import com.seeyon.apps.ldap.config.LDAPConfig; +import com.seeyon.ctp.common.AppContext; +import com.seeyon.ctp.common.GlobalNames; +import com.seeyon.ctp.common.ServerState; +import com.seeyon.ctp.common.SystemEnvironment; +import com.seeyon.ctp.common.authenticate.LockLoginInfoFactory; +import com.seeyon.ctp.common.authenticate.domain.User; +import com.seeyon.ctp.common.authenticate.domain.UserHelper; +import com.seeyon.ctp.common.authenticate.sso.SSOTicketManager; +import com.seeyon.ctp.common.authenticate.sso.SSOTicketManager.TicketInfo; +import com.seeyon.ctp.common.config.IConfigPublicKey; +import com.seeyon.ctp.common.config.SystemConfig; +import com.seeyon.ctp.common.config.manager.ConfigManager; +import com.seeyon.ctp.common.constants.Constants; +import com.seeyon.ctp.common.constants.Constants.login_useragent_from; +import com.seeyon.ctp.common.constants.LoginConstants; +import com.seeyon.ctp.common.constants.LoginResult; +import com.seeyon.ctp.common.constants.ProductEditionEnum; +import com.seeyon.ctp.common.constants.SystemProperties; +import com.seeyon.ctp.common.controller.BaseController; +import com.seeyon.ctp.common.exceptions.BusinessException; +import com.seeyon.ctp.common.exceptions.InfrastructureException; +import com.seeyon.ctp.common.flag.BrowserEnum; +import com.seeyon.ctp.common.flag.SysFlag; +import com.seeyon.ctp.common.i18n.LocaleContext; +import com.seeyon.ctp.common.i18n.ResourceUtil; +import com.seeyon.ctp.common.init.MclclzUtil; +import com.seeyon.ctp.common.po.config.ConfigItem; +import com.seeyon.ctp.common.po.usermessage.UserHistoryMessage; +import com.seeyon.ctp.common.security.SecurityHelper; +import com.seeyon.ctp.common.taglibs.functions.Functions; +import com.seeyon.ctp.common.thirdparty.ThirdpartyTicketManager; +import com.seeyon.ctp.common.usermessage.UserMessageManager; +import com.seeyon.ctp.common.usermessage.UserMessageUtil; +import com.seeyon.ctp.common.web.filter.CTPCsrfGuard; +import com.seeyon.ctp.login.LoginActiveX; +import com.seeyon.ctp.login.LoginControl; +import com.seeyon.ctp.login.UserUtil; +import com.seeyon.ctp.login.online.OnlineManager; +import com.seeyon.ctp.login.online.OnlineRecorder; +import com.seeyon.ctp.login.online.OnlineUser; +import com.seeyon.ctp.organization.OrgConstants; +import com.seeyon.ctp.organization.bo.V3xOrgMember; +import com.seeyon.ctp.organization.manager.OrgManager; +import com.seeyon.ctp.organization.manager.OrgManagerDirect; +import com.seeyon.ctp.portal.api.PortalApi; +import com.seeyon.ctp.portal.po.PortalHotspot; +import com.seeyon.ctp.portal.po.PortalLoginTemplate; +import com.seeyon.ctp.portal.po.PortalTemplateSetting; +import com.seeyon.ctp.portal.sso.SSOTicketBean; +import com.seeyon.ctp.portal.sso.thirdpartyintegration.ThirdpartySpace; +import com.seeyon.ctp.privilege.manager.PrivilegeMenuManager; +import com.seeyon.ctp.services.security.ServiceManager; +import com.seeyon.ctp.util.BeanUtils; +import com.seeyon.ctp.util.Cookies; +import com.seeyon.ctp.util.DateUtil; +import com.seeyon.ctp.util.LightWeightEncoder; +import com.seeyon.ctp.util.Strings; +import com.seeyon.ctp.util.UUIDLong; +import com.seeyon.ctp.util.annotation.NeedlessCheckLogin; +import com.seeyon.ctp.util.annotation.SetContentType; +import com.seeyon.ctp.util.json.JSONUtil; +import com.seeyon.v3x.mail.manager.MessageMailManager; + +/** + *

Title: A8单点登录第三方系统控制器

+ *

Description:

+ *

Copyright: Copyright (c) 2012

+ *

Company: seeyon.com

+ * @since CTP2.0 + */ +public class ThirdpartyController extends BaseController { + + private static final Log log = LogFactory.getLog(ThirdpartyController.class); + + private OrgManager orgManager; + + private OrgManagerDirect orgManagerDirect; + @Inject + private AddressBookCustomerFieldInfoManager addressBookCustomerFieldInfoManager; + + private MessageMailManager messageMailManager; + + private PrivilegeMenuManager privilegeMenuManager; + + private OnlineManager onlineManager; + + private UserMessageManager userMessageManager; + private CipCustomTaskManager cipCustomTaskManager; + + + private static Object isExceedMaxLoginNumberLock = new Object(); + + private PortalApi portalApi; + + private LoginControl loginControl; + + private SystemConfig systemConfig; + + private ConfigManager configManager; + + private static final int expiry = 60 * 60 * 24 * 1; + + //不需要做集群 + private static Map VlinkeParamMap ; + private ThirdpartySpaceManagerApi thirdpartySpaceManagerApi; + @Inject + private DynamicContext dynamicContext; + private CipAppLinkDynamicAction cipAppLinkDynamicAction = null; + public void setOrgManager(OrgManager orgManager) { + this.orgManager = orgManager; + } + + public void setOrgManagerDirect(OrgManagerDirect orgManagerDirect) { + this.orgManagerDirect = orgManagerDirect; + } + + public void setMessageMailManager(MessageMailManager messageMailManager) { + this.messageMailManager = messageMailManager; + } + + public void setOnlineManager(OnlineManager onlineManager) { + this.onlineManager = onlineManager; + } + + public void setUserMessageManager(UserMessageManager userMessageManager) { + this.userMessageManager = userMessageManager; + } + + public void setPortalApi(PortalApi portalApi) { + this.portalApi = portalApi; + } + + public void setLoginControl(LoginControl loginControl) { + this.loginControl = loginControl; + } + + public void setSystemConfig(SystemConfig systemConfig) { + this.systemConfig = systemConfig; + } + + public void setConfigManager(ConfigManager configManager) { + this.configManager = configManager; + } + private ShortChainInterface shortChainInterface; + public void setShortChainInterface(ShortChainInterface shortChainInterface) { + this.shortChainInterface = shortChainInterface; + } + /** + * 注入扩展接口实现 + */ + @PostConstruct + public void initialize() { + cipAppLinkDynamicAction = dynamicContext.getBean(CipAppLinkDynamicAction.class); + } + + static { + //V参数安全校验 + VlinkeParamMap = new HashMap(); + VlinkeParamMap.put("message.link.office.assetN.audit", 0); + VlinkeParamMap.put("message.link.office.assetN.view", 0); + VlinkeParamMap.put("message.link.office.autoN.audit", 0); + VlinkeParamMap.put("message.link.office.autoN.view", 0); + VlinkeParamMap.put("message.link.office.bookN.audit", 0); + VlinkeParamMap.put("message.link.office.bookN.lended", 0); + VlinkeParamMap.put("message.link.office.stockN.audit", 0); + VlinkeParamMap.put("message.link.office.stockN.view", 0); + } + + /** + * 打开第三方系统页面。如果没有进行单点登录,则单点登录以后再打开。 + * @param request + * @param response + * @return + * @throws Exception + */ + @NeedlessCheckLogin + public ModelAndView show(HttpServletRequest request, HttpServletResponse response) throws Exception { + User user = AppContext.getCurrentUser(); + String token = null; + if (user == null) { + token = request.getHeader("token"); + if (Strings.isEmpty(token)) { + token = request.getParameter("token"); + } + if (Strings.isEmpty(token)) { + token = Cookies.get(request, "token"); + } + ServiceManager.getInstance().initCurrentUser(request, token); + user = AppContext.getCurrentUser(); + } + if (user == null) { + OutputStream stream = response.getOutputStream(); + response.setCharacterEncoding("UTF-8"); + response.setContentType("text/html; charset=UTF-8"); + stream.write(ResourceUtil.getString("cip.user.loginagain").getBytes("UTF-8")); + stream.flush(); + stream.close(); + return null; + } + String loginName = user.getLoginName(); + String id = request.getParameter("id"); + String pageURL = request.getParameter("pageUrl"); + String extendParam = request.getParameter("extendParam"); + String width = request.getParameter("width"); + String height = request.getParameter("height"); + String fromClient = request.getParameter("fromClient"); + ThirdpartySpace tpSpace = thirdpartySpaceManagerApi.get(id); + String summaryId = request.getParameter("summaryId"); + String formRecordId = request.getParameter("formRecordId"); + String taskId = request.getParameter("taskId"); + Map map = new HashMap(); + + if(tpSpace != null){ + //没有登录地址,说明不需要sso,直接打开页面 + if(Strings.isBlank(tpSpace.getLoginURL(user.getId(), user.getLoginAccount()))){ + if(Strings.isBlank(taskId)) {//为空则为应用接入默认处理 + pageURL = tpSpace.getPageURL(user.getId(), user.getLoginAccount()); + }else { + map.put("taskId", taskId); + map.put("summaryId", summaryId); + map.put("spaceId", tpSpace); + map.put("formRecordId", formRecordId); + pageURL = cipCustomTaskManager.getFormCustomPageURL(map); + } + if(Strings.isNotBlank(pageURL)){//不为空,调用接口进行处理 + + + if(Strings.isNotBlank(width)){ + pageURL +="&width="+width+"&height="+height; + } + if(Strings.isNotBlank(extendParam)){ + pageURL+= "&extendParam="+ URLEncoder.encode(extendParam,"UTF-8"); + } + if (Strings.isNotBlank(fromClient)) { + + if ("weixin".equalsIgnoreCase(fromClient)) { + if (pageURL.contains("/mobile_portal/seeyon")) { + pageURL = StringUtils.substringAfter(pageURL, "mobile_portal"); + } + pageURL = CIPUtil.getUrlSuffixParam(pageURL, "cipWeinxinToken=" + token); + } else if ("m3".equalsIgnoreCase(fromClient)) { + if (pageURL.startsWith("/seeyon")) { + pageURL = "/mobile_portal"+pageURL; + } + } + } + response.sendRedirect(pageURL); + return null; + } + } + else{ + String ticket = thirdpartySpaceManagerApi.ssoLogin(id, loginName, user.getId(), user.getLoginAccount()); + + if(Strings.isNotBlank(ticket)){ + + + if(Strings.isBlank(taskId)) {//为空则为应用接入默认处理 + pageURL = tpSpace.getPageURL(user.getId(), user.getLoginAccount()); + }else { + map.put("taskId", taskId); + map.put("summaryId", summaryId); + map.put("spaceId", tpSpace); + map.put("formRecordId", formRecordId); + pageURL = cipCustomTaskManager.getFormCustomPageURL(map); + } + + if(Strings.isNotBlank(pageURL)){ + response.sendRedirect(doURL(pageURL, tpSpace.getTicketName(), ticket)); + + return null; + } + } + } + } + String errorTip = ResourceUtil.getString("cip.thirdspace.tip"); + PrintWriter out = response.getWriter(); + out.println(""); + + return null; + } + + /** + * 根据A8生成的ticket取得当前登录者的登录名
+ * + * URL:http://a8:80/seeyon/thirdparty.do?ticket=** + * + */ + @Override + @SetContentType + @NeedlessCheckLogin + public ModelAndView index(HttpServletRequest request,HttpServletResponse response) throws Exception { + String ticket = null; + request.setCharacterEncoding("UTF-8"); + response.setContentType("text/plain; charset=UTF-8"); + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "no-cache"); + + + Enumeration params = request.getParameterNames(); + while (params.hasMoreElements()) { + ticket = request.getParameter(String.valueOf(params.nextElement())); + + if (ticket != null) { + if(log.isDebugEnabled()){ + log.debug("ticket is :"+ticket); + } + String username = null; + ThirdpartyTicketManager.TicketInfo ticketInfo = ThirdpartyTicketManager.getInstance().getTicketInfo(ticket); + + if (ticketInfo == null) { + if(log.isDebugEnabled()){ + log.debug("ticket is not from thirdpartticket:"+ticket); + } + TicketInfo ssoTicketInf = SSOTicketManager.getInstance().getTicketInfo(ticket); + if (ssoTicketInf != null) { + username = ssoTicketInf.getUsername(); + if(log.isDebugEnabled()){ + log.debug("ticket is from ssoTicket,userName:"+username); + } + } + } + ThirdpartySpace tpSpace = null; + PrintWriter out = response.getWriter(); + if (ticketInfo != null) { + username = ticketInfo.getLoginName(); + if(log.isDebugEnabled()){ + log.debug("ticket is from thirdpartticket:"+ticket); + } + if(cipAppLinkDynamicAction!=null && !cipAppLinkDynamicAction.checkSSOAuth(ticketInfo.getSpaceId(),username)){ + out.println(URLEncoder.encode("无权限登录","UTF-8")); + return null; + } + tpSpace = thirdpartySpaceManagerApi.get(ticketInfo.getSpaceId()); + + if (tpSpace != null) { + username = ticketInfo.getLoginName(); + if(log.isDebugEnabled()){ + log.debug("ticket is from thirdpartticket,userName:"+username); + } + } + } + if (username != null) { + V3xOrgMember member = orgManager.getMemberByLoginName(username); + + // 做用户映射或做处理后才能返回第三方登录账号,否则返回OA登录账号 + String thirdUsername = username; + if (null != tpSpace) { + thirdUsername = tpSpace.getThirdpartyLoginName(username); + } + // 客开:默认返回人员编码 + thirdUsername = member.getCode(); + response.addHeader("LoginName", URLEncoder.encode(thirdUsername, "UTF-8")); + AddressBook addressBook = addressBookCustomerFieldInfoManager.getByMemberId(member.getId()); + if(null != addressBook) { + String code = addressBook.getExtAttr2(); + if(Strings.isNotBlank(code)) { + response.addHeader("ThirdPartyLoginName", code); + } + } + if (null != member) { + response.addHeader("MemberId", String.valueOf(member.getId())); + response.addHeader("MemberName", URLEncoder.encode(member.getName(), "UTF-8")); + + } else { + log.warn("OA集成第三方系统通过登录名称找人失败:" + username + " " + thirdUsername); + //CIPActionLogFactory.createLog(LogApplicationEnum.APPINTEGRATION, "单点登录","OA集成第三方系统通过登录名称找人失败:" + username + " " + thirdUsername, null, null, null); + } + if (AppContext.hasPlugin("m3")) { + response.addHeader("M3URL", URLEncoder.encode(PNSPropertyUtils.getInstance().getM3URL(), "UTF-8")); + } + out.println(URLEncoder.encode(thirdUsername, "UTF-8")); + } + + break; + + } + } +// 认证完成后销毁ticket + if (ticket != null) { + SSOTicketManager.getInstance().ticketExpired(ticket); + } + return null; + } + + /** + * 第三方系统退出时,通知A8一下
+ * + * URL:http://a8:80/seeyon/thirdparty.do?method=logoutNotify&ticket=** + * + * @param request + * @param response + * @return + * @throws Exception + */ + @SetContentType + @NeedlessCheckLogin + public ModelAndView logoutNotify(HttpServletRequest request, + HttpServletResponse response) throws Exception { + request.setCharacterEncoding("UTF-8"); + + response.setContentType("text/plain; charset=UTF-8"); + response.setHeader("Pragma", "No-cache"); + response.setHeader("Cache-Control", "no-cache"); + + Enumeration params = request.getParameterNames(); + + while(params.hasMoreElements()){ + String ticket = request.getParameter(String.valueOf(params.nextElement())); + + if(ticket != null){ + ThirdpartyTicketManager.TicketInfo ticketInfo = ThirdpartyTicketManager.getInstance().getTicketInfo(ticket); + + if(ticketInfo != null){ + ThirdpartyTicketManager.getInstance().removeTicketInfo(ticket); + break; + } + } + } + + return null; + } + + private static String doURL(String loginURL, String ticketName, String ticket) { + try { + String[] us = loginURL.split("[?]"); + String redirectURL = loginURL; + if(us.length < 2){ + return redirectURL + "?" + ticketName + "=" + ticket; + } + else{ + StringBuilder sb = new StringBuilder(redirectURL + "&from=A8&" + ticketName + "=" + ticket); + String internetURL=SystemEnvironment.getInternetSiteURL(); + + if(StringUtils.isNotBlank(internetURL)){ + sb.append("&interneturl="+internetURL); + } + return sb.toString(); + } + + } + catch (Exception e) { + log.error(e.getMessage(), e); + } + + return null; + } + + /** + * + * 外部系统直接打开A8的主题,并能够处理
+ * + * SSO方式:http://***:80/seeyon/thirdparty.do?method=access&enc=Encoder{C=ticket&P=/*.do?...}
+ * 消息方式:http://***:80/seeyon/thirdparty.do?method=access&enc=Encoder{MID=历史消息ID&L=message.link.***&T=timestamp}&P=**&P=**
+ * + * @param request + * @param response + * @return + * @throws Exception + */ + @NeedlessCheckLogin + public ModelAndView access(HttpServletRequest request, HttpServletResponse response) throws Exception { + String param = request.getQueryString(); + String replace = param.replace("method=access&", ""); + String enc = getEnc(request); + if(enc == null) { + ModelAndView mv = new ModelAndView("thirdparty/thirdpartyAccess"); + mv.addObject("ExceptionKey", "mail.read.alert.wuxiao"); + return mv; + } + //第三方访问判断,如果是则直接返回不需要登录 + Map encMap = parseEnc(enc); + if (Strings.isNotBlank(encMap.get("P"))) { + return getMailInfo(request, response); + } + + String loginFrom= request.getParameter("loginFrom"); + if (AppContext.getRawSession() == null){ + AppContext.initSystemEnvironmentContext(request, response, true);; + } + User currentUser= AppContext.getCurrentUser(); + //判断是否已验证登录 + V3xOrgMember user = getUserInfo(request); + if(currentUser != null && user != null) { + if(currentUser.isDefaultGuest()) { + HttpSession session = request.getSession(); + session.removeAttribute("com.seeyon.current_user");//session.setAttribute("com.seeyon.current_user", user) + }else if (user.getId().equals(currentUser.getId())){ + return getMailInfo(request, response); + } + }else{ + boolean hasAccess = false; + ConfigItem sysMailLinkLoginSwitch = configManager.getConfigItem("sysMailLinkLoginSwitch", "sysMailLinkLoginSwitch"); + if(sysMailLinkLoginSwitch != null){ + hasAccess = "false".equals(sysMailLinkLoginSwitch.getConfigValue()); + } + if(hasAccess){ + return getMailInfo(request, response); + } + } + + Map festivalLoginPageFileIdsMap = portalApi.getFestivalLoginPageFileIds();//特殊日期登录页设置 + boolean toLoginPage=false; + List festivalLoginPageFileIds=null; + if(MapUtils.isNotEmpty(festivalLoginPageFileIdsMap)){ + toLoginPage = MapUtils.getBoolean(festivalLoginPageFileIdsMap, "festivalLoginPageFlag", false); + Object festivalLoginPageFileIdsObj=festivalLoginPageFileIdsMap.get("fileIdList"); + if(festivalLoginPageFileIdsObj!=null && festivalLoginPageFileIdsObj instanceof List){ + festivalLoginPageFileIds=(List)festivalLoginPageFileIdsObj; + } + } + + PortalTemplateSetting setting = (PortalTemplateSetting) request.getAttribute("PortalLoginTemplateSetting"); + Long loginAccountId = (Long) request.getAttribute("loginAccountId"); + List hotSpots = null; + if(setting == null){ + setting= portalApi.getLoginSettingBy(OrgConstants.GROUPID.longValue(), OrgConstants.GROUPID.longValue()); + hotSpots = portalApi.getHotSpotsBy(setting.getTemplateId(), null, OrgConstants.GROUPID.longValue(), OrgConstants.GROUPID.longValue()); + } else { + hotSpots = portalApi.getHotSpotsBy(setting.getTemplateId(), null, loginAccountId, loginAccountId); + } + if(CollectionUtils.isNotEmpty(festivalLoginPageFileIds) && CollectionUtils.isNotEmpty(hotSpots)){ + //用户设置了有效的特殊日期登录页,需要修改热点值 + List festivalHotSpotList=new ArrayList<>(hotSpots.size()); + for (PortalHotspot hotSpot : hotSpots) { + String hotspotkey = hotSpot.getHotspotkey(); + if("changebgi".equals(hotspotkey)){ + //需要把这个给替换成特殊节日的 + PortalHotspot festivalHostSpot=BeanUtils.clone(hotSpot); + StringBuffer hotValuebuffer=new StringBuffer(); + StringBuffer ext3Buffer=new StringBuffer(); + for (String fileId : festivalLoginPageFileIds) { + hotValuebuffer.append("fileId=").append(fileId).append(","); + ext3Buffer.append("1,"); + } + String hotValue=new String(hotValuebuffer); + String ext3=new String(ext3Buffer); + if(hotValue.length()>1){ + hotValue=hotValue.substring(0,hotValue.length()-1); + ext3=ext3.substring(0,ext3.length()-1); + } + festivalHostSpot.setHotspotvalue(hotValue); + festivalHostSpot.setExt3(ext3); + festivalHotSpotList.add(festivalHostSpot); + }else if("changebgtype".equals(hotspotkey)){ + PortalHotspot festivalHostSpot=BeanUtils.clone(hotSpot); + String hotspotvalue = festivalHostSpot.getHotspotvalue(); + if("video".equals(hotspotvalue)){ + festivalHostSpot.setHotspotvalue("image"); + } + festivalHotSpotList.add(festivalHostSpot); + }else { + festivalHotSpotList.add(hotSpot); + } + } + hotSpots=festivalHotSpotList; + + } + + PortalLoginTemplate plt = portalApi.getLoginTemplate(setting.getTemplateId()); + ModelAndView modelAndView = new ModelAndView("thirdparty/login"); + Locale currentLocale = LocaleContext.make4Frontpage(request); + List localeCode = new ArrayList(); + Map localeCodeCfg = new HashMap(); + localeCode.add(localeCodeCfg); + localeCodeCfg.put("eleid", LoginConstants.LOCALE); + localeCodeCfg.put("defaultValue", currentLocale.toString()); + localeCodeCfg.put("options", getLocaleInfo()); + + String loginTitleName = Functions.getPageTitle(); + modelAndView.addObject("templatesJsonStr", JSONUtil.toJSONString(plt)); + modelAndView.addObject("hotSpotsJsonStr", JSONUtil.toJSONString(hotSpots)); + String layout = "all"; + if (CollectionUtils.isNotEmpty(hotSpots) && plt.getPreset() == 1) { + //预置的 + for (PortalHotspot hotspot : hotSpots) { + if ("note".equals(hotspot.getHotspotkey())) { + String noteName = hotspot.getHotspotvalue(); + if (noteName == null || noteName.trim().length() == 0 || "null".equals(noteName)) { + loginTitleName = Functions.getVersion(); + } else { + String suffix = SystemProperties.getInstance().getProperty("portal.loginTitle"); + if((Boolean)(SysFlag.sys_isGovVer.getFlag())){ + //G6的版本国际化比较特殊需要特殊处理一下看看是否是个性化过 + if(noteName!=null&&(noteName.equals(ResourceUtil.getString(noteName)))){ + loginTitleName = ResourceUtil.getString(noteName) + " " + Functions.getVersion(); + }else { + loginTitleName = ResourceUtil.getString(noteName + suffix) + " " + Functions.getVersion(); + } + } + else{ + loginTitleName = ResourceUtil.getString(noteName + suffix) + " " + Functions.getVersion(); + } + } + } + if ("layout".equals(hotspot.getHotspotkey())) { + layout = hotspot.getHotspotvalue(); + } + if("showQr".equals(hotspot.getHotspotkey())){ + String item="qrInfoUpdate"; + String cacheDirect = portalApi.getPortalGlobalConfigFromCacheDirect(item, -1L, -1L); + boolean isupdate=false; + if(cacheDirect==null){ + //没有升级过,升级处理一下 + if(!"1".equals(hotspot.getHotspotvalue())){ + portalApi.updateQrInfo(item); + isupdate=true; + } + } + if(isupdate){ + modelAndView.addObject("showQr", "1".equals(hotspot.getHotspotvalue())); + }else { + modelAndView.addObject("showQr",true); + } + } + if("QrInfo".equals(hotspot.getHotspotkey())){ + modelAndView.addObject("QrInfo", hotspot.getHotspotvalue()); + } + if("shownumber".equals(hotspot.getHotspotkey())) { + modelAndView.addObject("shownumber", !"hide".equals(hotspot.getHotspotvalue())); + } + } + } + Map bgImgSize=portalApi.getCurrentLoginImgSize(hotSpots); + modelAndView.addObject("bgImgSize", JSONUtil.toJSONString(bgImgSize)); + modelAndView.addObject("layout", layout); + + Map activeXMap = loginControl.getLoginActiveXes(); + StringBuilder activeXLoader = new StringBuilder(); + if (activeXMap != null) { + Iterator ite = activeXMap.keySet().iterator(); + String key; + while (ite.hasNext()) { + key = ite.next(); + LoginActiveX loginActiveX = activeXMap.get(key); + String activeX = loginActiveX.getActiveX(request, response); + activeXLoader.append(activeX); + } + } + + modelAndView.addObject("currentLocale", currentLocale); + modelAndView.addObject("locales", JSONUtil.toJSONString(localeCode)); + modelAndView.addObject("loginTitleName", loginTitleName); + modelAndView.addObject("productCategory", ProductEditionEnum.getCurrentProductEditionEnum().getName()); + //并发数 + modelAndView.addObject("ServerState", ServerState.getInstance().isShutdown()); + modelAndView.addObject("ServerStateComment", Strings.toHTML(ServerState.getInstance().getComment())); + if (onlineManager == null) { + modelAndView.addObject("OnlineNumber", "..."); + } else { + modelAndView.addObject("OnlineNumber", this.onlineManager.getOnlineNumber()); + } +// if(systemConfig == null) +// systemConfig = (SystemConfig)AppContext.getBean("systemConfig"); + boolean verrifyCodeEnabled = "enable".equals(this.systemConfig.get("verify_code")); + modelAndView.addObject("verifyCode", verrifyCodeEnabled); + modelAndView.addObject("activeXLoader", activeXLoader.toString()); + if (LDAPConfig.getInstance().getIsEnableLdap() + && request.getServerName().equalsIgnoreCase(LDAPConfig.getInstance().getA8ServerDomainName())) { + String adssoToken = request.getHeader("authorization"); + if (adssoToken == null) { + modelAndView.addObject("adSSOEnable", true); + } else { + // modelAndView.addObject("adLoginName",ADSSOEvent.getInstance().getADLoginName(adssoToken)); + modelAndView.addObject("authorization", adssoToken); + } + } + loadCAPlugIn(request, modelAndView); + //modelAndView.addObject("hasPluginCA", true); + String exceptPlugin = ""; + String ucServerIpOrPort = "NULL/NULL/5222"; + if (!AppContext.hasPlugin("videoconference")) { + exceptPlugin += "@videoconf"; + } + if (!AppContext.hasPlugin("https")) { + exceptPlugin += "@seeyonRootCA"; + } + if (!AppContext.hasPlugin("identification")) { + exceptPlugin += "@identificationDog"; + } + if (!AppContext.hasPlugin("officeOcx")) { + exceptPlugin += "@officeOcx"; + } + if (!AppContext.hasPlugin("barCode")) { + exceptPlugin += "@erweima"; + } + if (!AppContext.hasPlugin("u8")) { + exceptPlugin += "@U8Reg"; + } + exceptPlugin += "@wizard"; + + //有zx插件才显示 + if (!AppContext.hasPlugin("zx")) { + exceptPlugin += "@zhixin"; + } + + modelAndView.addObject("ucServerIpOrPort", ucServerIpOrPort); + modelAndView.addObject("exceptPlugin", exceptPlugin); + // 判断是否能发送手机短信 + boolean isCanUseSMS = false; + modelAndView.addObject("isCanUseSMS", isCanUseSMS); + + //判断系统配置是否启用口令加密传输,启用则生成加密种子传到页面 + if (SecurityHelper.isCryptPassword()){ + modelAndView.addObject("_SecuritySeed", SecurityHelper.getSessionContextSeed()); + HttpSession currentSession = request.getSession(false); + if(currentSession!=null){ + int sessionTimeOutInSecond = currentSession.getMaxInactiveInterval();//获取Session的失效时间 + modelAndView.addObject("_SecuritySeedTimeOut",sessionTimeOutInSecond); + } + } + //产品服务到期,产品授权到期 + ConfigItem dueRemind=configManager.getConfigItem("login_page", "dueRemind"); + modelAndView.addObject("dueRemindV",dueRemind==null?"1":dueRemind.getConfigValue()); + if(dueRemind==null||"1".equals(dueRemind.getConfigValue())){ + modelAndView.addObject("dueRemind",portalApi.getDueRemind()); + } + + String loginPageURL = (String) request.getAttribute("loginPageURL"); + Cookie cookie = null; + if(loginPageURL == null){ + loginPageURL=""; + } + cookie = new Cookie("loginPageURL", loginPageURL); + cookie.setMaxAge(expiry); + cookie.setPath("/"); + response.addCookie(cookie); + modelAndView.addObject("loginFrom", loginFrom); + String rowList = request.getParameter("rowList");//显示字段 + String btnbgc = request.getParameter("btnbgc");//登录框按钮颜色 + String btombgc = request.getParameter("btombgc");//登录框底部色 + String bgc = request.getParameter("bgc");//背景颜色 + if(Strings.isBlank(rowList)){ + rowList= ""; + } + if(Strings.isBlank(btnbgc)){ + btnbgc= ""; + } + if(Strings.isBlank(btombgc)){ + btombgc= ""; + } + if(Strings.isBlank(bgc)){ + bgc= ""; + } + modelAndView.addObject("rowList", rowList); + modelAndView.addObject("btnbgc", btnbgc); + modelAndView.addObject("btombgc", btombgc); + modelAndView.addObject("bgc", bgc); + String canLocation = onlineManager.getCanLocation(); + String locationUrl = SystemProperties.getInstance().getProperty("portal.weather.locationUrl"); + modelAndView.addObject("canLocation",canLocation); + modelAndView.addObject("locationUrl",locationUrl); + + modelAndView.addObject("isShowVerifyCode",LockLoginInfoFactory.getInstance().getShowVerifyCode(Strings.getRemoteAddr(request))); + modelAndView.addObject("mailParam",replace); + //回填用户名 + V3xOrgMember userInfo = getUserInfo(request); + if(userInfo != null) { + modelAndView.addObject("loginName",userInfo.getLoginName()); + } else { + ModelAndView mv = new ModelAndView("thirdparty/thirdpartyAccess"); + mv.addObject("ExceptionKey", "mail.read.alert.guoqi"); + return mv; + + } + return modelAndView; + } + + private static Object o = null; + private static int serverType; + private static int m1Type; + + private static void init(){ + if(o != null){ + return; + } + + o = MclclzUtil.invoke(c1, "getInstance", new Class[] { String.class }, null, new Object[] { "" }); + + serverType = (Integer) MclclzUtil.invoke(c1, "getserverType", null, o, null); + m1Type = (Integer) MclclzUtil.invoke(c1, "getm1Type", null, o, null); + } + + private static final Class c1 = MclclzUtil.ioiekc("com.seeyon.ctp.permission.bo.LicensePerInfo"); + + public void setPrivilegeMenuManager(PrivilegeMenuManager privilegeMenuManager) { + this.privilegeMenuManager = privilegeMenuManager; + } + public static class PNSPropertyUtils { + + private static final Log logger = LogFactory.getLog(PNSPropertyUtils.class); + + private static String FILE_PATH; + private static PNSPropertyUtils property; + + private static Properties properties; + + private PNSPropertyUtils() { + StringBuilder sb = new StringBuilder(SystemEnvironment.getApplicationFolder()) + .append(File.separator).append("WEB-INF") + .append(File.separator).append("cfgHome") + .append(File.separator).append("plugin") + .append(File.separator).append("m3") + .append(File.separator).append("pns.properties"); + FILE_PATH = sb.toString(); + } + + public static final PNSPropertyUtils getInstance() { + if (property == null) { + synchronized (PNSPropertyUtils.class) { + if (property == null) { + property = new PNSPropertyUtils(); + init(); + } + } + } + return property; + } + + private static void init() { + CtpLocalFile file = new CtpLocalFile(FILE_PATH); + + if (file.exists()) { + properties = new Properties(); + InputStream in = null; + try { + in = new FileInputStream(file); + properties.load(in); + } catch (FileNotFoundException e) { + logger.error(e); + } catch (IOException e) { + logger.error(e); + } finally { + if (in != null) { + try { + in.close(); + } catch (IOException e) { + logger.error(e); + } + } + } + + } + + } + + public final String getProperty(String key) { + if (properties != null) { + return properties.getProperty(key); + } + return null; + } + + public void setProperty(String key, String value) { + + CtpLocalFile file = new CtpLocalFile(FILE_PATH); + if (file.exists()) { + OutputStream out = null; + try { + out = new FileOutputStream(file); + properties.setProperty(key, value); + properties.store(out, "Update PNS Property : [key=" + key + + "; value=" + value + "]."); + } catch (FileNotFoundException e) { + logger.error(e); + } catch (IOException e) { + logger.error(e); + } finally { + if (out != null) { + try { + out.flush(); + out.close(); + } catch (IOException e) { + logger.error(e); + } + } + } + + } + } + + public String getM3URL() { + String serverType = property.getProperty("pns.server.type"); + String serverIp = property.getProperty("pns.server.ip"); + String serverPort = property.getProperty("pns.server.port"); + String serverNamespase = property.getProperty("pns.server.namespase"); + + return new StringBuilder(serverType).append("://").append(serverIp).append(":").append(serverPort) + .append(serverNamespase).toString(); + } + } + private String getM3ServerAccessURL() { + String defaultURL = ""; + HttpServletRequest request = (HttpServletRequest) AppContext.getThreadContext(GlobalNames.THREAD_CONTEXT_REQUEST_KEY); + HttpSession session = request.getSession(); + if(session == null) { + return defaultURL; + } + String result = (String) session.getAttribute("ClientRequestPath"); + if (result == null) { + result = defaultURL; + } + return result; + } + + public void setThirdpartySpaceManagerApi(ThirdpartySpaceManagerApi thirdpartySpaceManagerApi) { + this.thirdpartySpaceManagerApi = thirdpartySpaceManagerApi; + } + + + + public void setCipCustomTaskManager(CipCustomTaskManager cipCustomTaskManager) { + this.cipCustomTaskManager = cipCustomTaskManager; + } + + @NeedlessCheckLogin + public ModelAndView mailAuth(HttpServletRequest request, HttpServletResponse response) throws Exception { + String loginFrom= request.getParameter("loginFrom"); + HttpSession session = request.getSession(false); + + try { + //校验码转移 + String verifyCode = null; + //iTrusCA校验码转移 + String oriToSign = null; + //登陆口令加密种子 + String seed = null; + //判断失败次数达到演示验证码,切换用户登录,也需要进行验证码验证 + Object isShowVerifyCode = null; + if (session != null) { + verifyCode = (String) session.getAttribute(LoginConstants.VerifyCode); + oriToSign = (String) session.getAttribute("ToSign"); + seed = (String)session.getAttribute(GlobalNames.SESSION_CONTEXT_SECURITY_SEED_KEY); + isShowVerifyCode = session.getAttribute("userShowVerifyCode"); + try { + session.invalidate(); + } catch (Throwable t) { + log.error(t.getMessage(),t); + } + } + + session = request.getSession(true); + session.setAttribute("userShowVerifyCode", isShowVerifyCode); + AppContext.putThreadContext(GlobalNames.THREAD_CONTEXT_SESSION_KEY, session); + if (Strings.isNotBlank(verifyCode)) { + AppContext.putSessionContext(LoginConstants.VerifyCode, verifyCode); + log.info("verifyCode="+verifyCode); + } + if (Strings.isNotBlank(oriToSign)) { + AppContext.putSessionContext("ToSign", oriToSign); + } + if (Strings.isNotBlank(seed)) { + AppContext.putSessionContext(GlobalNames.SESSION_CONTEXT_SECURITY_SEED_KEY, seed); + } + //Session线程变量更新 + AppContext.putThreadContext(GlobalNames.THREAD_CONTEXT_SESSION_KEY, session); + + //OA-180658,对于审计管理员的特殊处理,如果没有开启审计管理员,那么不应该走密码校验 + String login_username = request.getParameter("login_username"); + if("audit-admin".equals(login_username)){ + String isAuditAdminSwitch = systemConfig.get(IConfigPublicKey.AUDIT_ENABLE); + if(!("enable".equals(isAuditAdminSwitch))){ + //审计管理员未开启直接提示用户不存在 + LocaleContext.make4Frontpage(request); + throw new BusinessException(ResourceUtil.getString("login.label.ErrorCode.1")); + } + } + if(loginControl == null) { + loginControl =(LoginControl) AppContext.getBean("loginControl"); + } + LoginResult transDoLogin = loginControl.transDoLogin(request, session, response); + + if(transDoLogin.isOK()){ + return getMailInfo(request, response); + } + } catch (Throwable e) { + BusinessException be = getBusinessException(e); + if(!(e instanceof InfrastructureException)){ + log.error(e.getLocalizedMessage(),e); + }else{ +// session.setAttribute("login.result", e.getCause().getLocalizedMessage()); + // 用户名密码错误不输出堆栈信息 + log.debug(e.getCause().getLocalizedMessage(),e); + } + if(Strings.isNotBlank(loginFrom) && "loginPortal".equals(loginFrom)){ + response.addHeader("LoginOk", "fail"); + response.setContentType("text/html; charset=UTF-8"); + PrintWriter out = response.getWriter(); + String message= ""; + if(null!=be){ + message= be.getMessage(); + } + if(Strings.isNotBlank(message)){ + message= message.replaceAll("
", "\n\r").replaceAll("", "").replaceAll("", ""); + } + if(Strings.isBlank(message)){ + message= ResourceUtil.getString("login.label.ErrorCode.1"); + } + out.println(message); + out.close(); + }else{ + goout(request, session, response, be, true); + } + } + return null; + + } + + /** + * 获取链接的内容 + * @param request + * @param response + * @return + * @throws Exception + */ + private ModelAndView getMailInfo(HttpServletRequest request, HttpServletResponse response)throws Exception{ + long time1 = System.currentTimeMillis(); + + ModelAndView mv = new ModelAndView("thirdparty/thirdpartyAccess"); + + if(Strings.isBlank(SystemEnvironment.getInternetSiteURL())){ + mv.addObject("ExceptionKey", "mail.read.alert.wuxiao"); + return mv; + } + + Locale locale = LocaleContext.make4Frontpage(request); + HttpSession session = request.getSession(); + String openFrom = request.getParameter("from"); + Long loginTime = System.currentTimeMillis(); + String enc = getEnc(request); + if (enc == null) { + mv.addObject("ExceptionKey", "mail.read.alert.wuxiao"); + return mv; + } + + Map encMap =parseEnc(enc); + + String link = null; + long memberId = -1; + login_useragent_from userAgentFrom = login_useragent_from.pc; + + String linkType = encMap.get("L"); + String path = encMap.get("P"); + if (Strings.isNotBlank(linkType)) { + String startTimeStr= "0"; + if(encMap.containsKey("T")){ + startTimeStr= encMap.get("T"); + startTimeStr= startTimeStr.trim(); + } + Long timeStamp = 0L; + if(NumberUtils.isNumber(startTimeStr)){ + timeStamp= Long.parseLong(startTimeStr); + }else{ + timeStamp= DateUtil.parse(startTimeStr,DateUtil.YEAR_MONTH_DAY_HOUR_MINUTE_SECOND_PATTERN).getTime(); + } + int contentLinkValidity = 24; + if (messageMailManager != null) { + contentLinkValidity = messageMailManager.getContentLinkValidity(); + } + if ((System.currentTimeMillis() - timeStamp) / 1000 > contentLinkValidity * 60 * 60) { + mv.addObject("ExceptionKey", "mail.read.alert.guoqi"); + return mv; + } + String _messageId = encMap.get("MID"); + if (_messageId == null) { + mv.addObject("ExceptionKey", "mail.read.alert.wuxiao"); + return mv; + } + Long messageId = Long.parseLong(_messageId); + UserHistoryMessage msg = this.userMessageManager.getUserHistoryMsgById(messageId); + if(msg == null) { + mv.addObject("ExceptionKey", "mail.read.alert.wuxiao"); + return mv; + } + + memberId = msg.getReceiverId(); + + link = UserMessageUtil.getMessageLinkType().get(linkType); + + if (link == null) { + mv.addObject("ExceptionKey", "mail.read.alert.wuxiao"); + return mv; + } + String[] linkParams = request.getParameterValues("P"); + java.text.MessageFormat formatter = new java.text.MessageFormat(link); + int formatsCount=formatter.getFormats().length; + if (linkParams != null) { + if(formatsCount>linkParams.length){ + String [] params=new String[formatsCount]; + for(int i=0;i resources = privilegeMenuManager.getByMember(currentUser.getId(), currentUser.getLoginAccount()); + + List resList = new ArrayList(); + for (PrivMenuBO res : resources.values()) { + String code = res.getResourceCode(); + if(code == null){ + continue; + } + resList.add(code); + }*/ + UserHelper.setResourceJsonStr(JSONUtil.toJSONString(privilegeMenuManager.getResourceCode(currentUser.getId(), currentUser.getLoginAccount()))); + +// CurrentUser.set(currentUser); + + isNeedLogout = true; + } + + long time3 = System.currentTimeMillis(); + log.info("User耗时" + (time3 - time2) + "MS"); + + //加V参数 + if (Strings.isNotBlank(linkType)) { + //获取V参数位置 + Integer paramIndex = ThirdpartyController.VlinkeParamMap.get(linkType); + //获取所有参数 + String[] linkParams = request.getParameterValues("P"); + if (paramIndex != null) { + if (linkParams.length > paramIndex) { + String paramValue = linkParams[paramIndex]; + if (Strings.isNotBlank(paramValue)) { + String vlink = SecurityHelper.func_digest(paramValue); + int _index = link.indexOf("&v="); + if (Strings.isNotBlank(link) && _index > -1) { + //能找到V参数 + //取V前边的 + String beforeLink = link.substring(0,_index); + //获取V后边的 + String afterLink = link.substring(_index + 1, link.length()); + //判断V后边是否还有&符号 + int _indexAfter = afterLink.indexOf("&"); + if (_indexAfter > -1) { + //获取最后的字符串 + afterLink = afterLink.substring(_indexAfter, afterLink.length()); + link = beforeLink + "&v=" + vlink + afterLink; + } else { + link = beforeLink + "&v=" + vlink; + } + } else { + //找不到V参数 + vlink = "&v=" + vlink; + link = link + vlink; + } + } + } + } + } + + long time4 = System.currentTimeMillis(); + log.info("Link耗时" + (time4 - time3) + "MS"); + + init(); + + OnlineUser onlineUser = OnlineRecorder.getOnlineUser(currentUser); + //并发数控制 + if (serverType == 2) {//server并发控制 + synchronized (isExceedMaxLoginNumberLock) { + if(onlineUser == null){ + boolean isExceedMaxLoginNumber = OnlineRecorder.isExceedMaxLoginNumberServer(); + + if(isExceedMaxLoginNumber){ + boolean isOnline = isOnline(currentUser); + if(!isOnline) { + mv.addObject("ExceptionKey", "mail.read.alert.ExceedMaxLoginNumber"); + return mv; + } + } + String serverPermissionType = (String) MclclzUtil.invoke(c1, "getServerPermissionType", null, o, null); + // 分单位并发控制 + if ("2".equals(serverPermissionType)) { + if (OnlineRecorder.isExceedMaxLoginNumberServerInAccount(currentUser.getLoginAccount())) { + boolean isOnline = isOnline(currentUser); + if(!isOnline) { + mv.addObject("ExceptionKey", "login.label.ErrorCode.30"); + return mv; + } + } + } + } +// onlineManager.updateOnlineState(currentUser); + LoginOpt.loginCore(currentUser); + } + } + + link = link + (link.contains("?") ? "&" : "?") + "_isModalDialog=true"; + if (link.indexOf("&openFrom") > -1) { + link = link + "&extFrom="+ Strings.escapeNULL(openFrom, ""); + } else { + link = link + "&openFrom="+ Strings.escapeNULL(openFrom, ""); + } + if ("ucpc".equals(openFrom)) { + link = link + "&from=a8genius"; + } + CTPCsrfGuard csrfGuard = CTPCsrfGuard.getInstance(); + if(csrfGuard.isEnabled()){ + csrfGuard.updateToken(session); + link += Functions.csrfSuffix(); + } + mv.addObject("link", link); + mv.addObject("isNeedLogout", isNeedLogout); + + long time5 = System.currentTimeMillis(); + log.info("Online耗时" + (time5 - time4) + "MS"); + log.info("All耗时" + (time5 - time1) + "MS"); + + return mv; + } + private boolean isOnline(User user) { + OnlineUser onlineUser = OnlineRecorder.getOnlineUser(user); + return onlineUser != null && onlineUser.getLoginInfoByLoginSign(user.getLoginSign()) != null; + } + private Map localeInfo = null; + private Map getLocaleInfo() { + if(null !=localeInfo && localeInfo.size() locales = LocaleContext.getAllLocales(); + String locStr; + for (Locale loc : locales) { + locStr = loc.toString(); + localeInfo.put(locStr, ResourceUtil.getString("localeselector.locale." + locStr)); + } + } + + private void loadCAPlugIn(HttpServletRequest request, ModelAndView modelAndView) + throws UnsupportedEncodingException { + String caFactory = SystemProperties.getInstance().getProperty("ca.factory"); + String factoryJsp = "/WEB-INF/jsp/ca/ca4" + caFactory + ".jsp"; + String sslVerifyCertValue = "no"; + String keyNum = "noKey"; + boolean hasPluginCA = AppContext.hasPlugin("ca"); + //如果是格尔CA厂商,从cookie中获取 + if ("koal".equals(caFactory)) { + Cookie[] cookies = request.getCookies(); + if (cookies == null) { + cookies = new Cookie[0]; + } + for (int i = 0; i < cookies.length; i++) { + Cookie cookie = cookies[i]; + //是否通过CA校验 + if ("SSL_VERIFY_CERT".equals(cookie.getName())) { + sslVerifyCertValue = new String(URLDecoder.decode(cookie.getValue()) + .getBytes("ISO-8859-1"), "utf-8"); + } + if ("KOAL_CERT_CN".equals(cookie.getName())) { + keyNum = new String(URLDecoder.decode(cookie.getValue()).getBytes("ISO-8859-1"), "utf-8"); + } + } + } + if("Jit".equals(caFactory)){ + this.loadJitCAPlugin(request, modelAndView); + } + modelAndView.addObject("caFactory", caFactory); + modelAndView.addObject("sslVerifyCertValue", sslVerifyCertValue); + modelAndView.addObject("keyNum", keyNum); + modelAndView.addObject("hasPluginCA", hasPluginCA); + modelAndView.addObject("pageUrl", factoryJsp); + CtpLocalFile jspFile = new CtpLocalFile(SystemEnvironment.getApplicationFolder() + factoryJsp); + if (hasPluginCA && !"koal".equals(caFactory) && jspFile.exists()) { + modelAndView.addObject("includeJsp", true); + } else { + modelAndView.addObject("includeJsp", false); + } + } + + private void loadJitCAPlugin(HttpServletRequest request,ModelAndView modelAndView){ + HttpSession session = request.getSession(); + String randNum = generateRandomNum(); + /************************** + * 第三步 服务端返回认证原文 * + **************************/ + // 设置认证原文到session,用于程序向后传递,通讯报文中使用 + AppContext.putSessionContext("ToSign", randNum); + + // 设置认证原文到页面,给页面程序提供参数,用于产生认证请求数据包 + modelAndView.addObject("original", randNum); + } + + /** + * 产生认证原文 + */ + private String generateRandomNum() { + /************************** + * 第二步 服务端产生认证原文 * + **************************/ + String num = "1234567890abcdefghijklmnopqrstopqrstuvwxyz"; + int size = 6; + char[] charArray = num.toCharArray(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < size; i++) { + sb + .append(charArray[((int) (Math.random() * 10000) % charArray.length)]); + } + return sb.toString(); + } + + + private BusinessException getBusinessException(Throwable e) { + if (e == null) { + return null; + } + if (e instanceof BusinessException) { + return (BusinessException) e; + } else { + return getBusinessException(e.getCause()); + } + } + + + private void goout(HttpServletRequest request, HttpSession session, HttpServletResponse response, + BusinessException be, boolean jumpDestination) { + //登录失败目标页面 + String param = request.getQueryString(); + if(param != null) { + param = param.replace("method=mailAuth&", ""); + } + String error_destination ="thirdpartyController.do?method=access&"+param; //getErrorDestination(request, session); + Cookie[] cookies = request.getCookies(); + if(cookies != null){ + for(Cookie cookie : cookies){ + if("loginPageURL".equals(cookie.getName()) && cookie.getValue().length() > 0){ + error_destination = request.getContextPath() + cookie.getValue(); + cookie.setMaxAge(0); + cookie.setValue(null); + response.addCookie(cookie); + } + } + } + if (be != null && session != null) { + //清除已有session信息 + Enumeration attsEnu = session.getAttributeNames(); + List attrs = new ArrayList(); + while (attsEnu.hasMoreElements()) { + attrs.add(attsEnu.nextElement()); + } + for (String name : attrs) { + //为了保证用户失败验证达到一定次数弹出验证码,需要保证一个有判断的session值 + if("userShowVerifyCode".equals(name)) { + continue; + } + session.removeAttribute(name); + } + AppContext.putSessionContext(LoginConstants.Result, be.getMessage()); + response.addHeader("LoginError", be.getCode()); + } + try { + if (jumpDestination) { + response.sendRedirect(response.encodeURL(error_destination)); + } + } catch (Exception e) { + log.error(e.getMessage(),e); + } + } + /** + * 获取链接的用户信息 + * @param request + * @return + * @throws Exception + */ + private V3xOrgMember getUserInfo(HttpServletRequest request) throws Exception { + String enc = getEnc(request); + if (enc == null) { + return null; + } + + Map encMap = new HashMap(); + String[] enc0 = enc.split("[&]"); + for (String enc1 : enc0) { + String[] enc2 = enc1.split("[=]"); + + if (enc2 != null) { + String key = enc2[0]; + String value = enc2.length == 2 ? enc2[1] : null; + if(null!=value){ + value= URLEncoder.encode(value); + value= value.replaceAll("%3F", ""); + value= URLDecoder.decode(value); + + } + encMap.put(key, value); + if("MID".equals(key)) { + break; + } + } + } + long memberId = -1; + String _messageId = encMap.get("MID"); + if (_messageId == null) { + return null; + } + Long messageId = Long.parseLong(_messageId); + UserHistoryMessage msg = this.userMessageManager.getUserHistoryMsgById(messageId); + if(msg == null) { + return null; + } + memberId = msg.getReceiverId(); + V3xOrgMember member= orgManager.getMemberById(memberId); + + return member; + } + + private Map parseEnc(String enc){ + Map encMap = new HashMap(); + String[] enc0 = enc.split("[&]"); + for (String enc1 : enc0) { + String[] enc2 = enc1.split("[=]"); + + if (enc2 != null) { + String key = enc2[0]; + String value = enc2.length == 2 ? enc2[1] : null; + if(null!=value){ + value= URLEncoder.encode(value); + value= value.replaceAll("%3F", ""); + value= URLDecoder.decode(value); + } + encMap.put(key, value); + } + } + return encMap; + } + + private String getEnc(HttpServletRequest request) { + String chainId = request.getParameter("chainId"); + String enc = null; + if(request.getParameter("enc")!=null){ + enc = LightWeightEncoder.decodeString(request.getParameter("enc").replaceAll(" ", "+")); + }else if(Strings.isNotBlank(chainId)){ + String chain = shortChainInterface.updateChainCountAndQuery(chainId); + if(Strings.isNotBlank(chain)) { + enc = LightWeightEncoder.decodeString(chain.replaceAll(" ", "+")); + } + }else{ + String transcode= URLDecoder.decode(request.getQueryString().split("enc=")[1]); + enc= request.getQueryString().indexOf("enc=")>0?LightWeightEncoder.decodeString(transcode):null; + } + return enc; + } + +} diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/pluginCfg.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/pluginCfg.xml new file mode 100644 index 0000000..476023f --- /dev/null +++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/pluginCfg.xml @@ -0,0 +1,6 @@ + + + src_finereport + 帆软集成管理 + 20251207 + \ No newline at end of file diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/spring/spring-sso.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/spring/spring-sso.xml new file mode 100644 index 0000000..d7dbc78 --- /dev/null +++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/spring/spring-sso.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/spring/spring.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/spring/spring.xml new file mode 100644 index 0000000..3b532a0 --- /dev/null +++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_finereport/spring/spring.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_nc_file/spring/spring-event.xml b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_nc_file/spring/spring-event.xml index 0cba892..470a396 100644 --- a/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_nc_file/spring/spring-event.xml +++ b/v5/apps-customize/src/main/webapp/WEB-INF/cfgHome/plugin/src_nc_file/spring/spring-event.xml @@ -3,4 +3,5 @@ + \ No newline at end of file