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