ASC 精品酒业 凭证相关接口问题修复

dev
weilin.zhu 2023-07-20 13:23:07 +08:00
parent 92503d4325
commit 39a7295db8
11 changed files with 212 additions and 97 deletions

View File

@ -63,23 +63,31 @@ public class PushEmployeeCronJob extends BaseCronJob {
HttpUtils httpUtils = new HttpUtils(); HttpUtils httpUtils = new HttpUtils();
if(employeeList != null && employeeList.size() > 0){//遍历结果集 if(employeeList != null && employeeList.size() > 0){//遍历结果集
logger.info("人员记录条数:[" + employeeList.size() + "]");
for(Map<String,Object> employeeMap : employeeList){ for(Map<String,Object> employeeMap : employeeList){
int keyId = (int) employeeMap.get("code"); int keyId = Util.getIntValue(Util.null2String(employeeMap.get("code")));
Map<String,String> 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<String,String> header = new HashMap<>(); Map<String,String> header = new HashMap<>();
header.put("Content-Type", HttpArgsType.APPLICATION_JSON); header.put("Content-Type", HttpArgsType.APPLICATION_JSON);
try { try {
ResponeVo responeVo = httpUtils.apiPostObject(pushEmployeeRequestURL,employeeMap,header); ResponeVo responeVo = httpUtils.apiPostObject(pushEmployeeRequestURL,dataMap,header);
if(responeVo.getCode() == VoucherConstants.REQUEST_SUCCESS_CODE){ if(responeVo.getCode() == VoucherConstants.REQUEST_SUCCESS_CODE){
Map<String,Object> resultMap = responeVo.getResponseMap(); Map<String,Object> resultMap = responeVo.getResponseMap();
if(!resultMap.isEmpty()){ 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"); String pk = (String) resultMap.get("pk");
sqlMapper.writeBackKeyToEmployee(pk,keyId); sqlMapper.writeBackKeyToEmployee(pk,keyId);

View File

@ -53,7 +53,7 @@ public class PushModeDataUtil {
*/ */
private Map<String, Object> getConfiguration(Map<String, Object> configMap) { private Map<String, Object> getConfiguration(Map<String, Object> configMap) {
if(configMap != null && configMap.size() > 0){ if(configMap != null && configMap.size() > 0){
int mainKeyId = (int) configMap.get("id"); int mainKeyId = Util.getIntValue(configMap.get("id").toString());
List<Map<String, Object>> fieldList = sqlMapper.getPushDataDetailConfiguration(mainKeyId); List<Map<String, Object>> fieldList = sqlMapper.getPushDataDetailConfiguration(mainKeyId);
@ -79,7 +79,7 @@ public class PushModeDataUtil {
//建模字段名称 //建模字段名称
String fieldName = Util.null2String(fieldMap.get("fieldName")); 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")); String cusSQL = Util.null2String(fieldMap.get("cusSQL"));

View File

@ -4,6 +4,7 @@ import aiyh.utils.Util;
import aiyh.utils.httpUtil.HttpArgsType; import aiyh.utils.httpUtil.HttpArgsType;
import aiyh.utils.httpUtil.ResponeVo; import aiyh.utils.httpUtil.ResponeVo;
import aiyh.utils.httpUtil.util.HttpUtils; import aiyh.utils.httpUtil.util.HttpUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import weaver.file.Prop; import weaver.file.Prop;
@ -29,7 +30,6 @@ public class VoucherPushAction implements CusActionPostInterface {
private final Logger logger = Util.getLogger(); private final Logger logger = Util.getLogger();
/** /**
* *
* *
@ -44,6 +44,7 @@ public class VoucherPushAction implements CusActionPostInterface {
JSONObject postObj = (JSONObject) params.get("pushJsonObject"); JSONObject postObj = (JSONObject) params.get("pushJsonObject");
Map<String,Object> workflowBaseMap = (Map<String,Object>) params.get("workflowBaseMap"); Map<String,Object> workflowBaseMap = (Map<String,Object>) params.get("workflowBaseMap");
Map<String,String> pathParam = (Map<String,String>) params.get("pathParam"); Map<String,String> pathParam = (Map<String,String>) params.get("pathParam");
String isArray = Util.null2String(params.get("isArray"));
Map<String,Object> logMap = new HashMap<>(); Map<String,Object> logMap = new HashMap<>();
@ -63,7 +64,16 @@ public class VoucherPushAction implements CusActionPostInterface {
try { 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){ if(responeVo != null && responeVo.getCode() == 200){
logMap.put("message",responeVo.getEntityString()); logMap.put("message",responeVo.getEntityString());
@ -71,6 +81,8 @@ public class VoucherPushAction implements CusActionPostInterface {
//接口返回所有信息 //接口返回所有信息
resultMessageUtil.setResponseBody(responeVo.getEntityString()); resultMessageUtil.setResponseBody(responeVo.getEntityString());
logger.info("接口响应信息:[" + responeVo.getEntityString() + "]");
Map<String,Object> resultMap = responeVo.getResponseMap(); Map<String,Object> resultMap = responeVo.getResponseMap();
if(resultMap != null){ if(resultMap != null){
@ -97,7 +109,11 @@ public class VoucherPushAction implements CusActionPostInterface {
int modeid = Util.getIntValue(Prop.getPropValue("global", "interfacelog_modeid")); 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; return resultMessageUtil;
} }

View File

@ -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 * @param modeTableName
* @return ID * @return ID
*/ */
public static int getModeIdByTableName(String modeTableName) { public int getModeIdByTableName(String modeTableName) {
return sqlMapper.getModeIdByTableName(modeTableName); return sqlMapper.getModeIdByTableName(modeTableName);
} }
@ -76,7 +76,7 @@ public class CommonUtil {
* @param modeTableName * @param modeTableName
* @param dataMap * @param dataMap
*/ */
public static void insertNewDataToMode(int modeId,String modeTableName, Map<String,Object> dataMap){ public void insertNewDataToMode(int modeId,String modeTableName, Map<String,Object> dataMap){
//获取新的记录ID //获取新的记录ID
int newDataId = Util.getModeDataId(modeTableName,modeId,1); int newDataId = Util.getModeDataId(modeTableName,modeId,1);

View File

@ -9,6 +9,7 @@ import java.util.Map;
* @author bleach * @author bleach
* @version 2023-07-12 * @version 2023-07-12
*/ */
@SqlMapper
public interface CommonSqlMapper { public interface CommonSqlMapper {
/** /**
@ -33,10 +34,10 @@ public interface CommonSqlMapper {
/** /**
* *
*
* @param tableName * @param tableName
* @param dataId ID * @param dataId ID
* @return
*/ */
@Delete("delete from $t{tableName} where id = #{dataId}") @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);
} }

View File

@ -3,9 +3,12 @@ package weaver.weilin.zhu.common.voucher.action;
import aiyh.utils.Util; import aiyh.utils.Util;
import aiyh.utils.action.SafeCusBaseAction; import aiyh.utils.action.SafeCusBaseAction;
import aiyh.utils.annotation.ActionDefaultTestValue; import aiyh.utils.annotation.ActionDefaultTestValue;
import aiyh.utils.annotation.ActionOptionalParam;
import aiyh.utils.annotation.PrintParamMark; import aiyh.utils.annotation.PrintParamMark;
import aiyh.utils.annotation.RequiredMark; import aiyh.utils.annotation.RequiredMark;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
@ -27,6 +30,8 @@ import java.util.Map;
* @author bleach * @author bleach
* @version 2023-07-10 * @version 2023-07-10
*/ */
@Getter
@Setter
public class CommonVoucherAction extends SafeCusBaseAction { public class CommonVoucherAction extends SafeCusBaseAction {
/** /**
@ -42,8 +47,14 @@ public class CommonVoucherAction extends SafeCusBaseAction {
/** /**
* *
*/ */
@PrintParamMark
@ActionOptionalParam(value = "", desc = "自定义参数值")
private String cusParamValue; 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; assert baseConfigDao != null;
if(user != null){
voucherUtil.setThisUser(user); voucherUtil.setThisUser(user);
}
voucherUtil.setObjectMappingDaoList(baseConfigDao.getObjectMappingDaoList()); voucherUtil.setObjectMappingDaoList(baseConfigDao.getObjectMappingDaoList());
voucherUtil.setNodeFieldMappingDaoList(baseConfigDao.getNodeFieldMappingDaoList()); voucherUtil.setNodeFieldMappingDaoList(baseConfigDao.getNodeFieldMappingDaoList());
@ -99,18 +113,32 @@ public class CommonVoucherAction extends SafeCusBaseAction {
logger.info("当前流程不满足自定义条件!"); logger.info("当前流程不满足自定义条件!");
} }
rs.beforFirst();
Map<String,Object> 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"))); workflowBaseMap.put("mainId",Util.null2String(rs.getString("id")));
logger.info(workflowBaseMap.toString());
//推送的报文 //推送的报文
JSONObject postJsonObj = new JSONObject(); JSONObject postJsonObj = new JSONObject();
StringBuilder postXmlObj = new StringBuilder(); StringBuilder postXmlObj = new StringBuilder();
if(baseConfigDao.getDataFormat() == 1){ if(baseConfigDao.getDataFormat() == 1){
postXmlObj = voucherUtil.recursionGenerateXML("",null,null,0,0,0); postXmlObj = voucherUtil.generateXML(mainTableInfo);
logger.info("请求的XML报文信息:[" + postXmlObj + "]");
} else { } else {
//推送的报文 //推送的报文
postJsonObj = voucherUtil.recursionGenerateJsonObject("",null,null,0,0,0); postJsonObj = voucherUtil.generateJsonObject(mainTableInfo);
logger.info("请求的JSON报文信息:[" + postJsonObj + "]");
} }
if(postJsonObj != null || postXmlObj.length() > 0){ if(postJsonObj != null || postXmlObj.length() > 0){
@ -126,6 +154,7 @@ public class CommonVoucherAction extends SafeCusBaseAction {
paramsMap.put("requestInfo",requestInfo); paramsMap.put("requestInfo",requestInfo);
paramsMap.put("workflowBaseMap",workflowBaseMap); paramsMap.put("workflowBaseMap",workflowBaseMap);
paramsMap.put("userInfo",user); paramsMap.put("userInfo",user);
paramsMap.put("isArray",isArray);
ResultMessageUtil resultMessageUtil = executePostProcessor(className,paramsMap); ResultMessageUtil resultMessageUtil = executePostProcessor(className,paramsMap);
@ -190,6 +219,7 @@ public class CommonVoucherAction extends SafeCusBaseAction {
try { try {
aClass = Class.forName(className); aClass = Class.forName(className);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
logger.error(Util.getErrString(e));
throw new IllegalArgumentException("未能找到自定义action接口处理方法" + className); throw new IllegalArgumentException("未能找到自定义action接口处理方法" + className);
} }
Constructor<?> constructor; Constructor<?> constructor;
@ -206,25 +236,9 @@ public class CommonVoucherAction extends SafeCusBaseAction {
try { try {
o = (CusActionPostInterface) constructor.newInstance(); o = (CusActionPostInterface) constructor.newInstance();
} catch (InstantiationException | IllegalAccessException | InvocationTargetException e) { } catch (InstantiationException | IllegalAccessException | InvocationTargetException e) {
logger.error(Util.getErrString(e));
throw new IllegalArgumentException("无法构造" + className + "对象!"); throw new IllegalArgumentException("无法构造" + className + "对象!");
} }
return o.postProcessor(params); 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;
}
} }

View File

@ -62,8 +62,13 @@ public class FieldChangeRuleMethod {
if(StringUtils.isNotBlank(fieldName)){ if(StringUtils.isNotBlank(fieldName)){
int viewType = fieldInfo.getViewType(); int viewType = fieldInfo.getViewType();
if(viewType == 0){ if(viewType == 0 && param.getMainTableInfo() != null){
fieldValue = Util.null2String(param.getRs().getString(fieldName)); //fieldValue = Util.null2String(param.getRs().getString(fieldName));
Map<String, Object> mainTableInfo = param.getMainTableInfo();
if(mainTableInfo.containsKey(fieldName)){
fieldValue = Util.null2String(mainTableInfo.get(fieldName));
}
} else if(viewType == 1 && param.getRs_detail() != null){ } else if(viewType == 1 && param.getRs_detail() != null){
fieldValue = Util.null2String(param.getRs_detail().getString(fieldName)); fieldValue = Util.null2String(param.getRs_detail().getString(fieldName));
} }
@ -173,11 +178,11 @@ public class FieldChangeRuleMethod {
} }
if(param.getThisUser() != null){ 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()));
} }
} }

View File

@ -30,6 +30,11 @@ public class RuleMethodParam {
*/ */
private Map<String,Object> workflowBaseMap; private Map<String,Object> workflowBaseMap;
/**
*
*/
private Map<String,Object> mainTableInfo;
/** /**
* *
*/ */

View File

@ -2,6 +2,7 @@ package weaver.weilin.zhu.common.voucher.mapper;
import aiyh.utils.annotation.recordset.*; import aiyh.utils.annotation.recordset.*;
import weaver.conn.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.BaseConfigDao;
import weaver.weilin.zhu.common.voucher.entity.NodeFieldMappingDao; import weaver.weilin.zhu.common.voucher.entity.NodeFieldMappingDao;
import weaver.weilin.zhu.common.voucher.entity.ObjectMappingDao; import weaver.weilin.zhu.common.voucher.entity.ObjectMappingDao;
@ -21,7 +22,7 @@ public interface CommVoucherSqlMapper {
* @param workflowIds ID * @param workflowIds ID
* @return * @return
*/ */
@Select("select * from uf_comm_voucher where wfId in ($t{workflowIds})") @Select("select * from uf_comm_voucher where workflowId in ($t{workflowIds})")
@CollectionMappings({ @CollectionMappings({
@CollectionMapping( @CollectionMapping(
property = "objectMappingDaoList", property = "objectMappingDaoList",
@ -34,6 +35,7 @@ public interface CommVoucherSqlMapper {
id = @Id(value = Integer.class,methodId = 2) id = @Id(value = Integer.class,methodId = 2)
) )
}) })
@CaseConversion(value = false)
BaseConfigDao getConfigurationByWorkflowId(@ParamMapper("workflowIds") String workflowIds); BaseConfigDao getConfigurationByWorkflowId(@ParamMapper("workflowIds") String workflowIds);
@ -43,7 +45,7 @@ public interface CommVoucherSqlMapper {
* @param workflowIds ID * @param workflowIds ID
* @return * @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({ @CollectionMappings({
@CollectionMapping( @CollectionMapping(
property = "objectMappingDaoList", property = "objectMappingDaoList",
@ -56,6 +58,7 @@ public interface CommVoucherSqlMapper {
id = @Id(value = Integer.class,methodId = 2) id = @Id(value = Integer.class,methodId = 2)
) )
}) })
@CaseConversion(value = false)
BaseConfigDao getConfigurationByWorkflowIdAndCondition(@ParamMapper("workflowIds") String workflowIds,@ParamMapper("cusParamValue") String cusParamValue); BaseConfigDao getConfigurationByWorkflowIdAndCondition(@ParamMapper("workflowIds") String workflowIds,@ParamMapper("cusParamValue") String cusParamValue);
@ -66,11 +69,11 @@ public interface CommVoucherSqlMapper {
* @return * @return
*/ */
@Select("select * from uf_comm_voucher_dt1 where mainId = #{mainId}") @Select("select * from uf_comm_voucher_dt1 where mainId = #{mainId}")
@CaseConversion(value = false)
@CollectionMethod(value = 1,desc = "获取对象与流程明细表映射配置信息") @CollectionMethod(value = 1,desc = "获取对象与流程明细表映射配置信息")
List<ObjectMappingDao> getObjectMappingByMainKeyId(@ParamMapper("mainId") int mainId); List<ObjectMappingDao> getObjectMappingByMainKeyId(@ParamMapper("mainId") int mainId);
/** /**
* *
* @param mainId ID * @param mainId ID
@ -81,8 +84,7 @@ public interface CommVoucherSqlMapper {
@Association( @Association(
property = "wfField", property = "wfField",
column = "wfField", column = "wfField",
select = "weaver.weilin.zhu.common.util.CommonUtil.getFieldDetailInfo", id = @Id(value = Integer.class,methodId = 3)
id = @Id(Integer.class)
) )
}) })
@CaseConversion(value = false) @CaseConversion(value = false)
@ -90,6 +92,30 @@ public interface CommVoucherSqlMapper {
List<NodeFieldMappingDao> getNodeFieldMappingByMainKeyId(@ParamMapper("mainId") int mainId); List<NodeFieldMappingDao> 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);
*/
/** /**
* *

View File

@ -3,7 +3,10 @@ package weaver.weilin.zhu.common.voucher.util;
import aiyh.utils.Util; import aiyh.utils.Util;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import weaver.conn.RecordSet; import weaver.conn.RecordSet;
import weaver.hrm.User; import weaver.hrm.User;
import weaver.weilin.zhu.common.util.FieldDetailInfo; import weaver.weilin.zhu.common.util.FieldDetailInfo;
@ -27,6 +30,8 @@ import java.util.Map;
* @author bleach * @author bleach
* @version 2023-07-10 * @version 2023-07-10
*/ */
@Setter
@Getter
public class CommonVoucherUtil { public class CommonVoucherUtil {
/** /**
@ -34,12 +39,19 @@ public class CommonVoucherUtil {
*/ */
private final CommVoucherSqlMapper sqlMapper = Util.getMapper(CommVoucherSqlMapper.class); private final CommVoucherSqlMapper sqlMapper = Util.getMapper(CommVoucherSqlMapper.class);
private final Logger logger = Util.getLogger();
/** /**
* *
*/ */
private Map<String,Object> workflowBaseMap; private Map<String,Object> workflowBaseMap;
/**
*
*/
private Map<String,Object> mainTableInfo;
/** /**
* *
*/ */
@ -65,7 +77,7 @@ public class CommonVoucherUtil {
* @return * @return
*/ */
public BaseConfigDao getConfigurationByWorkflowId(String workflowId,String cusParamValue){ public BaseConfigDao getConfigurationByWorkflowId(String workflowId,String cusParamValue){
BaseConfigDao dao = new BaseConfigDao(); BaseConfigDao dao ;
//获取该流程类型对应的所有版本ID //获取该流程类型对应的所有版本ID
String allWorkflowIds = WorkflowVersion.getAllVersionStringByWFIDs(workflowId); String allWorkflowIds = WorkflowVersion.getAllVersionStringByWFIDs(workflowId);
@ -79,20 +91,49 @@ public class CommonVoucherUtil {
return dao; return dao;
} }
/**
* JSON
* @return JSON
*/
public JSONObject generateJsonObject(Map<String,Object> 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<String,Object> mainTableInfo){
if(this.mainTableInfo == null || this.mainTableInfo.size() == 0){
this.mainTableInfo = mainTableInfo;
}
return recursionGenerateXML("",null,0,0,0);
}
/** /**
* JSON * JSON
* @param parentNode * @param parentNode
* @param rs
* @param rs_detail * @param rs_detail
* @param dtIndex * @param dtIndex
* @param itemDirection * @param itemDirection
* @param rowNum * @param rowNum
* @return JSON * @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(); JSONObject jsonObject = new JSONObject();
for(NodeFieldMappingDao nodeFieldMappingDao : nodeFieldMappingDaoList){ for(NodeFieldMappingDao nodeFieldMappingDao : nodeFieldMappingDaoList){
logger.info("nodeFieldMappingDao:" + nodeFieldMappingDao.toString());
//节点名称 //节点名称
String _nodeName = nodeFieldMappingDao.getNodeName(); String _nodeName = nodeFieldMappingDao.getNodeName();
@ -109,9 +150,12 @@ public class CommonVoucherUtil {
int _nodeType = nodeFieldMappingDao.getNodeType(); int _nodeType = nodeFieldMappingDao.getNodeType();
if(itemDirection > 0){//说明为会计分录 if(itemDirection > 0){//说明为会计分录
String _entriesDirection = nodeFieldMappingDao.getEntriesDirection(); String _entriesDirection = nodeFieldMappingDao.getEntriesDirection();
//System.out.println("_entriesDirection" + _entriesDirection );
if(!_entriesDirection.contains(String.valueOf(itemDirection))){//传进来的会计分录方向与当前不一致 if(!_entriesDirection.contains(String.valueOf(itemDirection))){//传进来的会计分录方向与当前不一致
continue; continue;
} }
@ -124,20 +168,29 @@ public class CommonVoucherUtil {
int _viewType = workflowField.getViewType(); int _viewType = workflowField.getViewType();
int _detailIndex = workflowField.getDetailIndex(); 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){ if(_viewType == 1 && _detailIndex != dtIndex){
continue; continue;
} }
} }
RuleMethodParam param = new RuleMethodParam(); RuleMethodParam param = new RuleMethodParam();
param.setRs(rs); //param.setRs(rs);
param.setRs_detail(rs_detail); param.setRs_detail(rs_detail);
param.setWorkflowBaseMap(workflowBaseMap); param.setWorkflowBaseMap(workflowBaseMap);
param.setRowNum(rowNum); param.setRowNum(rowNum);
param.setThisUser(thisUser); param.setThisUser(thisUser);
param.setMainTableInfo(mainTableInfo);
switch (_nodeType){ switch (_nodeType){
case VoucherConstants.Node_Type_Comm_Text: case VoucherConstants.Node_Type_Comm_Text:
String nodeValue = FieldChangeRuleMethod.VALUE_RULE_FUNCTION.get(nodeFieldMappingDao.getChangeRule()).apply(nodeFieldMappingDao, param); String nodeValue = FieldChangeRuleMethod.VALUE_RULE_FUNCTION.get(nodeFieldMappingDao.getChangeRule()).apply(nodeFieldMappingDao, param);
if(nodeFieldMappingDao.getSpecialAttr() == 1 && Util.getDoubleValue(nodeValue,0.0) == 0){ if(nodeFieldMappingDao.getSpecialAttr() == 1 && Util.getDoubleValue(nodeValue,0.0) == 0){
@ -148,7 +201,7 @@ public class CommonVoucherUtil {
break; break;
case VoucherConstants.Node_Type_Comm_Object: 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); jsonObject.put(_nodeName,commObj);
break; break;
@ -170,12 +223,13 @@ public class CommonVoucherUtil {
int _rowNum = 1; int _rowNum = 1;
for(ObjectMappingDao objectMappingDao : objectMappingDaoList){ for(ObjectMappingDao objectMappingDao : objectMappingDaoList){
String _objectName = objectMappingDao.getObjectName(); String _objectName = objectMappingDao.getObjectName();
//别名 //别名
String alias = objectMappingDao.getAlias(); String alias = objectMappingDao.getAlias();
if(!_objectName.equals(_nodeName) || (StringUtils.isNotBlank(alias) && !alias.equals(_nodeName))){//对象节点名称 与当前节点不一致 if(!_objectName.equals(_nodeName)){//对象节点名称 与当前节点不一致
continue; continue;
} }
@ -204,7 +258,7 @@ public class CommonVoucherUtil {
while(_rs_detail.next()){ while(_rs_detail.next()){
for(String direction : Util.TokenizerString2(_entriesDirection,",")) { 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()){ if(itemObj == null || itemObj.isEmpty()){
_rowNum--; _rowNum--;
@ -215,7 +269,7 @@ public class CommonVoucherUtil {
} }
} else {//说明信息来自主表 } else {//说明信息来自主表
for(String direction : Util.TokenizerString2(_entriesDirection,",")){ 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()){ if(itemObj == null || itemObj.isEmpty()){
_rowNum--; _rowNum--;
@ -235,17 +289,17 @@ public class CommonVoucherUtil {
return jsonObject; return jsonObject;
} }
/** /**
* XML * XML
* @param parentNode * @param parentNode
* @param rs
* @param rs_detail * @param rs_detail
* @param dtIndex * @param dtIndex
* @param itemDirection * @param itemDirection
* @param rowNum * @param rowNum
* @return XML * @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(); StringBuilder xmlBuilder = new StringBuilder();
for(NodeFieldMappingDao nodeFieldMappingDao : nodeFieldMappingDaoList) { for(NodeFieldMappingDao nodeFieldMappingDao : nodeFieldMappingDaoList) {
//节点名称 //节点名称
@ -279,17 +333,25 @@ public class CommonVoucherUtil {
int _viewType = workflowField.getViewType(); int _viewType = workflowField.getViewType();
int _detailIndex = workflowField.getDetailIndex(); 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){ if(_viewType == 1 && _detailIndex != dtIndex){
continue; continue;
} }
} }
RuleMethodParam param = new RuleMethodParam(); RuleMethodParam param = new RuleMethodParam();
param.setRs(rs); //param.setRs(rs);
param.setRs_detail(rs_detail); param.setRs_detail(rs_detail);
param.setWorkflowBaseMap(workflowBaseMap); param.setWorkflowBaseMap(workflowBaseMap);
param.setRowNum(rowNum); param.setRowNum(rowNum);
param.setThisUser(thisUser); param.setThisUser(thisUser);
param.setMainTableInfo(mainTableInfo);
switch (_nodeType) { switch (_nodeType) {
case VoucherConstants.Node_Type_Comm_Text: case VoucherConstants.Node_Type_Comm_Text:
@ -306,7 +368,7 @@ public class CommonVoucherUtil {
break; break;
case VoucherConstants.Node_Type_Comm_Object: 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("<").append(_nodeName).append(">");
xmlBuilder.append(innerXML); xmlBuilder.append(innerXML);
xmlBuilder.append("</").append(_nodeName).append(">\n"); xmlBuilder.append("</").append(_nodeName).append(">\n");
@ -321,7 +383,7 @@ public class CommonVoucherUtil {
//别名 //别名
String alias = objectMappingDao.getAlias(); String alias = objectMappingDao.getAlias();
if (!_objectName.equals(_nodeName) || (StringUtils.isNotBlank(alias) && !alias.equals(_nodeName))) {//对象节点名称 与当前节点不一致 if(!_objectName.equals(_nodeName)){//对象节点名称 与当前节点不一致
continue; continue;
} }
@ -350,7 +412,7 @@ public class CommonVoucherUtil {
while (_rs_detail.next()) { while (_rs_detail.next()) {
for (String direction : Util.TokenizerString2(_entriesDirection, ",")) { 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){ if(innerItem != null && innerItem.length() > 0){
xmlBuilder.append("<").append(_nodeName).append(">"); xmlBuilder.append("<").append(_nodeName).append(">");
@ -363,7 +425,7 @@ public class CommonVoucherUtil {
} }
} else { //说明数据来自主表 } else { //说明数据来自主表
for(String direction : Util.TokenizerString2(_entriesDirection,",")){ 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){ if(innerItem != null && innerItem.length() > 0){
xmlBuilder.append("<").append(_nodeName).append(">"); xmlBuilder.append("<").append(_nodeName).append(">");
@ -381,36 +443,4 @@ public class CommonVoucherUtil {
} }
return xmlBuilder; return xmlBuilder;
} }
public User getThisUser() {
return thisUser;
}
public void setThisUser(User thisUser) {
this.thisUser = thisUser;
}
public Map<String, Object> getWorkflowBaseMap() {
return workflowBaseMap;
}
public void setWorkflowBaseMap(Map<String, Object> workflowBaseMap) {
this.workflowBaseMap = workflowBaseMap;
}
public List<ObjectMappingDao> getObjectMappingDaoList() {
return objectMappingDaoList;
}
public void setObjectMappingDaoList(List<ObjectMappingDao> objectMappingDaoList) {
this.objectMappingDaoList = objectMappingDaoList;
}
public List<NodeFieldMappingDao> getNodeFieldMappingDaoList() {
return nodeFieldMappingDaoList;
}
public void setNodeFieldMappingDaoList(List<NodeFieldMappingDao> nodeFieldMappingDaoList) {
this.nodeFieldMappingDaoList = nodeFieldMappingDaoList;
}
} }

View File

@ -1,6 +1,7 @@
package weaver.weilin.zhu.xyzq.scheduled.sqlmapper; package weaver.weilin.zhu.xyzq.scheduled.sqlmapper;
import aiyh.utils.annotation.recordset.*; 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.SyncConfigDao;
import weaver.weilin.zhu.xyzq.scheduled.entity.SyncConfigDetailDao; import weaver.weilin.zhu.xyzq.scheduled.entity.SyncConfigDetailDao;
@ -32,8 +33,7 @@ public interface OrganizationSyncSqlMapper {
@Association( @Association(
property = "foreignKeyField", property = "foreignKeyField",
column = "foreignKeyField", column = "foreignKeyField",
select = "weaver.common.util.CommonUtil.getFieldInfo", id = @Id(value = Integer.class,methodId = 2)
id = @Id(Integer.class)
) )
}) })
SyncConfigDao getConfigurationByKeyId(@ParamMapper("keyId") int keyId); SyncConfigDao getConfigurationByKeyId(@ParamMapper("keyId") int keyId);
@ -48,13 +48,23 @@ public interface OrganizationSyncSqlMapper {
@Association( @Association(
property = "modeField", property = "modeField",
column = "modeField", column = "modeField",
select = "weaver.weilin.zhu.common.util.CommonUtil.getFieldDetailInfo", id = @Id(value = Integer.class,methodId = 2)
id = @Id(Integer.class)
) )
}) })
@CollectionMethod(value = 1,desc = "获取详细的字段配置信息") @CollectionMethod(value = 1,desc = "获取详细的字段配置信息")
List<SyncConfigDetailDao> getConfigurationDetailByMainKeyId(@ParamMapper("mainId") int mainId); List<SyncConfigDetailDao> 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 * @param foreignKeyFieldName