浏览代码

pda接口

andy 2 年之前
父节点
当前提交
020efa7c37

+ 154 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/api/PadController.java

@@ -1,21 +1,42 @@
 package com.ruoyi.web.controller.warewms.api;
 
+import com.alibaba.fastjson.JSON;
 import com.ruoyi.ams.asn.form.StockForm;
 import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
+import com.ruoyi.ams.business.IBusinessService;
 import com.ruoyi.ams.common.vo.DictVO;
+import com.ruoyi.ams.config.domain.FlowConfigHeader;
+import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
+import com.ruoyi.ams.config.domain.dto.AgvCallItemDTO;
+import com.ruoyi.ams.config.domain.dto.LotattDTO;
+import com.ruoyi.ams.config.domain.vo.FlowConfigHeaderVO;
 import com.ruoyi.ams.config.domain.vo.LotattConfigVO;
+import com.ruoyi.ams.config.service.IFlowConfigHeaderService;
 import com.ruoyi.ams.config.service.ILotattConfigService;
+import com.ruoyi.ams.lineCall.domain.form.LineCallDetailsForm;
+import com.ruoyi.ams.lineCall.domain.form.LineCallForm;
+import com.ruoyi.ams.lineCall.domain.form.LineCallListFrom;
+import com.ruoyi.ams.lineCall.domain.vo.LineCallVO;
+import com.ruoyi.ams.lineCall.service.ILineCallService;
+import com.ruoyi.ams.order.domain.ActAllocationDetails;
+import com.ruoyi.ams.order.form.PickForm;
+import com.ruoyi.ams.order.service.IActAllocationDetailsService;
+import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysDictDataService;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -25,6 +46,7 @@ import java.util.Map;
  * Date: 2022/10/28
  * Description:
  */
