From 86fd3a8b7b8affed83663266dc5639f6bfe576de Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期四, 19 三月 2026 18:13:33 +0800
Subject: [PATCH] 工序绑定参数传参调整
---
src/main/java/com/ruoyi/productionPlan/service/impl/SalesDeliveryServiceImpl.java | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 176 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/ruoyi/productionPlan/service/impl/SalesDeliveryServiceImpl.java b/src/main/java/com/ruoyi/productionPlan/service/impl/SalesDeliveryServiceImpl.java
new file mode 100644
index 0000000..084b249
--- /dev/null
+++ b/src/main/java/com/ruoyi/productionPlan/service/impl/SalesDeliveryServiceImpl.java
@@ -0,0 +1,176 @@
+package com.ruoyi.productionPlan.service.impl;
+
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.ruoyi.basic.pojo.Customer;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.config.AliDingConfig;
+import com.ruoyi.framework.util.AliDingUtils;
+import com.ruoyi.production.pojo.ProductMaterialSku;
+import com.ruoyi.productionPlan.enums.DataSourceTypeEnum;
+import com.ruoyi.productionPlan.pojo.ProductionPlan;
+import com.ruoyi.productionPlan.pojo.SalesDelivery;
+import com.ruoyi.productionPlan.mapper.SalesDeliveryMapper;
+import com.ruoyi.productionPlan.service.SalesDeliveryService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.time.Instant;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 閿�鍞彂璐ф槑缁�(瀹滄惌) 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-19 11:49:57
+ */
+@Service
+@Slf4j
+public class SalesDeliveryServiceImpl extends ServiceImpl<SalesDeliveryMapper, SalesDelivery> implements SalesDeliveryService {
+
+ @Autowired
+ private SalesDeliveryMapper salesDeliveryMapper;
+
+ @Autowired
+ private AliDingConfig aliDingConfig;
+
+ @Override
+ public void syncSalesDeliveryJob() {
+ syncSalesDelivery();
+ }
+
+ /**
+ * 鍚屾鏁版嵁
+ */
+ @Transactional(rollbackFor = Exception.class)
+ public void syncSalesDelivery() {
+ try {
+ JSONArray searchConditions = new JSONArray();
+ JSONObject condition = new JSONObject();
+ condition.put("key", "processApprovedResult");
+ JSONArray valueArray = new JSONArray();
+ valueArray.add("agree");
+ condition.put("value", valueArray);
+ condition.put("type", "ARRAY");
+ condition.put("operator", "in");
+ condition.put("componentName", "SelectField");
+ searchConditions.add(condition);
+
+ JSONObject statusCondition = new JSONObject();
+ statusCondition.put("key", "processInstanceStatus");
+ JSONArray statusValueArray = new JSONArray();
+ statusValueArray.add("COMPLETED");
+ statusCondition.put("value", statusValueArray);
+ statusCondition.put("type", "ARRAY");
+ statusCondition.put("operator", "in");
+ statusCondition.put("componentName", "SelectField");
+ searchConditions.add(statusCondition);
+
+ String searchFieldJson = searchConditions.toJSONString();
+
+ JSONArray dataArr = AliDingUtils.getFormDataList(aliDingConfig, aliDingConfig.getSalesDeliveryFormUuid(), searchFieldJson, this, SalesDelivery::getFormModifiedTime);
+
+ if (dataArr.isEmpty()) {
+ return;
+ }
+
+ // 瑙f瀽骞朵繚瀛樻暟鎹�
+ List<SalesDelivery> list = parseSalesDeliverys(dataArr);
+ if (!list.isEmpty()) {
+ // 澶勭悊鏇存柊鎴栨柊澧�
+ int affected = processSaveOrUpdate(list);
+ log.info("鏁版嵁鍚屾瀹屾垚锛屽叡鍚屾 {} 鏉℃暟鎹�", affected);
+ }
+
+ } catch (Exception e) {
+ log.error("鍚屾鐢熶骇璁″垝寮傚父", e);
+ }
+ }
+
+ private List<SalesDelivery> parseSalesDeliverys(JSONArray dataArr) {
+ List<SalesDelivery> list = new ArrayList<>();
+ for (int i = 0; i < dataArr.size(); i++) {
+ JSONObject item = dataArr.getJSONObject(i);
+ String formInstanceId = item.getString("formInstanceId");
+ JSONObject formData = item.getJSONObject("formData");
+ JSONArray tableArr = formData.getJSONArray("tableField_kt8b0qse");
+ if (tableArr == null || tableArr.isEmpty()) {
+ continue;
+ }
+ for (int j = 0; j < tableArr.size(); j++) {
+ JSONObject row = tableArr.getJSONObject(j);
+ SalesDelivery salesDelivery = new SalesDelivery();
+ salesDelivery.setFormInstanceId(formInstanceId);
+ Long time = formData.getLong("dateField_kt8b0qsm");
+ LocalDate date = Instant.ofEpochMilli(time).atZone(ZoneId.of("Asia/Shanghai")).toLocalDate();
+ salesDelivery.setDeliveryDate(date);//渚涜揣鏃ユ湡
+ salesDelivery.setDeliveryCode(formData.getString("textField_kt8b0qrp"));//鍙戣揣鍗曠紪鍙�
+ salesDelivery.setProjectName(formData.getString("textField_l92dg1tg"));//椤圭洰鍚嶇О
+ salesDelivery.setDeliveryPlace(formData.getString("textField_kt8b0qsd"));//閫佽揣鍦扮偣
+ salesDelivery.setLinkMan(formData.getString("textField_kt8b0qsb"));//鑱旂郴浜�
+ salesDelivery.setLinkPhone(formData.getString("textField_kt8b0qsc"));//鑱旂郴鐢佃瘽
+ salesDelivery.setDeliveryRemark(formData.getString("textareaField_kt8b0qsl"));//鍙戣揣澶囨敞
+ salesDelivery.setCustomer(formData.getString("textField_la98q3sg"));//瀹㈡埛鍚嶇О
+ salesDelivery.setSalesman(formData.getString("textField_ladnkyu1"));//涓氬姟鍛�
+ salesDelivery.setDeliveryMethod(formData.getString("radioField_ldoc0027"));//鍙戣揣鏂瑰紡
+ String materialCode = row.getString("textField_l92dg1tc");
+ // 鏍规嵁鐗╂枡缂栫爜鏌ヨ鐗╂枡淇℃伅琛紝鍏宠仈鐗╂枡ID
+// if (StringUtils.isNotEmpty(materialCode)) {
+// LambdaQueryWrapper<ProductMaterialSku> skuQueryWrapper = new LambdaQueryWrapper<>();
+// skuQueryWrapper.eq(ProductMaterialSku::getMaterialCode, materialCode);
+// ProductMaterialSku sku = productMaterialSkuService.getOne(skuQueryWrapper);
+// if (sku != null) {
+// salesDelivery.setProductMaterialSkuId(sku.getId());
+// }
+// }
+ salesDelivery.setMaterialCode(materialCode);//鐗╂枡缂栫爜
+ salesDelivery.setProductName(row.getString("textField_l96srw8x"));//浜у搧鍚嶇О
+ salesDelivery.setModel(row.getString("textField_l9tljfl8"));//浜у搧瑙勬牸
+ salesDelivery.setVolume(row.getBigDecimal("numberField_kt8b0qsg_value"));//鏂归噺
+ salesDelivery.setUnitPrice(row.getBigDecimal("numberField_la0tb2x9_value"));//鍗曚环
+ salesDelivery.setPrice(row.getBigDecimal("numberField_l9w2piwf"));//浠锋牸
+ salesDelivery.setProductRemark(row.getString("textField_kt8b0qsi"));//浜у搧澶囨敞
+ salesDelivery.setFormModifiedTime(AliDingUtils.parseUtcTime(item.getString("modifiedTimeGMT")));
+ list.add(salesDelivery);
+ }
+ }
+ return list;
+ }
+
+ private int processSaveOrUpdate(List<SalesDelivery> list) {
+ if (list == null || list.isEmpty()) {
+ return 0;
+ }
+ int affected = 0;
+
+ for (SalesDelivery salesDelivery : list) {
+
+ LambdaQueryWrapper<SalesDelivery> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(SalesDelivery::getFormInstanceId, salesDelivery.getFormInstanceId());
+
+ SalesDelivery exist = this.getOne(wrapper);
+ if (exist == null) {
+ this.save(salesDelivery);
+ affected++;
+ } else {
+ if (exist.getFormModifiedTime() == null || !exist.getFormModifiedTime().equals(salesDelivery.getFormModifiedTime())) {
+ salesDelivery.setId(exist.getId());
+ this.updateById(salesDelivery);
+ affected++;
+ }
+ }
+ }
+ return affected;
+ }
+}
--
Gitblit v1.9.3