|
|
@@ -26,6 +26,8 @@ import org.springframework.stereotype.Service;
|
|
|
import java.io.IOException;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.text.DecimalFormat;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.ZoneId;
|
|
|
@@ -121,9 +123,9 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
detail.put("numberField_majmvrdr", safeGetString(formData, "numberField_majn78hg")); // 运费补贴
|
|
|
detail.put("numberField_m9cdctdv", safeGetString(formData, "numberField_m8yanvkv")); // 销售单价未税
|
|
|
detail.put("numberField_m9cdctdz", safeGetString(formData, "numberField_m9b2rwwp")); // 金额未税小计
|
|
|
- detail.put("textField_m96r764p", safeGetString(formData, "textField_m96r764p")); // 产品小类
|
|
|
- detail.put("textField_m96r764o", safeGetString(formData, "textField_m96r764o")); // 产品大类
|
|
|
- detail.put("textField_m9cdctdp", safeGetString(formData, "numberField_majn78hg")); // 品牌
|
|
|
+ detail.put("textField_m96r764p", safeGetString(formData, "selectField_m8xtlcwg")); // 产品小类
|
|
|
+ detail.put("textField_m96r764o", safeGetString(formData, "selectField_m8xtlcwf")); // 产品大类
|
|
|
+ detail.put("textField_m9cdctdp", safeGetString(formData, "textField_m8yanvkk")); // 品牌
|
|
|
detail.put("textField_m9cdctdr", safeGetString(formData, "textField_m8yanvks")); // 产品单位
|
|
|
detail.put("textField_m9cdctds", safeGetString(formData, "textField_m8yanvkt")); // 颜色
|
|
|
detail.put("selectField_m9cdcte0", safeGetString(formData, "selectField_m8yanvkn")); // 是否带采
|
|
|
@@ -131,13 +133,13 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
detail.put("selectField_m9cdcte2", safeGetString(formData, "selectField_m8yanvkp")); // 是否明细
|
|
|
detail.put("textField_m9gewnyi", safeGetString(formData, "textField_m9gfqsow")); // 产品名称
|
|
|
detail.put("textField_m9gewnyj", safeGetString(formData, "textField_m9gfqsox")); // SKU码
|
|
|
- detail.put("selectField_m9qrzktd", safeGetString(formData, "selectField_m9cdsn2v")); // 订单状态
|
|
|
+ detail.put("selectField_m9qrzktd", "未生产"); // 订单状态
|
|
|
detail.put("textField_m9qnz34u", safeGetString(formData, "textField_m9gfqsox")); // 订单明细编号
|
|
|
detail.put("numberField_m9gfg5mi", safeGetString(formData, "numberField_m9gfg5mi")); // 成本单价含税
|
|
|
detail.put("selectField_m9me4py8", safeGetString(formData, "selectField_m9me4py8")); // 成本税率
|
|
|
detail.put("numberField_m9gfg5mj", safeGetString(formData, "numberField_m9gfg5mj")); // 成本单价无税
|
|
|
- detail.put("textField_maoynrp4", safeGetString(formData, "textField_maoynrp4")); // 供应商名称
|
|
|
- detail.put("textField_maoynrp5", safeGetString(formData, "textField_maoynrp5")); // 供应商编号
|
|
|
+ detail.put("textField_maoynrp4", safeGetString(formData, "textField_maqkme86")); // 供应商名称
|
|
|
+ detail.put("textField_maoynrp5", safeGetString(formData, "textField_maqkme87")); // 供应商编号
|
|
|
|
|
|
details.add(detail);
|
|
|
|
|
|
@@ -192,14 +194,22 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
xmupdateMap.put("numberField_m9iarxwc", existingXsddwkp.stripTrailingZeros().toPlainString());
|
|
|
|
|
|
// 执行更新
|
|
|
- ydClient.operateData(
|
|
|
- YDParam.builder()
|
|
|
- .formInstanceId(xmformInstanceId)
|
|
|
- .updateFormDataJson(JSONObject.toJSONString(xmupdateMap))
|
|
|
- .useLatestVersion(true)
|
|
|
- .build(),
|
|
|
- YDConf.FORM_OPERATION.update
|
|
|
- );
|
|
|
+// ydClient.operateData(
|
|
|
+// YDParam.builder()
|
|
|
+// .formInstanceId(xmformInstanceId)
|
|
|
+// .updateFormDataJson(JSONObject.toJSONString(xmupdateMap))
|
|
|
+// .useLatestVersion(true)
|
|
|
+// .build(),
|
|
|
+// YDConf.FORM_OPERATION.update
|
|
|
+// );
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formUuid("FORM-FFA52F0206684931A0F18C00C2C937EAAVI5")
|
|
|
+ .appType("APP_RPH7R3LF3SMXLRDY1ZJW")
|
|
|
+ .systemToken("7M866K91D4LVACB4EADAZ5UJG7IN3OGA33WAMNT")
|
|
|
+ .noExecuteExpression(true)
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_marp9xdr", xmformInstanceId)))
|
|
|
+ .formDataJson(JSONObject.toJSONString(xmupdateMap))
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
|
|
log.info("已更新项目表单,项目编号:{},累加含税金额:{}", xmbh, je);
|
|
|
|
|
|
@@ -240,6 +250,17 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
|
|
|
for (Map item : tableField) {
|
|
|
String sku = safeGetString(item, "textField_m9gewnyj");
|
|
|
+ Set<String> fillableFields = new HashSet<>(item.keySet());
|
|
|
+ fillableFields.removeAll(Arrays.asList(
|
|
|
+ "numberField_m9cdctdx", // 数量
|
|
|
+ "numberField_m9cdctdy", // 销售含税金额小计
|
|
|
+ "numberField_majmvrdr", // 运费补贴
|
|
|
+ "numberField_m9cdctdz", // 销售未税金额小计
|
|
|
+ "numberField_m9gfg5mi", // 成本单价含税
|
|
|
+ "numberField_m9gfg5mj" // 成本单价无税
|
|
|
+ // 可继续添加其他数值字段
|
|
|
+ ));
|
|
|
+
|
|
|
if (skuMap.containsKey(sku)) {
|
|
|
// 如果SKU已存在,则累加数值字段
|
|
|
Map existingItem = skuMap.get(sku);
|
|
|
@@ -273,11 +294,23 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
double currentWsCost = getDoubleSafe(existingItem, "numberField_m9gfg5mj");
|
|
|
double newWsCost = getDoubleSafe(item, "numberField_m9gfg5mj");
|
|
|
existingItem.put("numberField_m9gfg5mj", currentWsCost + newWsCost);
|
|
|
+ for (String field : fillableFields) {
|
|
|
+ Object existingValue = existingItem.get(field);
|
|
|
+ Object newValue = item.get(field);
|
|
|
+
|
|
|
+ boolean isEmptyExisting = existingValue == null ||
|
|
|
+ (existingValue instanceof String && ((String) existingValue).trim().isEmpty());
|
|
|
+ boolean hasValidNewValue = newValue != null &&
|
|
|
+ (! (newValue instanceof String) || !((String) newValue).trim().isEmpty());
|
|
|
+
|
|
|
+ if (isEmptyExisting && hasValidNewValue) {
|
|
|
+ existingItem.put(field, newValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- // 单价字段保持不变(销售单价含税/未税)
|
|
|
} else {
|
|
|
// 如果SKU不存在,则添加到map中
|
|
|
- skuMap.put(sku, new HashMap(item));
|
|
|
+ skuMap.put(sku, item);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -301,6 +334,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
updateMap.put("numberField_m9cdcte5", totalZsl.doubleValue());
|
|
|
updateMap.put("numberField_ma14qlv3", totalZsl.doubleValue());
|
|
|
updateMap.put("numberField_ma14qlv7", totalZsl.doubleValue());
|
|
|
+ updateMap.put("numberField_maowfpzl", totalZsl.doubleValue());
|
|
|
updateMap.put("numberField_m9cdcte7", totalXsDj.doubleValue() + totalYfzj.doubleValue());
|
|
|
updateMap.put("numberField_m9cdcte9", totalJexj.doubleValue());
|
|
|
updateMap.put("numberField_majmvrdq", totalYfzj.doubleValue());
|
|
|
@@ -308,11 +342,19 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
updateMap.put("numberField_m9iap5e6", totalXsDj.doubleValue() + totalYfzj.doubleValue());
|
|
|
System.out.println("updateMap=======" + updateMap);
|
|
|
// 更新主表单
|
|
|
+// ydClient.operateData(YDParam.builder()
|
|
|
+// .formInstanceId(formInstanceId1)
|
|
|
+// .updateFormDataJson(JSONObject.toJSONString(updateMap))
|
|
|
+// .useLatestVersion(true)
|
|
|
+// .build(), YDConf.FORM_OPERATION.update);
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
- .formInstanceId(formInstanceId1)
|
|
|
- .updateFormDataJson(JSONObject.toJSONString(updateMap))
|
|
|
- .useLatestVersion(true)
|
|
|
- .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ .formUuid("FORM-C9BC8F7A159E4281B707ADBE1628EB7FDACQ")
|
|
|
+ .appType("APP_RPH7R3LF3SMXLRDY1ZJW")
|
|
|
+ .systemToken("7M866K91D4LVACB4EADAZ5UJG7IN3OGA33WAMNT")
|
|
|
+ .noExecuteExpression(true)
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_m9cdcten", ddbh)))
|
|
|
+ .formDataJson(JSONObject.toJSONString(updateMap))
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
|
|
|
// 批量更新子表单状态为“已同步”
|
|
|
if (!details2.isEmpty()) {
|
|
|
@@ -456,6 +498,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
String fromAccountName = String.valueOf(data.get("textField_m9ze3rj8")); // 付款户名
|
|
|
String toAccountTypeStr = String.valueOf(data.get("textField_m9ze3rjm")); // 收款类型
|
|
|
String djlx = String.valueOf(data.get("textField_m9ze3rjr")); // 单据类型
|
|
|
+ String applyDepartment = String.valueOf(data.get("textField_m9ze3rjy")); // 回单邮箱
|
|
|
String paymentOrderType = djlx.contains("支付宝") ? "alipay" : "common";
|
|
|
// Map<String, String> accountMap = new HashMap<>();
|
|
|
// accountMap.put("上海韵林礼品有限公司", "1001260509024819590");
|
|
|
@@ -516,6 +559,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
mapAll.put("toBank", toBank);
|
|
|
mapAll.put("securityCode", securityCode);
|
|
|
mapAll.put("metaJson", metaJson);
|
|
|
+ mapAll.put("applyDepartment", applyDepartment);
|
|
|
|
|
|
// 发起支付
|
|
|
String response = UtilHttp.doPost(url, headers, null, null, mapAll);
|
|
|
@@ -564,6 +608,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
mapAll.put("toBank", toBank);
|
|
|
mapAll.put("securityCode", securityCode);
|
|
|
mapAll.put("metaJson", metaJson);
|
|
|
+ mapAll.put("applyDepartment", applyDepartment);
|
|
|
|
|
|
String response = UtilHttp.doPost(url, headers, null, null, mapAll);
|
|
|
log.info("非物流付款单 - 支付成功 [凭证号: {}, 金额: {}], 响应: {}", instructionId, payAmount, response);
|
|
|
@@ -638,14 +683,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
log.info("开始处理单据: formInstanceId={}", formInstanceId);
|
|
|
|
|
|
// ===== 开始执行原 lilinJG 方法中的核心逻辑 =====
|
|
|
-
|
|
|
- // 获取表单数据
|
|
|
- Map data = (Map) ydClient.queryData(YDParam.builder()
|
|
|
- .formInstId(formInstanceId)
|
|
|
- .appType(ydConf.getAppType())
|
|
|
- .systemToken(ydConf.getSystemToken())
|
|
|
- .userId(ddConf.getOperator())
|
|
|
- .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+ Map data = (Map) item.get("formData");
|
|
|
|
|
|
if (data == null) {
|
|
|
log.warn("获取表单数据为空,formInstanceId: {}", formInstanceId);
|
|
|
@@ -674,6 +712,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
int completedCount = 0;
|
|
|
String zfqk = "";
|
|
|
String message = "";
|
|
|
+ long bankTrxTime = 0L;
|
|
|
for (int i = 0; i < tableField.size(); i++) {
|
|
|
Map<String, Object> row = new HashMap<>(tableField.get(i)); // 复制原数据用于更新
|
|
|
String subInstructionId = String.valueOf(row.get("textField_mdnuob9a")); // 子表流水号
|
|
|
@@ -687,6 +726,21 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
JSONObject jsonResponse = JSON.parseObject(response);
|
|
|
JSONObject dataObj = jsonResponse.getJSONObject("data");
|
|
|
String code = dataObj.getString("code");
|
|
|
+ String bankTrxTimeStr = dataObj.getString("bankTrxTime");
|
|
|
+
|
|
|
+ // 修复:添加空值检查
|
|
|
+ if (bankTrxTimeStr != null && !bankTrxTimeStr.trim().isEmpty()) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ try {
|
|
|
+ Date date = sdf.parse(bankTrxTimeStr);
|
|
|
+ bankTrxTime = date.getTime(); // 获取时间戳(毫秒)
|
|
|
+ } catch (ParseException e) {
|
|
|
+ log.warn("时间格式解析失败: {}", bankTrxTimeStr, e);
|
|
|
+ bankTrxTime = 0L; // 解析失败时设为0
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ bankTrxTime = 0L; // 空字符串时设为0
|
|
|
+ }
|
|
|
zfqk = "P0000".equals(code) ? "支付成功" : "支付异常";
|
|
|
message = dataObj != null ? dataObj.getString("message") : "";
|
|
|
|
|
|
@@ -716,12 +770,17 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
mainStatus = "已审批待付款";
|
|
|
} else if (completedCount == updatedRows.size()) {
|
|
|
mainStatus = "已审批已付款";
|
|
|
+ if (bankTrxTime > 0) {
|
|
|
+ updateData.put("dateField_maw6ci7a", bankTrxTime);
|
|
|
+ updateData.put("dateField_me2m3mmd", bankTrxTime);
|
|
|
+ }
|
|
|
} else {
|
|
|
mainStatus = "已审批部分付款";
|
|
|
}
|
|
|
|
|
|
updateData.put("selectField_ma0w9yrb", mainStatus);
|
|
|
|
|
|
+
|
|
|
// 提交更新
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.formInstanceId(formInstanceId)
|
|
|
@@ -748,14 +807,32 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
JSONObject dataObj = jsonResponse.getJSONObject("data");
|
|
|
String message = dataObj != null ? dataObj.getString("message") : "";
|
|
|
String code = dataObj.getString("code");
|
|
|
+ String bankTrxTimeStr = dataObj.getString("bankTrxTime");
|
|
|
+
|
|
|
+ long bankTrxTime = 0L; // 初始化为0
|
|
|
+ // 修复:添加空值检查
|
|
|
+ if (bankTrxTimeStr != null && !bankTrxTimeStr.trim().isEmpty()) {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ try {
|
|
|
+ Date date = sdf.parse(bankTrxTimeStr);
|
|
|
+ bankTrxTime = date.getTime(); // 获取时间戳(毫秒)
|
|
|
+ } catch (ParseException e) {
|
|
|
+ log.warn("时间格式解析失败: {}", bankTrxTimeStr, e);
|
|
|
+ bankTrxTime = 0L; // 解析失败时设为0
|
|
|
+ }
|
|
|
+ }
|
|
|
String zfqk = "P0000".equals(code) ? "支付成功" : "支付异常";
|
|
|
|
|
|
Map<String, Object> updateData = new HashMap<>();
|
|
|
updateData.put("selectField_ma0w9yrb", "已审批已付款");
|
|
|
updateData.put("radioField_mel5n51w", zfqk);
|
|
|
updateData.put("textareaField_mel5n51x", message);
|
|
|
+
|
|
|
if (message != null && message.contains("成功")) {
|
|
|
- // 更新主表状态为“已审批已付款”
|
|
|
+ if (bankTrxTime > 0) {
|
|
|
+ updateData.put("dateField_maw6ci7a", bankTrxTime);
|
|
|
+ updateData.put("dateField_me2m3mmd", bankTrxTime);
|
|
|
+ }
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.formInstanceId(formInstanceId)
|
|
|
.updateFormDataJson(JSON.toJSONString(
|
|
|
@@ -794,10 +871,12 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
@Override
|
|
|
public McR lilinLS(Map<String, Object> map) {
|
|
|
List<String> khdaList = Arrays.asList(
|
|
|
- "1001260509024819590",
|
|
|
- "1001260509424880696",
|
|
|
- "1001260509324868573",
|
|
|
- "1001260509324808614"
|
|
|
+ "1001260509024819590","121911279910703",
|
|
|
+ "1001260509424880696","931004010000963305",
|
|
|
+ "1001260509324868573","440382314019",
|
|
|
+ "1001260509324808614","31050161373600008173",
|
|
|
+ "1001260509424865022","1001260509300324484",
|
|
|
+ "1001260509300325413"
|
|
|
);
|
|
|
|
|
|
// 获取 token 一次
|
|
|
@@ -827,7 +906,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
log.info("开始对账单同步,accountNo: {}", accountNo);
|
|
|
|
|
|
// 准备时间范围
|
|
|
- String dayFromId = LocalDate.now().minusDays(7).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
|
+ String dayFromId = LocalDate.now().minusDays(12).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
|
String dayToId = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
|
|
|
|
// 构建 POST 请求体
|
|
|
@@ -990,7 +1069,7 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
formData.put("textField_mdh51nxr", transFlag);
|
|
|
formData.put("textField_mdh51nxs", catalogName);
|
|
|
formData.put("selectField_m982msou", accountName);
|
|
|
- formData.put("textField_megl2h3a", accountName);
|
|
|
+ formData.put("textField_megl2h3a", khaccountName);
|
|
|
formData.put("numberField_megl2h3k", crAmount);
|
|
|
formData.put("radioField_me267g3r", "接口创建");
|
|
|
|
|
|
@@ -1085,22 +1164,70 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
|
|
|
// 处理子表数据
|
|
|
List<Map<String, Object>> tableField = (List<Map<String, Object>>) data.get("tableField_m9m8zhyy");
|
|
|
+ List<Map<String, Object>> tableField1 = (List<Map<String, Object>>) data.get("tableField_m8yanvjk");
|
|
|
List<Map<String, Object>> subBankStatementList = new ArrayList<>();
|
|
|
+ // 统计分布:是否有“以产定销”和“以销定产”
|
|
|
+ boolean hasChanXiao = false; // 以产定销
|
|
|
+ boolean hasXiaoChan = false; // 以销定产
|
|
|
|
|
|
- if (tableField != null && !tableField.isEmpty()) {
|
|
|
- for (int i = 0; i < tableField.size(); i++) {
|
|
|
- Map<String, Object> row = tableField.get(i);
|
|
|
+ if (tableField != null) {
|
|
|
+ for (Map<String, Object> row : tableField) {
|
|
|
if (row == null) continue;
|
|
|
-
|
|
|
- Map<String, Object> newItem = new HashMap<>();
|
|
|
- newItem.put("itemIndex", i + 1);
|
|
|
- newItem.put("amount", getAmountFromMap(row, "numberField_m9u2a5tf").doubleValue());
|
|
|
- newItem.put("projectInfo", getStringValue(row, "textField_m9i9k5cl") + "-" + getStringValue(row, "textField_m8yedujm"));
|
|
|
- newItem.put("userMemo", userMemo);
|
|
|
- newItem.put("trxFlag", transFlag);
|
|
|
- newItem.put("catalogName", catalogName);
|
|
|
-
|
|
|
- subBankStatementList.add(newItem);
|
|
|
+ String xmlx = getStringValue(row, "selectField_mfosn87t");
|
|
|
+ if ("以产定销".equals(xmlx)) {
|
|
|
+ hasChanXiao = true;
|
|
|
+ } else if ("以销定产".equals(xmlx)) {
|
|
|
+ hasXiaoChan = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 根据分布决定处理策略
|
|
|
+ if (hasChanXiao && !hasXiaoChan) {
|
|
|
+ // 情况1:全是“以产定销” → 使用 tableField1 的所有行
|
|
|
+ if (tableField1 != null) {
|
|
|
+ for (int i = 0; i < tableField1.size(); i++) {
|
|
|
+ Map<String, Object> row = tableField1.get(i);
|
|
|
+ if (row == null) continue;
|
|
|
+
|
|
|
+ Map<String, Object> newItem = buildItemForChanXiao(row, i, userMemo, transFlag, catalogName);
|
|
|
+ subBankStatementList.add(newItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (hasXiaoChan && !hasChanXiao) {
|
|
|
+ // 情况2:全是“以销定产” → 使用 tableField 的所有行
|
|
|
+ if (tableField != null) {
|
|
|
+ for (int i = 0; i < tableField.size(); i++) {
|
|
|
+ Map<String, Object> row = tableField.get(i);
|
|
|
+ if (row == null) continue;
|
|
|
+
|
|
|
+ Map<String, Object> newItem = buildItemForXiaoChan(row, i, userMemo, transFlag, catalogName);
|
|
|
+ subBankStatementList.add(newItem);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (hasChanXiao && hasXiaoChan) {
|
|
|
+ // 情况3:混合存在
|
|
|
+ // a. tableField 中只保留“以销定产”的行
|
|
|
+ if (tableField != null) {
|
|
|
+ for (int i = 0; i < tableField.size(); i++) {
|
|
|
+ Map<String, Object> row = tableField.get(i);
|
|
|
+ if (row == null) continue;
|
|
|
+ String xmlx = getStringValue(row, "selectField_mfosn87t");
|
|
|
+ if ("以销定产".equals(xmlx)) {
|
|
|
+ Map<String, Object> newItem = buildItemForXiaoChan(row, i, userMemo, transFlag, catalogName);
|
|
|
+ subBankStatementList.add(newItem);
|
|
|
+ }
|
|
|
+ // “以产定销”的行被舍弃
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // b. 加入 tableField1 的全部数据(“以产定销”专用)
|
|
|
+ if (tableField1 != null) {
|
|
|
+ for (int i = 0; i < tableField1.size(); i++) {
|
|
|
+ Map<String, Object> row = tableField1.get(i);
|
|
|
+ if (row == null) continue;
|
|
|
+
|
|
|
+ Map<String, Object> newItem = buildItemForChanXiao(row, i, userMemo, transFlag, catalogName);
|
|
|
+ subBankStatementList.add(newItem);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -1200,7 +1327,57 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
// 返回结果(可附加统计)
|
|
|
return McR.success(result);
|
|
|
}
|
|
|
+ // 构建“以产定销”类型的数据(来自 tableField1)
|
|
|
+ private Map<String, Object> buildItemForChanXiao(Map<String, Object> row,
|
|
|
+ int index,
|
|
|
+ String userMemo,
|
|
|
+ String transFlag,
|
|
|
+ String catalogName) {
|
|
|
+ Map<String, Object> item = new HashMap<>();
|
|
|
+ item.put("itemIndex", index + 1);
|
|
|
+
|
|
|
+ // amount 取 numberField_md5e3oib
|
|
|
+ BigDecimal amount = getAmountFromMap(row, "numberField_mfq6budd");
|
|
|
+ item.put("amount", amount != null ? amount.doubleValue() : 0.0);
|
|
|
+
|
|
|
+ // projectInfo = textField_md5e3oih + "-" + textField_md5e3oig
|
|
|
+ String part1 = getStringValue(row, "textField_md5e3oih");
|
|
|
+ String part2 = getStringValue(row, "textField_md5e3oig");
|
|
|
+ String projectInfo = (part1 != null ? part1 : "") + "-" + (part2 != null ? part2 : "");
|
|
|
+ item.put("projectInfo", projectInfo);
|
|
|
+
|
|
|
+ item.put("userMemo", userMemo);
|
|
|
+ item.put("trxFlag", transFlag);
|
|
|
+ item.put("catalogName", catalogName);
|
|
|
+
|
|
|
+ return item;
|
|
|
+ }
|
|
|
|
|
|
+ // 构建“以销定产”类型的数据(来自 tableField)
|
|
|
+ private Map<String, Object> buildItemForXiaoChan(Map<String, Object> row,
|
|
|
+ int index,
|
|
|
+ String userMemo,
|
|
|
+ String transFlag,
|
|
|
+ String catalogName) {
|
|
|
+ Map<String, Object> item = new HashMap<>();
|
|
|
+ item.put("itemIndex", index + 1);
|
|
|
+
|
|
|
+ // amount 取 numberField_m9u2a5tf
|
|
|
+ BigDecimal amount = getAmountFromMap(row, "numberField_m9u2a5tf");
|
|
|
+ item.put("amount", amount != null ? amount.doubleValue() : 0.0);
|
|
|
+
|
|
|
+ // projectInfo = textField_m9i9k5cl + "-" + textField_m8yedujm
|
|
|
+ String part1 = getStringValue(row, "textField_m9i9k5cl");
|
|
|
+ String part2 = getStringValue(row, "textField_m8yedujm");
|
|
|
+ String projectInfo = (part1 != null ? part1 : "") + "-" + (part2 != null ? part2 : "");
|
|
|
+ item.put("projectInfo", projectInfo);
|
|
|
+
|
|
|
+ item.put("userMemo", userMemo);
|
|
|
+ item.put("trxFlag", transFlag);
|
|
|
+ item.put("catalogName", catalogName);
|
|
|
+
|
|
|
+ return item;
|
|
|
+ }
|
|
|
@Override
|
|
|
public McR taskPLJG() {
|
|
|
List<Map> list = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
@@ -1222,18 +1399,19 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
for (Map item : list) {
|
|
|
try {
|
|
|
String formInstanceId = getStringValue(item, "formInstanceId");
|
|
|
+
|
|
|
if (formInstanceId == null || formInstanceId.isEmpty()) {
|
|
|
log.warn("跳过:formInstanceId 为空");
|
|
|
continue;
|
|
|
}
|
|
|
-
|
|
|
+ Map data = (Map) item.get("formData");
|
|
|
// 获取源表单详情
|
|
|
- Map data = (Map) ydClient.queryData(YDParam.builder()
|
|
|
- .formInstId(formInstanceId)
|
|
|
- .appType(ydConf.getAppType())
|
|
|
- .systemToken(ydConf.getSystemToken())
|
|
|
- .userId(ddConf.getOperator())
|
|
|
- .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
+// Map data = (Map) ydClient.queryData(YDParam.builder()
|
|
|
+// .formInstId(formInstanceId)
|
|
|
+// .appType(ydConf.getAppType())
|
|
|
+// .systemToken(ydConf.getSystemToken())
|
|
|
+// .userId(ddConf.getOperator())
|
|
|
+// .build(), YDConf.FORM_QUERY.retrieve_id).getFormData();
|
|
|
|
|
|
if (data == null) {
|
|
|
log.warn("formInstanceId={} 的 formData 为空,跳过", formInstanceId);
|
|
|
@@ -1244,30 +1422,35 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
String mainInstructionId = getStringValue(data, "serialNumberField_m9ze3rjd"); // 主表流水号
|
|
|
|
|
|
// 查询目标表单是否已存在该 mainInstructionId 的记录
|
|
|
- List<Map> list1 = (List<Map>) ydClient.queryData(
|
|
|
- YDParam.builder()
|
|
|
- .formUuid("FORM-6B8A683A23524D3596C8C6CA13327EF3552K")
|
|
|
- .appType("APP_RPH7R3LF3SMXLRDY1ZJW")
|
|
|
- .systemToken("7M866K91D4LVACB4EADAZ5UJG7IN3OGA33WAMNT")
|
|
|
- .searchCondition(JSON.toJSONString(UtilMap.map("textField_mdsk7rlm", mainInstructionId)))
|
|
|
- .build(),
|
|
|
- YDConf.FORM_QUERY.retrieve_list_all
|
|
|
- ).getData();
|
|
|
+// List<Map> list1 = (List<Map>) ydClient.queryData(
|
|
|
+// YDParam.builder()
|
|
|
+// .formUuid("FORM-6B8A683A23524D3596C8C6CA13327EF3552K")
|
|
|
+// .appType("APP_RPH7R3LF3SMXLRDY1ZJW")
|
|
|
+// .systemToken("7M866K91D4LVACB4EADAZ5UJG7IN3OGA33WAMNT")
|
|
|
+// .searchCondition(JSON.toJSONString(UtilMap.map("textField_mdsk7rlm", mainInstructionId)))
|
|
|
+// .build(),
|
|
|
+// YDConf.FORM_QUERY.retrieve_list_all
|
|
|
+// ).getData();
|
|
|
|
|
|
// 如果目标表单中已存在该流水号,则跳过,不再新增
|
|
|
- if (list1 != null && !list1.isEmpty()) {
|
|
|
- log.info("已存在重复数据,跳过插入:mainInstructionId={}", mainInstructionId);
|
|
|
- continue;
|
|
|
- }
|
|
|
+// if (list1 != null && !list1.isEmpty()) {
|
|
|
+// log.info("已存在重复数据,跳过插入:mainInstructionId={}", mainInstructionId);
|
|
|
+// continue;
|
|
|
+// }
|
|
|
|
|
|
// 继续提取其他字段
|
|
|
String note = getStringValue(data, "textField_m9ze3rk3"); // 付款用途
|
|
|
String toAccountCode = getStringValue(data, "textField_m9ze3rjs"); // 收款账号
|
|
|
String toAccountName = getStringValue(data, "textField_m9ze3rjl"); // 收款户名
|
|
|
+
|
|
|
+ List<String> sqr =UtilMap.getList(data, "employeeField_madmj9kw_id");// 申请人
|
|
|
+ String fklsh = getStringValue(data, "textField_ma13ih7u"); // 付款流程编号
|
|
|
String toBank = getStringValue(data, "textField_m9ze3rjr"); // 收款银行支行
|
|
|
String fromAccountCode = getStringValue(data, "textField_mdfnuyl9"); // 付款账号
|
|
|
String fromAccountName = getStringValue(data, "textField_m9ze3rj8"); // 付款户名
|
|
|
- long zfsj = System.currentTimeMillis();//支付时间
|
|
|
+// long zfsj = System.currentTimeMillis();//支付时间
|
|
|
+// String zfsj = getStringValue(data, "dateField_me2m3mmd");//支付时间
|
|
|
+
|
|
|
BigDecimal PayAmount;
|
|
|
List<Map<String, Object>> updateList = new ArrayList<>();
|
|
|
|
|
|
@@ -1294,11 +1477,12 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
tablemap.put("selectField_m9ze3rjf", fklx);
|
|
|
tablemap.put("numberField_m9ze3rk4", payAmountStr);
|
|
|
tablemap.put("textField_m9ze3rk3", note);
|
|
|
+ tablemap.put("employeeField_maopzwym", sqr);
|
|
|
tablemap.put("textField_m9ze3rjl", toAccountName);
|
|
|
tablemap.put("textField_m9ze3rjr", toBank);
|
|
|
tablemap.put("textField_m9ze3rjs", toAccountCode);
|
|
|
tablemap.put("textField_ma13k7v3", instructionId);
|
|
|
- tablemap.put("textField_ma13k7v4", mainInstructionId);
|
|
|
+ tablemap.put("textField_ma13k7v4", fklsh);
|
|
|
tablemap.put("textField_madmzxce", xmbh);
|
|
|
updateList.add(tablemap);
|
|
|
}
|
|
|
@@ -1313,11 +1497,12 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
tablemap.put("selectField_m9ze3rjf", fklx);
|
|
|
tablemap.put("numberField_m9ze3rk4", PayAmount);
|
|
|
tablemap.put("textField_m9ze3rk3", note);
|
|
|
+ tablemap.put("employeeField_maopzwym", sqr);
|
|
|
tablemap.put("textField_m9ze3rjl", toAccountName);
|
|
|
tablemap.put("textField_m9ze3rjr", toBank);
|
|
|
tablemap.put("textField_m9ze3rjs", toAccountCode);
|
|
|
tablemap.put("textField_ma13k7v3", instructionId);
|
|
|
- tablemap.put("textField_ma13k7v4", mainInstructionId);
|
|
|
+ tablemap.put("textField_ma13k7v4", fklsh);
|
|
|
tablemap.put("textField_madmzxce", xmbh);
|
|
|
updateList.add(tablemap);
|
|
|
}
|
|
|
@@ -1325,7 +1510,8 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
// 构建目标数据
|
|
|
Map<String, Object> formData = new HashMap<>();
|
|
|
formData.put("tableField_ma13k7v1", updateList);
|
|
|
- formData.put("dateField_me2m2oeu", zfsj);
|
|
|
+ formData.put("dateField_me2m2oeu", data.get("dateField_me2m3mmd"));
|
|
|
+ formData.put("selectField_megv3ask", "接口创建");
|
|
|
formData.put("numberField_mac3ccn8", PayAmount);
|
|
|
formData.put("textField_mdsk7rlm", mainInstructionId); // 主流水号用于去重
|
|
|
formData.put("employeeField_m8yf6gkl", Arrays.asList("275412081437800471"));
|
|
|
@@ -1333,9 +1519,16 @@ public class LiLinServiceImpl implements LiLinService {
|
|
|
// 执行新增
|
|
|
ydClient.operateData(YDParam.builder()
|
|
|
.formUuid("FORM-6B8A683A23524D3596C8C6CA13327EF3552K")
|
|
|
- .formDataJson(JSON.toJSONString(formData))
|
|
|
- .userId("275412081437800471")
|
|
|
- .build(), YDConf.FORM_OPERATION.create);
|
|
|
+ .appType("APP_RPH7R3LF3SMXLRDY1ZJW")
|
|
|
+ .systemToken("7M866K91D4LVACB4EADAZ5UJG7IN3OGA33WAMNT")
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mdsk7rlm", mainInstructionId)))
|
|
|
+ .formDataJson(JSONObject.toJSONString(formData))
|
|
|
+ .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+// ydClient.operateData(YDParam.builder()
|
|
|
+// .formUuid("FORM-6B8A683A23524D3596C8C6CA13327EF3552K")
|
|
|
+// .formDataJson(JSON.toJSONString(formData))
|
|
|
+// .userId("275412081437800471")
|
|
|
+// .build(), YDConf.FORM_OPERATION.create);
|
|
|
|
|
|
log.info("成功插入新数据:mainInstructionId={}, 付款类型={}", mainInstructionId, fklx);
|
|
|
|