|
|
|
|
@ -46,7 +46,7 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据模板类型为模板变量赋值
|
|
|
|
|
* 模板类型:1=合同,2=发货单
|
|
|
|
|
* 模板类型:1=合同,2=发货单,3=项目变更,4=报价单
|
|
|
|
|
*
|
|
|
|
|
* @param request 赋值请求(包含变量名称数组、模板类型、业务ID等)
|
|
|
|
|
* @return 赋值后的模板变量列表
|
|
|
|
|
@ -61,6 +61,12 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
} else if ("2".equals(templateType)) {
|
|
|
|
|
// 发货单类型
|
|
|
|
|
return assignDeliveryTemplateVariables(request);
|
|
|
|
|
} else if ("3".equals(templateType)) {
|
|
|
|
|
// 项目变更类型
|
|
|
|
|
return assignDeliveryTemplateVariables(request);
|
|
|
|
|
} else if ("4".equals(templateType)) {
|
|
|
|
|
// 报价单类型
|
|
|
|
|
return assignDeliveryTemplateVariables(request);
|
|
|
|
|
} else {
|
|
|
|
|
throw new ServiceException("不支持的模板类型:" + templateType);
|
|
|
|
|
}
|
|
|
|
|
@ -87,18 +93,8 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
throw new ServiceException("合同信息不存在,合同ID:" + request.getContractId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 3. 查询合同物料列表(如果存在需要物料数据的变量)
|
|
|
|
|
List<ErpContractMaterialVo> contractMaterials = null;
|
|
|
|
|
boolean needMaterialData = allTemplateVariables.stream()
|
|
|
|
|
.anyMatch(var -> "erp_contract_material".equalsIgnoreCase(var.getDataSource()));
|
|
|
|
|
if (needMaterialData) {
|
|
|
|
|
ErpContractMaterialBo materialBo = new ErpContractMaterialBo();
|
|
|
|
|
materialBo.setContractId(request.getContractId());
|
|
|
|
|
contractMaterials = erpContractMaterialService.queryList(materialBo);
|
|
|
|
|
for (int i = 0; i < contractMaterials.size(); i++) {
|
|
|
|
|
contractMaterials.get(i).setSeq(i + 1L);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// 3. 合同物料列表
|
|
|
|
|
List<ErpContractMaterialVo> contractMaterials = contractInfo.getContractMaterialList();
|
|
|
|
|
|
|
|
|
|
// 4. 为所有模板变量赋值
|
|
|
|
|
return buildAssignResultList(allTemplateVariables, variableMap, contractInfo, contractMaterials);
|
|
|
|
|
@ -125,10 +121,10 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
* @return 赋值结果列表
|
|
|
|
|
*/
|
|
|
|
|
private List<TemplateVariableAssignVo> buildAssignResultList(
|
|
|
|
|
List<BaseTemplateVariableVo> allTemplateVariables,
|
|
|
|
|
Map<String, BaseTemplateVariableVo> variableMap,
|
|
|
|
|
ErpContractInfoVo contractInfo,
|
|
|
|
|
List<ErpContractMaterialVo> contractMaterials) {
|
|
|
|
|
List<BaseTemplateVariableVo> allTemplateVariables,
|
|
|
|
|
Map<String, BaseTemplateVariableVo> variableMap,
|
|
|
|
|
ErpContractInfoVo contractInfo,
|
|
|
|
|
List<ErpContractMaterialVo> contractMaterials) {
|
|
|
|
|
|
|
|
|
|
List<TemplateVariableAssignVo> resultList = new ArrayList<>();
|
|
|
|
|
for (BaseTemplateVariableVo variable : allTemplateVariables) {
|
|
|
|
|
@ -217,7 +213,7 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
* @return 变量名到配置的映射
|
|
|
|
|
*/
|
|
|
|
|
private Map<String, BaseTemplateVariableVo> buildVariableMap(
|
|
|
|
|
List<BaseTemplateVariableVo> templateVariables) {
|
|
|
|
|
List<BaseTemplateVariableVo> templateVariables) {
|
|
|
|
|
Map<String, BaseTemplateVariableVo> variableMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
for (BaseTemplateVariableVo variable : templateVariables) {
|
|
|
|
|
@ -276,9 +272,10 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
if ("erp_contract_material".equalsIgnoreCase(dataSource)) {
|
|
|
|
|
// 从合同物料列表中提取字段值
|
|
|
|
|
return getFieldValueFromMaterialList(contractMaterials, variable.getDataField());
|
|
|
|
|
} else {
|
|
|
|
|
// 默认从合同信息中获取
|
|
|
|
|
} else if ("erp_contract_info".equalsIgnoreCase(dataSource)){
|
|
|
|
|
return getFieldValueFromContract(contractInfo, variable.getDataField());
|
|
|
|
|
} else {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -348,7 +345,7 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
/**
|
|
|
|
|
* 将值转换为目标类型
|
|
|
|
|
*
|
|
|
|
|
* @param value 原始值
|
|
|
|
|
* @param value 原始值
|
|
|
|
|
* @return 转换后的值
|
|
|
|
|
*/
|
|
|
|
|
private Object convertValueToTargetType(Object value, BaseTemplateVariableVo variable) {
|
|
|
|
|
@ -384,8 +381,7 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
* @return 字符串表示
|
|
|
|
|
*/
|
|
|
|
|
private String convertScalarValueToString(Object value) {
|
|
|
|
|
if (value instanceof Collection<?>) {
|
|
|
|
|
Collection<?> collection = (Collection<?>) value;
|
|
|
|
|
if (value instanceof Collection<?> collection) {
|
|
|
|
|
if (!collection.isEmpty()) {
|
|
|
|
|
Object first = collection.iterator().next();
|
|
|
|
|
return first != null ? first.toString() : "";
|
|
|
|
|
@ -409,8 +405,7 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (value instanceof Collection<?>) {
|
|
|
|
|
Collection<?> collection = (Collection<?>) value;
|
|
|
|
|
if (value instanceof Collection<?> collection) {
|
|
|
|
|
if (collection.isEmpty()) {
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
@ -435,20 +430,12 @@ public class TemplateVariableAssignServiceImpl implements ITemplateVariableAssig
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (date != null) {
|
|
|
|
|
return DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_DOT, date);
|
|
|
|
|
return DateUtils.parseDateToStr(FormatsType.YYYY_MM_DD_CAN, date);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return value.toString();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据类型获取默认值
|
|
|
|
|
*
|
|
|
|
|
* @param isArrayType 是否为数组类型
|
|
|
|
|
* @return 默认值
|
|
|
|
|
*/
|
|
|
|
|
private Object getDefaultValueByType(boolean isArrayType) {
|
|
|
|
|
return isArrayType ? new ArrayList<>() : "";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|