提交 88737ff8 authored 作者: 窦馨雨's avatar 窦馨雨

合并分支 'qa' 到 'master'

新增飞书审批通过后同步勤策基本单位建议零售价功能 查看合并请求 !34
......@@ -27,11 +27,13 @@ import com.lark.oapi.service.corehr.v2.model.*;
import com.sfa.common.core.enums.ECode;
import com.sfa.common.core.exception.ServiceException;
import com.sfa.common.core.exception.auth.NotLoginException;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -69,6 +71,11 @@ public class FeiShuUtil {
* 飞书群机器人推送,此机器人为勤策消息通知机器人
*/
public static String qinceWebhook;
/**
* 飞书群机器人推送,此机器人为syncprice消息通知机器人
*/
public static String syncpriceWebhook;
/*链路中心*/
public static final String APP_LUZX = "luzx";
/*卤币学院*/
......@@ -463,6 +470,110 @@ public class FeiShuUtil {
}
/**
* 从审批信息字符串中提取核心业务值(产品名称、编码、箱规、供货价等)
* @param approvalInfoStr 完整的审批信息JSON字符串(包含form字段的那个字符串)
* @return 提取的核心值Map:key=字段名,value=字段值(已做类型转换)
*/
public Map<String, Object> getApprovalFormValues(String approvalInfoStr) {
// 定义返回的核心值Map,key用固定标识方便调用,value存对应值
Map<String, Object> formValueMap = new HashMap<>();
// 初始化默认值,避免空指针
// 产品名称(字符串)
formValueMap.put("productName", null);
// 产品编码(字符串)
formValueMap.put("productCode", null);
// 产品规格(字符串)
formValueMap.put("productSpec", null);
// 2B供货价(BigDecimal)
formValueMap.put("supplyPrice", null);
// 标准成本(BigDecimal)
formValueMap.put("standardCost", null);
try {
// 校验入参
if (StringUtils.isBlank(approvalInfoStr)) {
log.error("审批信息字符串为空,无法提取字段值");
return formValueMap;
}
// 解析审批信息JSON字符串
JSONObject approvalJson = JSONObject.parseObject(approvalInfoStr);
// 提取form字段(字符串类型的JSON数组)并解析
String formStr = approvalJson.getString("form");
if (StringUtils.isBlank(formStr)) {
log.error("审批信息中form字段为空,无法提取字段值");
return formValueMap;
}
JSONArray formFields = JSONArray.parseArray(formStr);
// 4遍历form数组,提取核心值(按字段名精准匹配)
for (int i = 0; i < formFields.size(); i++) {
JSONObject field = formFields.getJSONObject(i);
String fieldName = field.getString("name");
Object fieldValue = field.get("value");
// 跳过空字段名/空值
if (StringUtils.isBlank(fieldName) || fieldValue == null) {
continue;
}
// 按业务需求提取指定字段,做类型转换和容错
switch (fieldName) {
case "产品名称":
formValueMap.put("productName", fieldValue.toString().trim());
break;
case "产品编码":
formValueMap.put("productCode", fieldValue.toString().trim());
break;
case "产品箱规":
try {
Integer spec = Integer.parseInt(fieldValue.toString().trim());
formValueMap.put("productSpec", spec);
} catch (NumberFormatException e) {
log.error("产品箱规格式错误,值为:{}", fieldValue);
formValueMap.put("productSpec", null);
}
break;
case "2B供货价/出厂价(与T100一致的最小售卖单元)":
try {
BigDecimal price = new BigDecimal(fieldValue.toString().trim());
formValueMap.put("supplyPrice", price);
} catch (NumberFormatException e) {
log.error("2B供货价格式错误,值为:{}", fieldValue);
formValueMap.put("supplyPrice", null);
}
break;
case "标准成本(与T100一致的最小售卖单元)":
try {
BigDecimal cost = new BigDecimal(fieldValue.toString().trim());
formValueMap.put("standardCost", cost);
} catch (NumberFormatException e) {
log.error("标准成本格式错误,值为:{}", fieldValue);
formValueMap.put("standardCost", null);
}
break;
// 如需提取其他字段,直接在case里添加即可
default:
break;
}
}
log.info("审批信息字段提取完成,结果:{}", formValueMap);
} catch (Exception e) {
log.error("解析审批信息、提取字段值异常", e);
}
return formValueMap;
}
@Value("${feishu.group_robot.syncprice_webhook}")
public void setSyncpriceWebhook(String syncpriceWebhook) {
FeiShuUtil.syncpriceWebhook = syncpriceWebhook;
}
@Value("${feishu.group_robot.qince_webhook}")
public void setQinceWebhook(String qinceWebhook) {
FeiShuUtil.qinceWebhook = qinceWebhook;
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论