From caa7a2327123cc070ae16ad802983c04e296ff11 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 04 二月 2026 13:46:00 +0800
Subject: [PATCH] #1。档案同步2,任务状态上报,3设备状态读取,4心跳,5wms手动完成取消任务

---
 src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java |  170 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 168 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
index 45bbcfe..a6ce423 100644
--- a/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MatServiceImpl.java
@@ -1,17 +1,35 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.Tag;
+import com.zy.asrs.entity.param.MatSyncParam;
+import com.zy.asrs.service.ApiLogService;
+import com.zy.asrs.service.TagService;
+import com.zy.common.config.CoolExceptionHandler;
+import com.zy.erp.kingdee.enums.KingDeeUtilType;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.zy.asrs.entity.Mat;
 import com.zy.asrs.mapper.MatMapper;
 import com.zy.asrs.service.MatService;
+import org.springframework.transaction.annotation.Transactional;
 
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 
 @Service("matService")
 public class MatServiceImpl extends ServiceImpl<MatMapper, Mat> implements MatService {
-
+    @Autowired
+    private ApiLogService apiLogService;
+    @Autowired
+    private TagService tagService;
     @Override
     public Page<Mat> getPage(Page page, String tagId, Object matnr, Object maktx) {
         return page.setRecords(baseMapper.listByPage(page, tagId, matnr, maktx));
@@ -56,11 +74,159 @@
         page.setTotal(16);
         return page;
     };
-    @Override
     public String getOldMatnr(Long id){
         return this.baseMapper.getOldMatnr(id);
     }
+    private Tag getOrCreateTag(MatSyncParam.MatParam param) {
+        Tag tag = tagService.selectOne(
+                new EntityWrapper<Tag>()
+                        .eq("name", param.getGroupName())
+                        .eq("uuid", param.getGroupId())
+        );
+        Tag tagAll = tagService.selectOne(new EntityWrapper<Tag>().eq("name", "鍏ㄩ儴"));
 
+        if (tag == null) {
+            tag = new Tag();
+            tag.setUuid(param.getGroupId());
+            tag.setName(param.getGroupName());
+            tag.setParentId(tagAll.getId());
+            tag.setParentName("鍏ㄩ儴");
+            tag.setPath(String.valueOf(tagAll.getId()));
+            tag.setPathName("鍏ㄩ儴");
+            tag.setStatus(1);
+            tag.setLevel(2);
+            if (!tagService.insert(tag)) {
+                throw new CoolException("鏂板缓鐩綍澶辫触");
+            }
+        }
+        return tag;
+    }
+
+    @Override
+    public R sync(MatSyncParam matSyncParam) {
+
+        List<String> errors = new ArrayList<>();
+        Date now = new Date();
+
+        for (MatSyncParam.MatParam param : matSyncParam.getMatDetails()) {
+
+            try {
+                if (param.getOperateType() == 1 || param.getOperateType() == 2) {
+
+                    Tag tag = getOrCreateTag(param);
+                    Mat mat = this.selectOne(
+                            new EntityWrapper<Mat>().eq("matnr", param.getMatNr())
+                    );
+
+                    if (mat == null) {
+                        mat = new Mat();
+                        mat.setMatnr(param.getMatNr());
+                        mat.setStatus(1);
+                        fillMat(mat, param, tag);
+                        mat.setCreateTime(now);
+
+                        if (!this.insert(mat)) {
+                            errors.add("鏂板鐗╂枡澶辫触锛�" + param.getMatNr());
+                        }
+                    } else {
+                        if (fillMat(mat, param, tag)) {
+                            mat.setUpdateTime(now);
+                            if (!this.updateById(mat)) {
+                                errors.add("鏇存柊鐗╂枡澶辫触锛�" + param.getMatNr());
+                            }
+                        }
+                    }
+                }
+
+                if (param.getOperateType() == 3 || param.getOperateType() == 4) {
+                    Mat mat = this.selectOne(
+                            new EntityWrapper<Mat>().eq("matnr", param.getMatNr())
+                    );
+                    if (mat == null) {
+                        errors.add("鐗╂枡涓嶅瓨鍦細" + param.getMatNr());
+                        continue;
+                    }
+                    mat.setStatus(param.getOperateType() == 3 ? 0 : 1);
+                    if (!this.updateById(mat)) {
+                        errors.add("鐘舵�佹洿鏂板け璐ワ細" + param.getMatNr());
+                    }
+                }
+
+            } catch (Exception e) {
+                errors.add("澶勭悊寮傚父锛�" + param.getMatNr());
+            }
+        }
+
+        if (errors.isEmpty()) {
+            return R.ok("鍚屾鎴愬姛");
+        }
+        R r = R.error("鍚屾瀹屾垚锛屽瓨鍦ㄥけ璐ユ暟鎹�");
+        r.put("errors", errors);
+        return r;
+    }
+    private boolean fillMat(Mat mat, MatSyncParam.MatParam param, Tag tag) {
+        boolean changed = false;
+
+        if (!Objects.equals(mat.getMaktx(), param.getMakTx())) {
+            mat.setMaktx(param.getMakTx());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getMemo(), param.getDescrible())) {
+            mat.setMemo(param.getDescrible());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getWeight(), param.getWeight())) {
+            mat.setWeight(param.getWeight());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getSpecs(), param.getSpec())) {
+            mat.setSpecs(param.getSpec());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getModel(), param.getModel())) {
+            mat.setModel(param.getModel());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getColor(), param.getColor())) {
+            mat.setColor(param.getColor());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getBrand(), param.getSize())) {
+            mat.setBrand(param.getSize());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getUnit(), param.getUnit())) {
+            mat.setUnit(param.getUnit());
+            changed = true;
+        }
+
+        if (!Objects.equals(mat.getUuid(), param.getGroupId())) {
+            mat.setUuid(param.getGroupId());
+            changed = true;
+        }
+
+        Long tagId = tag == null ? null : tag.getId();
+        if (!Objects.equals(mat.getTagId(), tagId)) {
+            mat.setTagId(tagId);
+            changed = true;
+        }
+
+        return changed;
+    }
+
+    public void callApiLogSaveMat(Mat mat, String response, Boolean bool) {
+        apiLogService.save("鍟嗗搧妗f鍚屾", "mat/sync", "null", "localhost",
+                "鐗╂枡缂栧彿锛�" + mat.getMatnr() + "銆佺墿鏂欏悕绉帮細" + mat.getMaktx() + "銆佹瘺閲嶏細" + mat.getWeight()
+                        + "銆佺姸鎬侊細" + mat.getStatus$(),
+                response, bool);
+    }
 
 
 }

--
Gitblit v1.9.1