diff --git a/src/main/java/weaver/cssc/schedule/cron/PushEmployeeCronJob.java b/src/main/java/weaver/cssc/schedule/cron/PushEmployeeCronJob.java index f248972..4f429be 100644 --- a/src/main/java/weaver/cssc/schedule/cron/PushEmployeeCronJob.java +++ b/src/main/java/weaver/cssc/schedule/cron/PushEmployeeCronJob.java @@ -63,23 +63,31 @@ public class PushEmployeeCronJob extends BaseCronJob { HttpUtils httpUtils = new HttpUtils(); if(employeeList != null && employeeList.size() > 0){//遍历结果集 + + logger.info("人员记录条数:[" + employeeList.size() + "]"); + for(Map employeeMap : employeeList){ - int keyId = (int) employeeMap.get("code"); + int keyId = Util.getIntValue(Util.null2String(employeeMap.get("code"))); + + Map dataMap = new HashMap<>(); + dataMap.put("code",Util.null2String(employeeMap.get("code"))); + dataMap.put("name",Util.null2String(employeeMap.get("name"))); + dataMap.put("id",Util.null2String(employeeMap.get("id"))); Map header = new HashMap<>(); header.put("Content-Type", HttpArgsType.APPLICATION_JSON); try { - ResponeVo responeVo = httpUtils.apiPostObject(pushEmployeeRequestURL,employeeMap,header); + ResponeVo responeVo = httpUtils.apiPostObject(pushEmployeeRequestURL,dataMap,header); if(responeVo.getCode() == VoucherConstants.REQUEST_SUCCESS_CODE){ Map resultMap = responeVo.getResponseMap(); if(!resultMap.isEmpty()){ - int code = (int) resultMap.get("code"); + int code = Util.getIntValue(Util.null2String(resultMap.get("code"))); - if(code == 1){ + if(code == 0){ String pk = (String) resultMap.get("pk"); sqlMapper.writeBackKeyToEmployee(pk,keyId); diff --git a/src/main/java/weaver/cssc/schedule/util/PushModeDataUtil.java b/src/main/java/weaver/cssc/schedule/util/PushModeDataUtil.java index d9ee681..07cfdc1 100644 --- a/src/main/java/weaver/cssc/schedule/util/PushModeDataUtil.java +++ b/src/main/java/weaver/cssc/schedule/util/PushModeDataUtil.java @@ -53,7 +53,7 @@ public class PushModeDataUtil { */ private Map getConfiguration(Map configMap) { if(configMap != null && configMap.size() > 0){ - int mainKeyId = (int) configMap.get("id"); + int mainKeyId = Util.getIntValue(configMap.get("id").toString()); List> fieldList = sqlMapper.getPushDataDetailConfiguration(mainKeyId); @@ -79,7 +79,7 @@ public class PushModeDataUtil { //建模字段名称 String fieldName = Util.null2String(fieldMap.get("fieldName")); //转换规则 - int changeRule = (int) fieldMap.get("changeRule"); + int changeRule = Util.getIntValue(fieldMap.get("changeRule").toString()); //自定义规则 String cusSQL = Util.null2String(fieldMap.get("cusSQL")); diff --git a/src/main/java/weaver/weilin/zhu/asc/workflow/VoucherPushAction.java b/src/main/java/weaver/weilin/zhu/asc/workflow/VoucherPushAction.java index 685b620..31d6f7d 100644 --- a/src/main/java/weaver/weilin/zhu/asc/workflow/VoucherPushAction.java +++ b/src/main/java/weaver/weilin/zhu/asc/workflow/VoucherPushAction.java @@ -4,6 +4,7 @@ import aiyh.utils.Util; import aiyh.utils.httpUtil.HttpArgsType; import aiyh.utils.httpUtil.ResponeVo; import aiyh.utils.httpUtil.util.HttpUtils; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.apache.log4j.Logger; import weaver.file.Prop; @@ -29,7 +30,6 @@ public class VoucherPushAction implements CusActionPostInterface { private final Logger logger = Util.getLogger(); - /** * 后置处理方法 * @@ -44,6 +44,7 @@ public class VoucherPushAction implements CusActionPostInterface { JSONObject postObj = (JSONObject) params.get("pushJsonObject"); Map workflowBaseMap = (Map) params.get("workflowBaseMap"); Map pathParam = (Map) params.get("pathParam"); + String isArray = Util.null2String(params.get("isArray")); Map logMap = new HashMap<>(); @@ -63,7 +64,16 @@ public class VoucherPushAction implements CusActionPostInterface { try { //进行接口数据推送 - ResponeVo responeVo = httpUtils.apiPostObject(requestURL, postObj, headerMap); + ResponeVo responeVo ; + + if("Y".equals(isArray)){ + JSONArray postArray = new JSONArray(); + postArray.add(postObj); + + responeVo = httpUtils.apiPostObject(requestURL, postArray, headerMap); + } else { + responeVo = httpUtils.apiPostObject(requestURL, postObj, headerMap); + } if(responeVo != null && responeVo.getCode() == 200){ logMap.put("message",responeVo.getEntityString()); @@ -71,6 +81,8 @@ public class VoucherPushAction implements CusActionPostInterface { //接口返回所有信息 resultMessageUtil.setResponseBody(responeVo.getEntityString()); + logger.info("接口响应信息:[" + responeVo.getEntityString() + "]"); + Map resultMap = responeVo.getResponseMap(); if(resultMap != null){ @@ -97,7 +109,11 @@ public class VoucherPushAction implements CusActionPostInterface { int modeid = Util.getIntValue(Prop.getPropValue("global", "interfacelog_modeid")); - CommonUtil.insertNewDataToMode(modeid,"uf_interface_log",logMap); + CommonUtil commonUtil = new CommonUtil(); + + logger.info("日志信息:[" + JSONObject.toJSONString(logMap) + "]"); + + commonUtil.insertNewDataToMode(modeid,"uf_interface_log",logMap); return resultMessageUtil; } diff --git a/src/main/java/weaver/weilin/zhu/common/util/CommonUtil.java b/src/main/java/weaver/weilin/zhu/common/util/CommonUtil.java index df75aa8..1d8d355 100644 --- a/src/main/java/weaver/weilin/zhu/common/util/CommonUtil.java +++ b/src/main/java/weaver/weilin/zhu/common/util/CommonUtil.java @@ -16,7 +16,7 @@ public class CommonUtil { /** * 获取数据库操作接口 */ - private static final CommonSqlMapper sqlMapper = Util.getMapper(CommonSqlMapper.class); + private final CommonSqlMapper sqlMapper = Util.getMapper(CommonSqlMapper.class); /** * 获取字段详细信息 @@ -66,7 +66,7 @@ public class CommonUtil { * @param modeTableName 模块表名称 * @return 模块ID */ - public static int getModeIdByTableName(String modeTableName) { + public int getModeIdByTableName(String modeTableName) { return sqlMapper.getModeIdByTableName(modeTableName); } @@ -76,7 +76,7 @@ public class CommonUtil { * @param modeTableName 模块表名称 * @param dataMap 数据集 */ - public static void insertNewDataToMode(int modeId,String modeTableName, Map dataMap){ + public void insertNewDataToMode(int modeId,String modeTableName, Map dataMap){ //获取新的记录ID int newDataId = Util.getModeDataId(modeTableName,modeId,1); diff --git a/src/main/java/weaver/weilin/zhu/common/util/mapper/CommonSqlMapper.java b/src/main/java/weaver/weilin/zhu/common/util/mapper/CommonSqlMapper.java index 750e8a8..3fb01d2 100644 --- a/src/main/java/weaver/weilin/zhu/common/util/mapper/CommonSqlMapper.java +++ b/src/main/java/weaver/weilin/zhu/common/util/mapper/CommonSqlMapper.java @@ -9,6 +9,7 @@ import java.util.Map; * @author bleach * @version 2023-07-12 */ +@SqlMapper public interface CommonSqlMapper { /** @@ -33,10 +34,10 @@ public interface CommonSqlMapper { /** * 删除建模数据 + * * @param tableName 表单名称 - * @param dataId 数据ID - * @return 更新结果 + * @param dataId 数据ID */ @Delete("delete from $t{tableName} where id = #{dataId}") - boolean deleteRedundancyData(@ParamMapper("tableName") String tableName, @ParamMapper("dataId") int dataId); + void deleteRedundancyData(@ParamMapper("tableName") String tableName, @ParamMapper("dataId") int dataId); } diff --git a/src/main/java/weaver/weilin/zhu/common/voucher/action/CommonVoucherAction.java b/src/main/java/weaver/weilin/zhu/common/voucher/action/CommonVoucherAction.java index 7c6c3b0..4be282d 100644 --- a/src/main/java/weaver/weilin/zhu/common/voucher/action/CommonVoucherAction.java +++ b/src/main/java/weaver/weilin/zhu/common/voucher/action/CommonVoucherAction.java @@ -3,9 +3,12 @@ package weaver.weilin.zhu.common.voucher.action; import aiyh.utils.Util; import aiyh.utils.action.SafeCusBaseAction; import aiyh.utils.annotation.ActionDefaultTestValue; +import aiyh.utils.annotation.ActionOptionalParam; import aiyh.utils.annotation.PrintParamMark; import aiyh.utils.annotation.RequiredMark; import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import weaver.conn.RecordSet; @@ -27,6 +30,8 @@ import java.util.Map; * @author bleach * @version 2023-07-10 */ +@Getter +@Setter public class CommonVoucherAction extends SafeCusBaseAction { /** @@ -42,8 +47,14 @@ public class CommonVoucherAction extends SafeCusBaseAction { /** * 自定义参数值 */ + @PrintParamMark + @ActionOptionalParam(value = "", desc = "自定义参数值") private String cusParamValue; + @PrintParamMark + @ActionOptionalParam(value = "N", desc = "推送的JSON数据是否为数组") + private String isArray = "N"; + /** * 后置实现类接口路径 */ @@ -81,7 +92,10 @@ public class CommonVoucherAction extends SafeCusBaseAction { assert baseConfigDao != null; - voucherUtil.setThisUser(user); + if(user != null){ + voucherUtil.setThisUser(user); + } + voucherUtil.setObjectMappingDaoList(baseConfigDao.getObjectMappingDaoList()); voucherUtil.setNodeFieldMappingDaoList(baseConfigDao.getNodeFieldMappingDaoList()); @@ -99,18 +113,32 @@ public class CommonVoucherAction extends SafeCusBaseAction { logger.info("当前流程不满足自定义条件!"); } + rs.beforFirst(); + Map mainTableInfo = Util.recordSet2Map(rs); + + logger.info("主表字段信息:[" + JSONObject.toJSONString(mainTableInfo) + "]"); + + voucherUtil.setMainTableInfo(mainTableInfo); + + workflowBaseMap.put("requestId",requestId); + workflowBaseMap.put("billTableName",billTable); workflowBaseMap.put("mainId",Util.null2String(rs.getString("id"))); + logger.info(workflowBaseMap.toString()); + //推送的报文 JSONObject postJsonObj = new JSONObject(); StringBuilder postXmlObj = new StringBuilder(); if(baseConfigDao.getDataFormat() == 1){ - postXmlObj = voucherUtil.recursionGenerateXML("",null,null,0,0,0); + postXmlObj = voucherUtil.generateXML(mainTableInfo); + + logger.info("请求的XML报文信息:[" + postXmlObj + "]"); } else { //推送的报文 - postJsonObj = voucherUtil.recursionGenerateJsonObject("",null,null,0,0,0); + postJsonObj = voucherUtil.generateJsonObject(mainTableInfo); + logger.info("请求的JSON报文信息:[" + postJsonObj + "]"); } if(postJsonObj != null || postXmlObj.length() > 0){ @@ -126,6 +154,7 @@ public class CommonVoucherAction extends SafeCusBaseAction { paramsMap.put("requestInfo",requestInfo); paramsMap.put("workflowBaseMap",workflowBaseMap); paramsMap.put("userInfo",user); + paramsMap.put("isArray",isArray); ResultMessageUtil resultMessageUtil = executePostProcessor(className,paramsMap); @@ -190,6 +219,7 @@ public class CommonVoucherAction extends SafeCusBaseAction { try { aClass = Class.forName(className); } catch (ClassNotFoundException e) { + logger.error(Util.getErrString(e)); throw new IllegalArgumentException("未能找到自定义action接口处理方法:" + className); } Constructor constructor; @@ -206,25 +236,9 @@ public class CommonVoucherAction extends SafeCusBaseAction { try { o = (CusActionPostInterface) constructor.newInstance(); } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { + logger.error(Util.getErrString(e)); throw new IllegalArgumentException("无法构造" + className + "对象!"); } return o.postProcessor(params); } - - - public String getCusParamValue() { - return cusParamValue; - } - - public void setCusParamValue(String cusParamValue) { - this.cusParamValue = cusParamValue; - } - - public String getImplementorPath() { - return implementorPath; - } - - public void setImplementorPath(String implementorPath) { - this.implementorPath = implementorPath; - } } diff --git a/src/main/java/weaver/weilin/zhu/common/voucher/convert/FieldChangeRuleMethod.java b/src/main/java/weaver/weilin/zhu/common/voucher/convert/FieldChangeRuleMethod.java index 15a6b83..b2f5695 100644 --- a/src/main/java/weaver/weilin/zhu/common/voucher/convert/FieldChangeRuleMethod.java +++ b/src/main/java/weaver/weilin/zhu/common/voucher/convert/FieldChangeRuleMethod.java @@ -62,8 +62,13 @@ public class FieldChangeRuleMethod { if(StringUtils.isNotBlank(fieldName)){ int viewType = fieldInfo.getViewType(); - if(viewType == 0){ - fieldValue = Util.null2String(param.getRs().getString(fieldName)); + if(viewType == 0 && param.getMainTableInfo() != null){ + //fieldValue = Util.null2String(param.getRs().getString(fieldName)); + Map mainTableInfo = param.getMainTableInfo(); + + if(mainTableInfo.containsKey(fieldName)){ + fieldValue = Util.null2String(mainTableInfo.get(fieldName)); + } } else if(viewType == 1 && param.getRs_detail() != null){ fieldValue = Util.null2String(param.getRs_detail().getString(fieldName)); } @@ -173,11 +178,11 @@ public class FieldChangeRuleMethod { } if(param.getThisUser() != null){ - cusSQL = cusSQL.replace("{userId}", String.valueOf(param.getThisUser().getUID())); + cusSQL = cusSQL.replace("{?userId}", String.valueOf(param.getThisUser().getUID())); - cusSQL = cusSQL.replace("{departmentId}", String.valueOf(param.getThisUser().getUserDepartment())); + cusSQL = cusSQL.replace("{?departmentId}", String.valueOf(param.getThisUser().getUserDepartment())); - cusSQL = cusSQL.replace("{subCompanyId}", String.valueOf(param.getThisUser().getUserSubCompany1())); + cusSQL = cusSQL.replace("{?subCompanyId}", String.valueOf(param.getThisUser().getUserSubCompany1())); } } diff --git a/src/main/java/weaver/weilin/zhu/common/voucher/convert/RuleMethodParam.java b/src/main/java/weaver/weilin/zhu/common/voucher/convert/RuleMethodParam.java index f75a93a..0d636a7 100644 --- a/src/main/java/weaver/weilin/zhu/common/voucher/convert/RuleMethodParam.java +++ b/src/main/java/weaver/weilin/zhu/common/voucher/convert/RuleMethodParam.java @@ -30,6 +30,11 @@ public class RuleMethodParam { */ private Map workflowBaseMap; + /** + * 流程主表信息 + */ + private Map mainTableInfo; + /** * 明细序列 */ diff --git a/src/main/java/weaver/weilin/zhu/common/voucher/mapper/CommVoucherSqlMapper.java b/src/main/java/weaver/weilin/zhu/common/voucher/mapper/CommVoucherSqlMapper.java index ce813f9..13de54d 100644 --- a/src/main/java/weaver/weilin/zhu/common/voucher/mapper/CommVoucherSqlMapper.java +++ b/src/main/java/weaver/weilin/zhu/common/voucher/mapper/CommVoucherSqlMapper.java @@ -2,6 +2,7 @@ package weaver.weilin.zhu.common.voucher.mapper; import aiyh.utils.annotation.recordset.*; import weaver.conn.RecordSet; +import weaver.weilin.zhu.common.util.FieldDetailInfo; import weaver.weilin.zhu.common.voucher.entity.BaseConfigDao; import weaver.weilin.zhu.common.voucher.entity.NodeFieldMappingDao; import weaver.weilin.zhu.common.voucher.entity.ObjectMappingDao; @@ -21,7 +22,7 @@ public interface CommVoucherSqlMapper { * @param workflowIds 流程类型ID * @return 配置信息 */ - @Select("select * from uf_comm_voucher where wfId in ($t{workflowIds})") + @Select("select * from uf_comm_voucher where workflowId in ($t{workflowIds})") @CollectionMappings({ @CollectionMapping( property = "objectMappingDaoList", @@ -34,6 +35,7 @@ public interface CommVoucherSqlMapper { id = @Id(value = Integer.class,methodId = 2) ) }) + @CaseConversion(value = false) BaseConfigDao getConfigurationByWorkflowId(@ParamMapper("workflowIds") String workflowIds); @@ -43,7 +45,7 @@ public interface CommVoucherSqlMapper { * @param workflowIds 流程类型ID * @return 配置信息 */ - @Select("select * from uf_comm_voucher where wfId in ($t{workflowIds}) and cusParamValue = #{cusParamValue}") + @Select("select * from uf_comm_voucher where workflowId in ($t{workflowIds}) and cusParamValue = #{cusParamValue}") @CollectionMappings({ @CollectionMapping( property = "objectMappingDaoList", @@ -56,6 +58,7 @@ public interface CommVoucherSqlMapper { id = @Id(value = Integer.class,methodId = 2) ) }) + @CaseConversion(value = false) BaseConfigDao getConfigurationByWorkflowIdAndCondition(@ParamMapper("workflowIds") String workflowIds,@ParamMapper("cusParamValue") String cusParamValue); @@ -66,11 +69,11 @@ public interface CommVoucherSqlMapper { * @return 映射详细信息 */ @Select("select * from uf_comm_voucher_dt1 where mainId = #{mainId}") + @CaseConversion(value = false) @CollectionMethod(value = 1,desc = "获取对象与流程明细表映射配置信息") List getObjectMappingByMainKeyId(@ParamMapper("mainId") int mainId); - /** * 获取对象与流程明细表映射配置信息 * @param mainId 主表主键ID @@ -81,8 +84,7 @@ public interface CommVoucherSqlMapper { @Association( property = "wfField", column = "wfField", - select = "weaver.weilin.zhu.common.util.CommonUtil.getFieldDetailInfo", - id = @Id(Integer.class) + id = @Id(value = Integer.class,methodId = 3) ) }) @CaseConversion(value = false) @@ -90,6 +92,30 @@ public interface CommVoucherSqlMapper { List getNodeFieldMappingByMainKeyId(@ParamMapper("mainId") int mainId); + /** + * 获取字段信息 + * @param fieldId 字段ID + * @return 字段信息 + */ + @Select("select id,fieldName,viewType,detailTable,fieldDbType from workflow_billField where id = #{fieldId}") + @CaseConversion(value = false) + @AssociationMethod(value = 3,desc = "获取字段详细信息") + FieldDetailInfo getFieldDetailInfo(@ParamMapper("fieldId") int fieldId); + /* + @Select("select id,fieldName,viewType,detailTable,fieldDbType,case when VIEWTYPE = 1 and CHARINDEX('_dt',DETAILTABLE) > 0 then \n" + + "\t substring(DETAILTABLE,CHARINDEX('_dt',DETAILTABLE) + 3)\n" + + "else 0\n" + + "end detailIndex from workflow_billField where id = #{fieldId}") + + + @Select("select id,fieldName,viewType,detailTable,fieldDbType,case when VIEWTYPE = 1 and LOCATE('_dt',DETAILTABLE) > 0 then \n" + + "\t substr(DETAILTABLE,LOCATE('_dt',DETAILTABLE) + 3)\n" + + "else 0\n" + + "end detailIndex from workflow_billField where id = #{fieldId}") + @CaseConversion(value = false) + @AssociationMethod(value = 3,desc = "获取字段详细信息") + FieldDetailInfo getFieldDetailInfo(@ParamMapper("fieldId") int fieldId); + */ /** * 查询流程主表的信息 diff --git a/src/main/java/weaver/weilin/zhu/common/voucher/util/CommonVoucherUtil.java b/src/main/java/weaver/weilin/zhu/common/voucher/util/CommonVoucherUtil.java index 190076d..4fd04ea 100644 --- a/src/main/java/weaver/weilin/zhu/common/voucher/util/CommonVoucherUtil.java +++ b/src/main/java/weaver/weilin/zhu/common/voucher/util/CommonVoucherUtil.java @@ -3,7 +3,10 @@ package weaver.weilin.zhu.common.voucher.util; import aiyh.utils.Util; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import lombok.Getter; +import lombok.Setter; import org.apache.commons.lang3.StringUtils; +import org.apache.log4j.Logger; import weaver.conn.RecordSet; import weaver.hrm.User; import weaver.weilin.zhu.common.util.FieldDetailInfo; @@ -27,6 +30,8 @@ import java.util.Map; * @author bleach * @version 2023-07-10 */ +@Setter +@Getter public class CommonVoucherUtil { /** @@ -34,12 +39,19 @@ public class CommonVoucherUtil { */ private final CommVoucherSqlMapper sqlMapper = Util.getMapper(CommVoucherSqlMapper.class); + private final Logger logger = Util.getLogger(); /** * 流程基础信息 */ private Map workflowBaseMap; + + /** + * 流程主表信息 + */ + private Map mainTableInfo; + /** * 当前用户 */ @@ -65,7 +77,7 @@ public class CommonVoucherUtil { * @return 配置信息 */ public BaseConfigDao getConfigurationByWorkflowId(String workflowId,String cusParamValue){ - BaseConfigDao dao = new BaseConfigDao(); + BaseConfigDao dao ; //获取该流程类型对应的所有版本ID String allWorkflowIds = WorkflowVersion.getAllVersionStringByWFIDs(workflowId); @@ -79,20 +91,49 @@ public class CommonVoucherUtil { return dao; } + /** + * 根据配置生成JSON对象 + * @return 返回生成JSON对象 + */ + public JSONObject generateJsonObject(Map mainTableInfo){ + + if(this.mainTableInfo == null || this.mainTableInfo.size() == 0){ + this.mainTableInfo = mainTableInfo; + } + + return recursionGenerateJsonObject("",null,0,0,0); + } + + + /** + * 根据配置生成JSON对象 + * @return 返回生成JSON对象 + */ + public StringBuilder generateXML(Map mainTableInfo){ + + if(this.mainTableInfo == null || this.mainTableInfo.size() == 0){ + this.mainTableInfo = mainTableInfo; + } + + return recursionGenerateXML("",null,0,0,0); + } + + /** * 递归生成JSON对象 * @param parentNode 父节点名称 - * @param rs 流程主表数据集 * @param rs_detail 流程某个明细表某行数据集 * @param dtIndex 明细序列 * @param itemDirection 借贷方向 * @param rowNum 明细序号 * @return JSON对象 */ - public JSONObject recursionGenerateJsonObject(String parentNode, RecordSet rs,RecordSet rs_detail, int dtIndex, int itemDirection,int rowNum){ + public JSONObject recursionGenerateJsonObject(String parentNode, RecordSet rs_detail, int dtIndex, int itemDirection,int rowNum){ JSONObject jsonObject = new JSONObject(); for(NodeFieldMappingDao nodeFieldMappingDao : nodeFieldMappingDaoList){ + logger.info("nodeFieldMappingDao:" + nodeFieldMappingDao.toString()); + //节点名称 String _nodeName = nodeFieldMappingDao.getNodeName(); @@ -109,9 +150,12 @@ public class CommonVoucherUtil { int _nodeType = nodeFieldMappingDao.getNodeType(); + if(itemDirection > 0){//说明为会计分录 String _entriesDirection = nodeFieldMappingDao.getEntriesDirection(); + //System.out.println("_entriesDirection:" + _entriesDirection ); + if(!_entriesDirection.contains(String.valueOf(itemDirection))){//传进来的会计分录方向与当前不一致 continue; } @@ -124,20 +168,29 @@ public class CommonVoucherUtil { int _viewType = workflowField.getViewType(); int _detailIndex = workflowField.getDetailIndex(); + + String _detailTableName = Util.null2String(workflowField.getDetailTable()); + + if(_detailIndex == -1 && StringUtils.isNotBlank(_detailTableName)){ + _detailIndex = Util.getIntValue(_detailTableName.substring(_detailTableName.indexOf("_dt") + 3),-1); + } + if(_viewType == 1 && _detailIndex != dtIndex){ continue; } } RuleMethodParam param = new RuleMethodParam(); - param.setRs(rs); + //param.setRs(rs); param.setRs_detail(rs_detail); param.setWorkflowBaseMap(workflowBaseMap); param.setRowNum(rowNum); param.setThisUser(thisUser); + param.setMainTableInfo(mainTableInfo); switch (_nodeType){ case VoucherConstants.Node_Type_Comm_Text: + String nodeValue = FieldChangeRuleMethod.VALUE_RULE_FUNCTION.get(nodeFieldMappingDao.getChangeRule()).apply(nodeFieldMappingDao, param); if(nodeFieldMappingDao.getSpecialAttr() == 1 && Util.getDoubleValue(nodeValue,0.0) == 0){ @@ -148,7 +201,7 @@ public class CommonVoucherUtil { break; case VoucherConstants.Node_Type_Comm_Object: - JSONObject commObj = recursionGenerateJsonObject(_nodeName,rs,rs_detail,dtIndex,itemDirection,rowNum); + JSONObject commObj = recursionGenerateJsonObject(_nodeName,rs_detail,dtIndex,itemDirection,rowNum); jsonObject.put(_nodeName,commObj); break; @@ -170,12 +223,13 @@ public class CommonVoucherUtil { int _rowNum = 1; for(ObjectMappingDao objectMappingDao : objectMappingDaoList){ + String _objectName = objectMappingDao.getObjectName(); //别名 String alias = objectMappingDao.getAlias(); - if(!_objectName.equals(_nodeName) || (StringUtils.isNotBlank(alias) && !alias.equals(_nodeName))){//对象节点名称 与当前节点不一致 + if(!_objectName.equals(_nodeName)){//对象节点名称 与当前节点不一致 continue; } @@ -204,7 +258,7 @@ public class CommonVoucherUtil { while(_rs_detail.next()){ for(String direction : Util.TokenizerString2(_entriesDirection,",")) { - JSONObject itemObj = recursionGenerateJsonObject(tmpParentNode, rs, _rs_detail, _dtIndex, Util.getIntValue(direction), _rowNum++); + JSONObject itemObj = recursionGenerateJsonObject(tmpParentNode, _rs_detail, _dtIndex, Util.getIntValue(direction), _rowNum++); if(itemObj == null || itemObj.isEmpty()){ _rowNum--; @@ -215,7 +269,7 @@ public class CommonVoucherUtil { } } else {//说明信息来自主表 for(String direction : Util.TokenizerString2(_entriesDirection,",")){ - JSONObject itemObj = recursionGenerateJsonObject(tmpParentNode,rs,null,0,Util.getIntValue(direction),_rowNum++); + JSONObject itemObj = recursionGenerateJsonObject(tmpParentNode,null,0,Util.getIntValue(direction),_rowNum++); if(itemObj == null || itemObj.isEmpty()){ _rowNum--; @@ -235,17 +289,17 @@ public class CommonVoucherUtil { return jsonObject; } + /** * 递归生成XML字符串 * @param parentNode 父节点名称 - * @param rs 流程主表数据集 * @param rs_detail 流程某个明细表某行数据集 * @param dtIndex 明细序列 * @param itemDirection 借贷方向 * @param rowNum 明细序号 * @return XML字符串 */ - public StringBuilder recursionGenerateXML(String parentNode, RecordSet rs,RecordSet rs_detail, int dtIndex, int itemDirection,int rowNum){ + public StringBuilder recursionGenerateXML(String parentNode, RecordSet rs_detail, int dtIndex, int itemDirection,int rowNum){ StringBuilder xmlBuilder = new StringBuilder(); for(NodeFieldMappingDao nodeFieldMappingDao : nodeFieldMappingDaoList) { //节点名称 @@ -279,17 +333,25 @@ public class CommonVoucherUtil { int _viewType = workflowField.getViewType(); int _detailIndex = workflowField.getDetailIndex(); - if (_viewType == 1 && _detailIndex != dtIndex) { + + String _detailTableName = Util.null2String(workflowField.getDetailTable()); + + if(_detailIndex == -1 && StringUtils.isNotBlank(_detailTableName)){ + _detailIndex = Util.getIntValue(_detailTableName.substring(_detailTableName.indexOf("_dt") + 3),-1); + } + + if(_viewType == 1 && _detailIndex != dtIndex){ continue; } } RuleMethodParam param = new RuleMethodParam(); - param.setRs(rs); + //param.setRs(rs); param.setRs_detail(rs_detail); param.setWorkflowBaseMap(workflowBaseMap); param.setRowNum(rowNum); param.setThisUser(thisUser); + param.setMainTableInfo(mainTableInfo); switch (_nodeType) { case VoucherConstants.Node_Type_Comm_Text: @@ -306,7 +368,7 @@ public class CommonVoucherUtil { break; case VoucherConstants.Node_Type_Comm_Object: - StringBuilder innerXML = recursionGenerateXML(_nodeName,rs,rs_detail,dtIndex,itemDirection,rowNum); + StringBuilder innerXML = recursionGenerateXML(_nodeName,rs_detail,dtIndex,itemDirection,rowNum); xmlBuilder.append("<").append(_nodeName).append(">"); xmlBuilder.append(innerXML); xmlBuilder.append("\n"); @@ -321,7 +383,7 @@ public class CommonVoucherUtil { //别名 String alias = objectMappingDao.getAlias(); - if (!_objectName.equals(_nodeName) || (StringUtils.isNotBlank(alias) && !alias.equals(_nodeName))) {//对象节点名称 与当前节点不一致 + if(!_objectName.equals(_nodeName)){//对象节点名称 与当前节点不一致 continue; } @@ -350,7 +412,7 @@ public class CommonVoucherUtil { while (_rs_detail.next()) { for (String direction : Util.TokenizerString2(_entriesDirection, ",")) { - StringBuilder innerItem = recursionGenerateXML(tmpParentNode,rs,_rs_detail,_dtIndex,Util.getIntValue(direction),_rowNum); + StringBuilder innerItem = recursionGenerateXML(tmpParentNode,_rs_detail,_dtIndex,Util.getIntValue(direction),_rowNum); if(innerItem != null && innerItem.length() > 0){ xmlBuilder.append("<").append(_nodeName).append(">"); @@ -363,7 +425,7 @@ public class CommonVoucherUtil { } } else { //说明数据来自主表 for(String direction : Util.TokenizerString2(_entriesDirection,",")){ - StringBuilder innerItem = recursionGenerateXML(tmpParentNode,rs,null,0,Util.getIntValue(direction),_rowNum++); + StringBuilder innerItem = recursionGenerateXML(tmpParentNode,null,0,Util.getIntValue(direction),_rowNum++); if(innerItem != null && innerItem.length() > 0){ xmlBuilder.append("<").append(_nodeName).append(">"); @@ -381,36 +443,4 @@ public class CommonVoucherUtil { } return xmlBuilder; } - - public User getThisUser() { - return thisUser; - } - - public void setThisUser(User thisUser) { - this.thisUser = thisUser; - } - - public Map getWorkflowBaseMap() { - return workflowBaseMap; - } - - public void setWorkflowBaseMap(Map workflowBaseMap) { - this.workflowBaseMap = workflowBaseMap; - } - - public List getObjectMappingDaoList() { - return objectMappingDaoList; - } - - public void setObjectMappingDaoList(List objectMappingDaoList) { - this.objectMappingDaoList = objectMappingDaoList; - } - - public List getNodeFieldMappingDaoList() { - return nodeFieldMappingDaoList; - } - - public void setNodeFieldMappingDaoList(List nodeFieldMappingDaoList) { - this.nodeFieldMappingDaoList = nodeFieldMappingDaoList; - } } diff --git a/src/main/java/weaver/weilin/zhu/xyzq/scheduled/sqlmapper/OrganizationSyncSqlMapper.java b/src/main/java/weaver/weilin/zhu/xyzq/scheduled/sqlmapper/OrganizationSyncSqlMapper.java index f3ade99..c48721b 100644 --- a/src/main/java/weaver/weilin/zhu/xyzq/scheduled/sqlmapper/OrganizationSyncSqlMapper.java +++ b/src/main/java/weaver/weilin/zhu/xyzq/scheduled/sqlmapper/OrganizationSyncSqlMapper.java @@ -1,6 +1,7 @@ package weaver.weilin.zhu.xyzq.scheduled.sqlmapper; import aiyh.utils.annotation.recordset.*; +import weaver.weilin.zhu.common.util.FieldDetailInfo; import weaver.weilin.zhu.xyzq.scheduled.entity.SyncConfigDao; import weaver.weilin.zhu.xyzq.scheduled.entity.SyncConfigDetailDao; @@ -32,8 +33,7 @@ public interface OrganizationSyncSqlMapper { @Association( property = "foreignKeyField", column = "foreignKeyField", - select = "weaver.common.util.CommonUtil.getFieldInfo", - id = @Id(Integer.class) + id = @Id(value = Integer.class,methodId = 2) ) }) SyncConfigDao getConfigurationByKeyId(@ParamMapper("keyId") int keyId); @@ -48,13 +48,23 @@ public interface OrganizationSyncSqlMapper { @Association( property = "modeField", column = "modeField", - select = "weaver.weilin.zhu.common.util.CommonUtil.getFieldDetailInfo", - id = @Id(Integer.class) + id = @Id(value = Integer.class,methodId = 2) ) }) @CollectionMethod(value = 1,desc = "获取详细的字段配置信息") List getConfigurationDetailByMainKeyId(@ParamMapper("mainId") int mainId); + + /** + * 获取字段信息 + * @param fieldId 字段ID + * @return 字段信息 + */ + @Select("select id,fieldName,viewType,detailTable,fieldDbType from workflow_billField where id = #{fieldId}") + @CaseConversion(value = false) + @AssociationMethod(value = 2,desc = "获取字段详细信息") + FieldDetailInfo getFieldDetailInfo(@ParamMapper("fieldId") int fieldId); + /** * 获取当前模块中已存在记录集合 * @param foreignKeyFieldName 外键字段名称