From d47f3a55e5f7b4328ad1bd2e059f03e5c0c4151a Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期二, 19 十一月 2024 15:56:23 +0800
Subject: [PATCH] #led task

---
 src/main/resources/mapper/WrkDetlMapper.xml                    |    4 
 src/main/java/com/zy/asrs/command/LedCommand.java              |   53 ++++++++++
 src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java            |    2 
 src/main/java/com/zy/asrs/utils/Utils.java                     |   14 ++
 src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java |    4 
 src/main/java/com/zy/common/web/WcsController.java             |  101 ++++++++++++++++++++
 src/main/java/com/zy/asrs/entity/param/MatDto.java             |   63 ++++++++++++
 src/main/java/com/zy/asrs/service/WrkDetlService.java          |    2 
 8 files changed, 240 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/zy/asrs/command/LedCommand.java b/src/main/java/com/zy/asrs/command/LedCommand.java
new file mode 100644
index 0000000..46d54d1
--- /dev/null
+++ b/src/main/java/com/zy/asrs/command/LedCommand.java
@@ -0,0 +1,53 @@
+package com.zy.asrs.command;
+
+import com.core.common.Cools;
+import com.zy.asrs.entity.param.MatDto;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * led鍛戒护鎶ユ枃
+ * Created by vincent on 2020/8/11
+ */
+@Data
+public class LedCommand extends Object {
+
+    private String title;
+
+    private Integer workNo;
+
+    private Integer staNo;
+
+    private Integer sourceStaNo;
+
+    private String locNo;
+
+    private String sourceLocNo;
+
+    private List<MatDto> matDtos = new ArrayList<>();
+
+    private boolean emptyMk = false;
+
+    private Integer ioType;
+    private String barcode;
+
+    @Override
+    public String toString() {
+        StringBuffer s = new StringBuffer();
+        s.append("宸ヤ綔鍙穂" + this.workNo + "]\n");
+        s.append("宸ヤ綔绫诲瀷[" + this.title + "]\n");
+        if (!Cools.isEmpty(this.barcode)) {
+            s.append("鎵樼洏鐮乕" + this.barcode + "]\n");
+        }
+        if (!this.emptyMk){
+
+            for (MatDto matDto : matDtos) {
+                s.append("[鍟嗗搧缂栫爜:" + matDto.getMatnr() + ", 鏁伴噺:" + matDto.getCount() + "]\n");
+            }
+        }
+
+        return s.toString();
+    }
+}
diff --git a/src/main/java/com/zy/asrs/entity/param/MatDto.java b/src/main/java/com/zy/asrs/entity/param/MatDto.java
new file mode 100644
index 0000000..0d10511
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/MatDto.java
@@ -0,0 +1,63 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2020/8/6
+ */
+@Data
+public class MatDto {
+
+    // 鐗╂枡缂栧彿
+    private String matnr;
+
+    // 鐗╂枡鍚嶇О
+    private String maknx;
+
+    private String batch;
+
+    private String specs;
+
+    // 瀹㈡埛淇℃伅
+    private String manu;
+
+    // 澶囨敞
+    private String memo;
+
+    // 鐗╂枡鏁伴噺
+    private Double count;
+
+    private Double total;
+
+    public MatDto() {
+    }
+    public MatDto(String matnr, String maknx, String batch, String specs, String manu, String memo, Double count, Double total) {
+        this.matnr = matnr;
+        this.maknx = maknx;
+        this.batch = batch;
+        this.specs = specs;
+        this.manu = manu;
+        this.memo = memo;
+        this.count = count;
+        this.total = total;
+    }
+
+    public MatDto(String matNo, String maknx, Double count) {
+        this.matnr = matNo;
+        this.maknx = maknx;
+        this.count = count;
+    }
+    public MatDto(String matNo, String maknx, Double count, String specs) {
+        this.specs = specs;
+        this.matnr = matNo;
+        this.maknx = maknx;
+        this.count = count;
+    }
+    public MatDto(String matNo, String maknx, Double count, Double total, String specs) {
+        this.specs = specs;
+        this.matnr = matNo;
+        this.maknx = maknx;
+        this.count = count;
+        this.total = total;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
index f44e1fb..a336d03 100644
--- a/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/WrkDetlMapper.java
@@ -30,4 +30,6 @@
     int updateIoTimeWms(@Param("workNo") Integer workNo, @Param("ioTime") Date ioTime);
 
     int updateIoTime(@Param("workNo") Integer workNo, @Param("ioTime") Date ioTime);
+
+    List<WrkDetl> findByWorkNo(Integer workNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/WrkDetlService.java b/src/main/java/com/zy/asrs/service/WrkDetlService.java
index 7eeaf83..d2321bc 100644
--- a/src/main/java/com/zy/asrs/service/WrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/WrkDetlService.java
@@ -26,4 +26,6 @@
     boolean updateIoTimeWms(Integer workNo, Date ioTime);
 
     boolean updateIoTime(Integer workNo, Date ioTime);
+
+    List<WrkDetl> findByWorkNo(Integer wrkNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
index 968b9b6..38a30ef 100644
--- a/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WrkDetlServiceImpl.java
@@ -93,4 +93,8 @@
     public boolean updateIoTime(Integer workNo, Date ioTime) {
         return this.baseMapper.updateIoTime(workNo, ioTime) > 0;
     }
+    @Override
+    public List<WrkDetl> findByWorkNo(Integer workNo) {
+        return this.baseMapper.findByWorkNo(workNo);
+    }
 }
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 83f2695..e1d291c 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -529,14 +529,24 @@
             case 1:
                 necessaryParameters[1] = 4;    //curRow   鏈�娣卞簱浣嶆帓
                 necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
-                necessaryParameters[3] = 7;    //nearRow  鏈�娴呭簱浣嶆帓
+                necessaryParameters[3] = 6;    //nearRow  鏈�娴呭簱浣嶆帓
                 break;
             case 4:
+                necessaryParameters[1] = 7;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 7;    //nearRow  鏈�娴呭簱浣嶆帓
+                break;
+            case 7:
                 necessaryParameters[1] = 9;    //curRow   鏈�娣卞簱浣嶆帓
+                necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
+                necessaryParameters[3] = 11;    //nearRow  鏈�娴呭簱浣嶆帓
+                break;
+            case 9:
+                necessaryParameters[1] = 12;    //curRow   鏈�娣卞簱浣嶆帓
                 necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
                 necessaryParameters[3] = 12;    //nearRow  鏈�娴呭簱浣嶆帓
                 break;
-            case 9:
+            case 12:
                 necessaryParameters[1] = 14;    //curRow   鏈�娣卞簱浣嶆帓
                 necessaryParameters[2] = sCrnNo;     //crnNo     鍫嗗灈鏈哄彿
                 necessaryParameters[3] = 14;    //nearRow  鏈�娴呭簱浣嶆帓
diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java
index 6107b1f..ac298a8 100644
--- a/src/main/java/com/zy/common/web/WcsController.java
+++ b/src/main/java/com/zy/common/web/WcsController.java
@@ -6,8 +6,10 @@
 import com.core.common.Cools;
 import com.core.common.R;
 import com.core.exception.CoolException;
+import com.zy.asrs.command.LedCommand;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
+import com.zy.asrs.entity.param.MatDto;
 import com.zy.asrs.entity.result.KeyValueVo;
 import com.zy.asrs.service.*;
 import com.zy.common.CodeRes;
@@ -56,9 +58,106 @@
     @Autowired
     private WebSocketServer webSocketServer;
 
+
+    @PostMapping("/led/getTask")
+    @ResponseBody
+    public synchronized R getledTask(@RequestBody Map<String, String> param) {
+        String taskNo = param.get("taskNo");
+        String sta = param.get("sta");
+        // 鍛戒护闆嗗悎
+        List<LedCommand> commands = new ArrayList<>();
+        if ("0".equals(sta)) {
+
+            // 宸ヤ綔妗i泦鍚�
+            List<WrkMast> wrkMasts = new ArrayList<>();
+            // 鑾峰彇宸ヤ綔妗f暟鎹�
+            WrkMast wrkMast = wrkMastService.selectById(taskNo);
+            if (null == wrkMast) { return R.error(); }
+            wrkMasts.add(wrkMast);
+            // 缁勮鍛戒护
+            LedCommand ledCommand = new LedCommand();
+            ledCommand.setWorkNo(wrkMast.getWrkNo());
+            ledCommand.setIoType(wrkMast.getIoType());
+            wrkMasts.add(wrkMast);
+            // 鍑哄簱妯″紡
+            switch (wrkMast.getIoType()) {
+                case 1:
+                    ledCommand.setTitle("鍏ㄦ澘鍏ュ簱");
+                    break;
+                case 10:
+                    ledCommand.setTitle("绌烘澘鍏ュ簱");
+                    break;
+                case 101:
+                    ledCommand.setTitle("鍏ㄦ澘鍑哄簱");
+                    break;
+                case 103:
+                    ledCommand.setTitle("鎷f枡鍑哄簱");
+                    break;
+                case 104:
+                    ledCommand.setTitle("骞舵澘鍑哄簱");
+                    break;
+                case 107:
+                    ledCommand.setTitle("鐩樼偣鍑哄簱");
+                    break;
+                case 110:
+                    ledCommand.setTitle("绌烘澘鍑哄簱");
+                    ledCommand.setEmptyMk(true);
+                    break;
+                default:
+                    break;
+            }
+            ledCommand.setSourceLocNo(wrkMast.getSourceLocNo());
+            ledCommand.setStaNo(wrkMast.getStaNo());
+            ledCommand.setBarcode(wrkMast.getBarcode());
+            if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) {
+                List<WrkDetl> wrkDetls = wrkDetlService.findByWorkNo(wrkMast.getWrkNo());
+
+                wrkDetls.forEach(wrkDetl -> {
+                    Double total = 0.0;
+                    EntityWrapper<LocDetl> wrapper = new EntityWrapper<>();
+                    LocDetl locDetl = locDetlService.selectOne(wrapper.eq("zpallet", wrkDetl.getZpallet()).eq("matnr", wrkDetl.getMatnr()));
+                    if (Cools.isEmpty(locDetl)) {
+                        total = wrkDetl.getAnfme();
+                    } else {
+                        total = locDetl.getAnfme();
+                    }
+                    if (wrkMast.getIoType() == 101 || wrkMast.getIoType() == 1) {
+                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                    }
+                    if (wrkMast.getIoType() == 103 && (null == wrkDetl.getInspect() || 0 == wrkDetl.getInspect())) {
+                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                    }
+                    if (wrkMast.getIoType() == 107 || wrkMast.getIoType() == 104) {
+                        ledCommand.getMatDtos().add(new MatDto(wrkDetl.getMatnr(), wrkDetl.getMaktx(), wrkDetl.getBatch(), wrkDetl.getSpecs(), wrkDetl.getManu(), wrkDetl.getMemo(), wrkDetl.getAnfme(),total));
+                    }
+                });
+            }
+            commands.add(ledCommand);
+
+            Set<Integer> workNos = wrkMasts.stream().map(WrkMast::getWrkNo).collect(Collectors.toSet());
+            // 淇敼涓绘。led鏍囪
+            for (WrkMast wrkMast1 : wrkMasts) {
+                wrkMast1.setOveMk("Y");
+                wrkMast1.setModiTime(new Date());
+                if (wrkMastService.updateById(wrkMast1)) {
+                    throw new CoolException("鏇存柊宸ヤ綔妗eけ璐�");
+                }
+            }
+        }
+
+
+
+        Map<String,Object> map=new HashMap<String, Object>();
+        map.put("to",sta);
+        map.put("message",Cools.add("type", "task").add("taskList",commands));
+        webSocketServer.onMessage(JSONObject.toJSONString(map),null,sta);
+        return R.ok();
+
+    }
+
     @PostMapping("/led/getError")
     @ResponseBody
-    public synchronized R getLocNo(@RequestBody Map<String, String> param) {
+    public synchronized R getledError(@RequestBody Map<String, String> param) {
         String sta = param.get("sta");
         String message = param.get("msg");
         if (Cools.isEmpty(sta) || Cools.isEmpty(message)) {
diff --git a/src/main/resources/mapper/WrkDetlMapper.xml b/src/main/resources/mapper/WrkDetlMapper.xml
index ca46fff..22b651a 100644
--- a/src/main/resources/mapper/WrkDetlMapper.xml
+++ b/src/main/resources/mapper/WrkDetlMapper.xml
@@ -108,6 +108,10 @@
           and wrk_no = #{workNo}
     </update>
 
+    <select id="findByWorkNo" resultMap="BaseResultMap">
+        select wrk_no, matnr, maktx, anfme ,specs,batch from asr_wrk_detl where 1=1 and wrk_no = #{workNo}
+    </select>
+
     <select id="selectPakoutQuery" resultMap="BaseResultMap">
         select
         awd.*

--
Gitblit v1.9.1