+@Slf4j
 @RestController
 @RequestMapping("/api")
 public class PadController {
@@ -32,18 +54,39 @@ public class PadController {
     @Autowired
     private IWmsDocAsnHeaderService wmsDocAsnHeaderService;
     @Autowired
+    private IWmsDocOrderHeaderService wmsDocOrderHeaderService;
+    @Autowired
+    private IActAllocationDetailsService actAllocationDetailsService;
+    @Autowired
     private ICodeSkuRelationshipService codeSkuRelationshipService;
     @Autowired
     private ILotattConfigService lotattConfigService;
     @Autowired
     private ISysDictDataService sysDictDataService;
+    @Autowired
+    private ILineCallService lineCallService;
+    @Autowired
+    private IBusinessService businessService;
+    @Autowired
+    private IFlowConfigHeaderService flowConfigHeaderService;
 
+    /**
+     * 查询批次属性后台配置
+     *
+     * @return
+     */
     @GetMapping("/config/lotattConfig")
     public AjaxResult lotattConfigList() {
         List<LotattConfigVO> lotattConfigVOList = lotattConfigService.queryLotattConfigListActive();
         return AjaxResult.success(lotattConfigVOList);
     }
 
+    /**
+     * 字典表
+     *
+     * @param dictType
+     * @return
+     */
     @GetMapping("/base/dict")
     public AjaxResult dict(@RequestParam String dictType) {
         SysDictData query = new SysDictData();
@@ -60,6 +103,12 @@ public class PadController {
         return AjaxResult.success(result);
     }
 
+    /**
+     * 码盘
+     *
+     * @param stockForm
+     * @return
+     */
     @PostMapping("/docAsn/stock")
     @Log(title = "码盘", businessType = BusinessType.INSERT)
     public AjaxResult stock(@RequestBody StockForm stockForm) {
@@ -69,6 +118,12 @@ public class PadController {
         return wmsDocAsnHeaderService.doStock(stockForm);
     }
 
+    /**
+     * 条码检测
+     *
+     * @param param
+     * @return
+     */
     @PostMapping("/docAsn/snCheck")
     public AjaxResult snCheck(@RequestBody Map<String, String> param) {
         String sn = param.get("sn");
@@ -77,4 +132,103 @@ public class PadController {
         }
         return codeSkuRelationshipService.snCheck(sn);
     }
+
+    @GetMapping("/lineCall/flowList")
+    public AjaxResult flowList() {
+        PageUtils.startPage();
+        List<FlowConfigHeader> list = flowConfigHeaderService.selectFlowConfigHeaderList(null);
+        return AjaxResult.success(list);
+    }
+
+    /**
+     * 获取流程明细
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping("/lineCall/choseFlow/{id}")
+    public AjaxResult choseFlow(@PathVariable("id") Long id) {
+        LineCallVO lineCallVO = lineCallService.selectLineCall(id, 1L);
+        if (lineCallVO == null) {
+            return AjaxResult.error("查询不到对应的流程");
+        }
+        return AjaxResult.success(lineCallVO);
+    }
+
+    /**
+     * 物料拉动
+     *
+     * @param lineCallForm
+     * @return
+     */
+    @PostMapping("/lineCall/pulling")
+    public AjaxResult pulling(@RequestBody LineCallForm lineCallForm) {
+        //查询所属流程
+        FlowConfigHeaderVO flowConfigHeaderVO = flowConfigHeaderService.selectFlowConfigHeaderById(lineCallForm.getFlowId());
+        if (flowConfigHeaderVO == null) {
+            log.info("-----------指令查询不到对应的流程:" + JSON.toJSONString(lineCallForm));
+            return AjaxResult.error("指令查询不到对应的流程");
+        }
+
+        Map<String, AgvCallDTO> map = new HashMap<>();
+        List<AgvCallDTO> list = new ArrayList<>();
+        for (LineCallListFrom lform : lineCallForm.getLineCallList()) {
+            if (flowConfigHeaderVO.getFlowType().equals("ASN") && org.apache.commons.lang3.StringUtils.isEmpty(lform.getLocationFrom())) {
+                return AjaxResult.error("入库任务必须选择起始库位");
+            }
+            if (flowConfigHeaderVO.getFlowType().equals("SO") && (lform.getQty() == null || lform.getQty().longValue() == 0)) {
+                return AjaxResult.error("出库任务必须选择数量");
+            }
+            AgvCallDTO agvCallDTO;
+            if (map.containsKey(lform.getLocationFrom() + "-" + lform.getLocationTo())) {
+                agvCallDTO = map.get(lform.getLocationFrom() + "-" + lform.getLocationTo());
+            } else {
+                agvCallDTO = new AgvCallDTO();
+                agvCallDTO.setWarehouseId(1L);//没用暂时写死
+                agvCallDTO.setLocationFrom(lform.getLocationFrom());
+                agvCallDTO.setLocationTo(lform.getLocationTo());
+                agvCallDTO.setId(lform.getId());
+            }
+            AgvCallItemDTO agvCallItemDTO = new AgvCallItemDTO();
+            agvCallItemDTO.setWarehouseId(1L);
+            agvCallItemDTO.setSku(lform.getSku());
+            agvCallItemDTO.setQty(lform.getQty());
+            agvCallItemDTO.setSupplier(lform.getSupplier());
+            agvCallItemDTO.setWeight(lform.getWeight());
+            agvCallItemDTO.setLocationFrom(lform.getLocationFrom());
+            agvCallItemDTO.setLocationTo(lform.getLocationTo());
+            agvCallDTO.getAgvCallItemDTOList().add(agvCallItemDTO);
+            LotattDTO lotattDTO = new LotattDTO();
+            List<LineCallDetailsForm> lineCallDetailsForms = lform.getLineCallDetailsFormList();
+            if (lineCallDetailsForms != null && lineCallDetailsForms.size() > 0) {
+                for (LineCallDetailsForm detailsForm : lineCallDetailsForms) {
+                    lotattDTO.setAttr(detailsForm.getLotattId(), detailsForm.getLotattValue());
+                }
+            }
+            agvCallItemDTO.setLotattDTO(lotattDTO);
+            map.put(lform.getLocationFrom() + "-" + lform.getLocationTo(), agvCallDTO);
+        }
+        for (Map.Entry<String, AgvCallDTO> entry : map.entrySet()) {
+            AgvCallDTO mapValue = entry.getValue();
+            list.add(mapValue);
+        }
+        return businessService.agvCall(flowConfigHeaderVO, list);
+    }
+
+    @GetMapping("/docOrder/allocationList")
+    public AjaxResult allocationList(@RequestParam String palletNo) {
+        List<ActAllocationDetails> actAllocationDetails = actAllocationDetailsService.queryAllocationDetailsByPalletNo(palletNo);
+        return AjaxResult.success(actAllocationDetails);
+    }
+
+
+    @PostMapping("/docOrder/pick")
+    public AjaxResult doPick(@RequestBody PickForm pickForm) {
+        if (pickForm.getPickInfoFormList() == null || pickForm.getPickInfoFormList().size() == 0) {
+            return AjaxResult.error("参数不能为空");
+        }
+        return wmsDocOrderHeaderService.doPick(pickForm.getPickInfoFormList());
+    }
+
+
 }

+ 5 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/order/WmsDocOrderHeaderController.java

@@ -139,15 +139,15 @@ public class WmsDocOrderHeaderController extends BaseController {
         return toAjax(wmsDocOrderHeaderService.insertWmsDocOrderHeader(wmsDocOrderHeader));
     }
 
-    @PostMapping("/doAllocation")
-    public AjaxResult doAllocation(@RequestBody AllocationForm allocationForm) {
-        return wmsDocOrderHeaderService.doAllocation(allocationForm.getOrderNo());
-    }
-
     @GetMapping(value = "/initOrderDetails/{orderNo}")
     public AjaxResult initOrderDetails(@PathVariable("orderNo") String orderNo) {
         LoginUser loginUser = getLoginUser();
         List<WmsDocOrderDetails> orderDetails = wmsDocOrderHeaderService.initOrderDetails(orderNo);
         return AjaxResult.success(orderDetails);
     }
+
+    @PostMapping("/doAllocation")
+    public AjaxResult doAllocation(@RequestBody AllocationForm allocationForm) {
+        return wmsDocOrderHeaderService.doAllocation(allocationForm.getOrderNo());
+    }
 }

+ 7 - 6
warewms-ams/src/main/java/com/ruoyi/ams/common/Constant.java

@@ -7,6 +7,7 @@ package com.ruoyi.ams.common;
  */
 public class Constant {
     public static final String CUSTOMER_ID = "default";
+    public static final Long WAREHOUSE_ID = 1L;
 
     /**
      * 储位状态
@@ -39,17 +40,17 @@ public class Constant {
     /**
      * NDC任务类型
      */
-    public enum TASK_BUSINESS_TYPE{
+    public enum TASK_BUSINESS_TYPE {
         /**
-         *  01叉货任务
+         * 01叉货任务
          */
         TASK_01("01"),
         /**
-         *  60暂停点
+         * 60暂停点
          */
         TASK_60("60"),
         /**
-         *  90暂停重启
+         * 90暂停重启
          */
         TASK_90("90"),
         /**
@@ -57,11 +58,11 @@ public class Constant {
          */
         TASK_POWER("power"),
         /**
-         *  m
+         * m
          */
         TASK_m("m"),
         /**
-         *  暂停
+         * 暂停
          */
         TASK_03("03");
 

+ 4 - 16
warewms-ams/src/main/java/com/ruoyi/ams/order/form/PickForm.java

@@ -2,21 +2,9 @@ package com.ruoyi.ams.order.form;
 
 import lombok.Data;
 
-/**
- * Created by IntelliJ IDEA.
- * User: andy.qu
- * Date: 2022/11/4
- * Description:
- */
+import java.util.List;
+
 @Data
 public class PickForm {
-    private String allocationId;
-    private String orderNo;
-    private String palletNo;
-    private String boxNo;
-    private String sn;
-    private String sku;
-    private String qty;
-    private String locationTo;
-    private String fullTag;
-}
+    private List<PickInfoForm> pickInfoFormList;
+}

+ 10 - 1
warewms-ams/src/main/java/com/ruoyi/ams/order/form/PickInfoForm.java

@@ -1,5 +1,6 @@
 package com.ruoyi.ams.order.form;
 
+import lombok.Data;
 
 /**
  * Created by IntelliJ IDEA.
@@ -7,7 +8,15 @@ package com.ruoyi.ams.order.form;
  * Date: 2022/11/4
  * Description:
  */
+@Data
 public class PickInfoForm {
-    private Long allocationId;
+    private String allocationId;
+    private String orderNo;
+    private String palletNo;
+    private String boxNo;
+    private String sn;
+    private String sku;
     private String qty;
+    private String locationTo;
+    private String fullTag;
 }

+ 2 - 2
warewms-ams/src/main/java/com/ruoyi/ams/order/service/IWmsDocOrderHeaderService.java

@@ -5,7 +5,7 @@ import java.util.List;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderHeader;
 import com.ruoyi.ams.order.form.CheckOutForm;
-import com.ruoyi.ams.order.form.PickForm;
+import com.ruoyi.ams.order.form.PickInfoForm;
 import com.ruoyi.ams.order.vo.StockOrderVO;
 import com.ruoyi.common.core.domain.AjaxResult;
 
@@ -120,7 +120,7 @@ public interface IWmsDocOrderHeaderService {
      * @param pickFormList
      * @return
      */
-    AjaxResult doPick(List<PickForm> pickFormList);
+    AjaxResult doPick(List<PickInfoForm> pickFormList);
 
     /**
      * 分拣出库

+ 3 - 3
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderHeaderServiceImpl.java

@@ -10,7 +10,7 @@ import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.ams.order.domain.ActAllocationDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
 import com.ruoyi.ams.order.form.CheckOutForm;
-import com.ruoyi.ams.order.form.PickForm;
+import com.ruoyi.ams.order.form.PickInfoForm;
 import com.ruoyi.ams.order.mapper.WmsDocOrderDetailsMapper;
 import com.ruoyi.ams.order.service.IActAllocationDetailsService;
 import com.ruoyi.ams.order.vo.StockOrderVO;
@@ -259,8 +259,8 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     }
 
     @Override
-    public AjaxResult doPick(List<PickForm> pickFormList) {
-        for (PickForm p : pickFormList) {
+    public AjaxResult doPick(List<PickInfoForm> pickFormList) {
+        for (PickInfoForm p : pickFormList) {
             //查询对应的分配明细表
             ActAllocationDetails actAllocationDetails = actAllocationDetailsService.selectActAllocationDetailsByAllocationId(p.getAllocationId());
             actAllocationDetails.setPickQty(actAllocationDetails.getPickQty().add(new BigDecimal(p.getQty())));