浏览代码

出库拣货-条码检测

k 2 年之前
父节点
当前提交
7b8a57f9df

+ 20 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java

@@ -36,8 +36,10 @@ import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
 import com.ruoyi.ams.order.vo.CheckOutVO;
 import com.ruoyi.ams.order.vo.PickingListVO;
 import com.ruoyi.base.constant.Constant;
+import com.ruoyi.base.domain.vo.CodeSkuRelationshipSoVO;
 import com.ruoyi.base.domain.vo.CodeSkuRelationshipVO;
 import com.ruoyi.base.form.SnCheckForm;
+import com.ruoyi.base.form.SnCheckSoForm;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -431,6 +433,24 @@ public class PdaController {
         return invLotLocIdService.clear(locationId, Constant.WAREHOUSE_ID, "PDA");
     }
 
+    /**
+     * 条码检测(出库)
+     *
+     * @param snCheckSoForm
+     * @return 根据出库单和条码查询出拣货出库的信息
+     */
+    @PostMapping("/docOrder/snCheck")
+    public AjaxResult snCheck(@Validated @RequestBody SnCheckSoForm snCheckSoForm) {
+        // ERP号转换为wms系统出库单号orderNo
+        String orderNo = wmsDocOrderHeaderService.changeErpNoToOrderNo(snCheckSoForm.getOrderNo());
+        snCheckSoForm.setOrderNo(orderNo);
+        if (StringUtils.isEmpty(orderNo)) {
+            return AjaxResult.error("请扫描正确的出库单号!");
+        }
+        CodeSkuRelationshipSoVO codeSkuRelationshipSoVO = wmsDocOrderHeaderService.searchSn(snCheckSoForm);
+        return AjaxResult.success(codeSkuRelationshipSoVO);
+    }
+
     /*************************************************出库-END****************************************************/
 
     /**

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/agv/ndc/AciService.java

@@ -182,7 +182,7 @@ public class AciService {
                 //因为设置了异步 这边不会阻塞 测试了一下 服务器断开这边会抛出异常 但是写的时候不会抛出异常 可能是设置了异步的原因
                 int readLenth = socketChannel.read(buffer);
                 if (readLenth == -1) {
-                    throw new IOException();
+//                    throw new IOException();
                 }
                 if (readLenth > 0) {
                     buffer.flip();

+ 33 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/form/ActAllocationDetailsFrom.java

@@ -0,0 +1,33 @@
+package com.ruoyi.ams.order.form;
+
+import com.ruoyi.ams.order.domain.ActAllocationDetails;
+import lombok.Data;
+
+/**
+ * 分配查询对象 act_allocation_details
+ *
+ * @author ruoyi
+ * @date 2022-10-31
+ */
+@Data
+public class ActAllocationDetailsFrom extends ActAllocationDetails {
+    private String lotatt01;
+    private String lotatt02;
+    private String lotatt03;
+    private String lotatt04;
+    private String lotatt05;
+    private String lotatt06;
+    private String lotatt07;
+    private String lotatt08;
+    private String lotatt09;
+    private String lotatt10;
+    private String lotatt11;
+    private String lotatt12;
+    private String lotatt13;
+    private String lotatt14;
+    private String lotatt15;
+    private String lotatt16;
+    private String lotatt17;
+    private String lotatt18;
+
+}

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

@@ -6,5 +6,8 @@ import java.util.List;
 
 @Data
 public class PickForm {
-    private List<PickInfoForm> pickInfoFormList;
+    private String orderNo;
+    private String sku;
+    private String sn;
+    private Double qty;
 }

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/mapper/ActAllocationDetailsMapper.java

@@ -3,6 +3,7 @@ package com.ruoyi.ams.order.mapper;
 import java.util.List;
 
 import com.ruoyi.ams.order.domain.ActAllocationDetails;
+import com.ruoyi.ams.order.form.ActAllocationDetailsFrom;
 import org.apache.ibatis.annotations.Param;
 
 /**
@@ -39,6 +40,14 @@ public interface ActAllocationDetailsMapper {
      */
     List<ActAllocationDetails> selectActAllocationDetailsList(ActAllocationDetails actAllocationDetails);
 
+    /**
+     * 查询分配查询列表 关联批次
+     *
+     * @param actAllocationDetailsFrom
+     * @return
+     */
+    List<ActAllocationDetailsFrom> selectActAllocationDetailsInvLotAttList(ActAllocationDetailsFrom actAllocationDetailsFrom);
+
     /**
      * 新增分配查询
      *

+ 21 - 1
warewms-ams/src/main/java/com/ruoyi/ams/order/service/IActAllocationDetailsService.java

@@ -5,6 +5,7 @@ import java.util.List;
 
 import com.ruoyi.ams.order.domain.ActAllocationDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
+import com.ruoyi.ams.order.form.ActAllocationDetailsFrom;
 import com.ruoyi.common.core.domain.AjaxResult;
 
 /**
@@ -30,6 +31,14 @@ public interface IActAllocationDetailsService {
      */
     List<ActAllocationDetails> selectActAllocationDetailsList(ActAllocationDetails actAllocationDetails);
 
+    /**
+     * 查询分配查询列表
+     *
+     * @param actAllocationDetailsFrom
+     * @return
+     */
+    List<ActAllocationDetailsFrom> selectActAllocationDetailsInvLotAttList(ActAllocationDetailsFrom actAllocationDetailsFrom);
+
     /**
      * 查询分配查询
      *
@@ -38,6 +47,14 @@ public interface IActAllocationDetailsService {
      */
     ActAllocationDetails selectActAllocationDetailsByModel(ActAllocationDetails actAllocationDetails);
 
+    /**
+     * 查询分配查询
+     *
+     * @param actAllocationDetailsFrom 分配查询
+     * @return 分配查询集合
+     */
+    ActAllocationDetailsFrom selectActAllocationDetailsInvLotAttByModel(ActAllocationDetailsFrom actAllocationDetailsFrom);
+
     /**
      * 新增分配查询
      *
@@ -83,6 +100,7 @@ public interface IActAllocationDetailsService {
 
     /**
      * 新增或者更新分配明细
+     *
      * @param actAllocationDetails
      * @return
      */
@@ -106,6 +124,7 @@ public interface IActAllocationDetailsService {
 
     /**
      * 查询分配明细
+     *
      * @param orderNo
      * @return
      */
@@ -113,8 +132,9 @@ public interface IActAllocationDetailsService {
 
     /**
      * 更新分配库位根据托盘编号
+     *
      * @param locationId
      * @param palletNo
      */
-    void updateAllocationDetailsLocationIdByPalletNo(String locationId,String palletNo);
+    void updateAllocationDetailsLocationIdByPalletNo(String locationId, String palletNo);
 }

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

@@ -9,6 +9,8 @@ import com.ruoyi.ams.order.form.*;
 import com.ruoyi.ams.order.vo.CheckOutVO;
 import com.ruoyi.ams.order.vo.PickingListVO;
 import com.ruoyi.ams.order.vo.StockOrderVO;
+import com.ruoyi.base.domain.vo.CodeSkuRelationshipSoVO;
+import com.ruoyi.base.form.SnCheckSoForm;
 import com.ruoyi.common.core.domain.AjaxResult;
 
 /**
@@ -242,6 +244,14 @@ public interface IWmsDocOrderHeaderService {
      */
     String changeErpNoToOrderNo(String erpNo);
 
+    /**
+     * 出库拣货条码检测
+     *
+     * @param snCheckSoForm
+     * @return
+     */
+    CodeSkuRelationshipSoVO searchSn(SnCheckSoForm snCheckSoForm);
+
     /**
      * 插入ERP出库单
      *

+ 28 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/ActAllocationDetailsServiceImpl.java

@@ -6,6 +6,7 @@ import java.util.List;
 import com.ruoyi.ams.box.domain.WmsBoxInfo;
 import com.ruoyi.ams.box.service.IWmsBoxInfoService;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
+import com.ruoyi.ams.order.form.ActAllocationDetailsFrom;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.utils.IdSequenceUtils;
@@ -57,6 +58,17 @@ public class ActAllocationDetailsServiceImpl implements IActAllocationDetailsSer
         return actAllocationDetailsMapper.selectActAllocationDetailsList(actAllocationDetails);
     }
 
+    /**
+     * 查询分配查询列表
+     *
+     * @param actAllocationDetailsFrom 分配查询
+     * @return 分配查询
+     */
+    @Override
+    public List<ActAllocationDetailsFrom> selectActAllocationDetailsInvLotAttList(ActAllocationDetailsFrom actAllocationDetailsFrom) {
+        return actAllocationDetailsMapper.selectActAllocationDetailsInvLotAttList(actAllocationDetailsFrom);
+    }
+
     /**
      * 查询分配查询
      *
@@ -73,6 +85,22 @@ public class ActAllocationDetailsServiceImpl implements IActAllocationDetailsSer
         }
     }
 
+    /**
+     * 查询分配查询
+     *
+     * @param actAllocationDetailsFrom 分配查询
+     * @return 分配查询
+     */
+    @Override
+    public ActAllocationDetailsFrom selectActAllocationDetailsInvLotAttByModel(ActAllocationDetailsFrom actAllocationDetailsFrom) {
+        List<ActAllocationDetailsFrom> list = actAllocationDetailsMapper.selectActAllocationDetailsInvLotAttList(actAllocationDetailsFrom);
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        } else {
+            return null;
+        }
+    }
+
     /**
      * 新增分配查询
      *

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

@@ -34,7 +34,9 @@ import com.ruoyi.ams.order.vo.PickingListVO;
 import com.ruoyi.ams.order.vo.StockOrderVO;
 import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
+import com.ruoyi.base.domain.vo.CodeSkuRelationshipSoVO;
 import com.ruoyi.base.domain.vo.CodeSkuRelationshipVO;
+import com.ruoyi.base.form.SnCheckSoForm;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
 import com.ruoyi.base.utils.IdSequenceUtils;
@@ -398,7 +400,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     @Transactional
     @Override
     public AjaxResult toPick(PickForm pickForm) {
-        List<PickInfoForm> pickInfoFormList = pickForm.getPickInfoFormList();
+        List<PickInfoForm> pickInfoFormList = null;
         Map<String, String> exitsMap = new HashMap<>();
         for (PickInfoForm p : pickInfoFormList) {
             String locationTo = p.getLocationTo();
@@ -835,6 +837,27 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
         return null;
     }
 
+    @Override
+    public CodeSkuRelationshipSoVO searchSn(SnCheckSoForm snCheckSoForm) {
+        CodeSkuRelationshipSoVO codeSkuRelationshipSoVO = new CodeSkuRelationshipSoVO();
+        // 根据条码号查询出产品信息
+        CodeSkuRelationshipVO codeSkuRelationshipVO = codeSkuRelationshipService.snCheck(snCheckSoForm.getSn());
+        ActAllocationDetailsFrom query = new ActAllocationDetailsFrom();
+        query.setOrderNo(snCheckSoForm.getOrderNo());
+        query.setLotatt02(snCheckSoForm.getSn());
+        query.setStatus(Constant.ORDER_STS.STS20.getValue());
+        ActAllocationDetailsFrom actAllocationDetailsFrom = actAllocationDetailsService.selectActAllocationDetailsInvLotAttByModel(query);
+        if (actAllocationDetailsFrom != null) {
+            codeSkuRelationshipSoVO.setOrderNo(actAllocationDetailsFrom.getOrderNo());
+            codeSkuRelationshipSoVO.setSku(actAllocationDetailsFrom.getMaterial());
+            codeSkuRelationshipSoVO.setSkuType(codeSkuRelationshipVO.getSkuType());
+            codeSkuRelationshipSoVO.setSn(actAllocationDetailsFrom.getLotatt02());
+            BigDecimal qty = actAllocationDetailsFrom.getQty().subtract(actAllocationDetailsFrom.getPickQty());
+            codeSkuRelationshipSoVO.setQty(qty.doubleValue());
+        }
+        return codeSkuRelationshipSoVO;
+    }
+
     @Override
     public void addOrUpdateErp(List<ErpOrderList> erpOrderLists) {
         String orderNo = idSequenceUtils.generateId("ORDERNO");

+ 60 - 0
warewms-ams/src/main/resources/mapper/docOrder/ActAllocationDetailsMapper.xml

@@ -27,6 +27,47 @@
         <result property="userdefine4" column="userdefine4"/>
     </resultMap>
 
+    <resultMap type="com.ruoyi.ams.order.form.ActAllocationDetailsFrom" id="ActAllocationDetailsInvLotAttResult">
+        <result property="allocationId" column="allocation_id"/>
+        <result property="orderNo" column="order_no"/>
+        <result property="lineNo" column="line_no"/>
+        <result property="material" column="material"/>
+        <result property="locationId" column="location_id"/>
+        <result property="callTransactionId" column="call_transaction_id"/>
+        <result property="status" column="status"/>
+        <result property="lotnum" column="lotnum"/>
+        <result property="qty" column="qty"/>
+        <result property="pickTransactionId" column="pick_transaction_id"/>
+        <result property="pickToLocation" column="pick_to_location"/>
+        <result property="pickQty" column="pick_qty"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="userdefine1" column="userdefine1"/>
+        <result property="userdefine2" column="userdefine2"/>
+        <result property="userdefine3" column="userdefine3"/>
+        <result property="userdefine4" column="userdefine4"/>
+        <result property="lotatt01" column="lotatt01"/>
+        <result property="lotatt02" column="lotatt02"/>
+        <result property="lotatt03" column="lotatt04"/>
+        <result property="lotatt04" column="lotatt04"/>
+        <result property="lotatt05" column="lotatt05"/>
+        <result property="lotatt06" column="lotatt06"/>
+        <result property="lotatt07" column="lotatt07"/>
+        <result property="lotatt08" column="lotatt08"/>
+        <result property="lotatt09" column="lotatt09"/>
+        <result property="lotatt10" column="lotatt10"/>
+        <result property="lotatt11" column="lotatt11"/>
+        <result property="lotatt12" column="lotatt12"/>
+        <result property="lotatt13" column="lotatt13"/>
+        <result property="lotatt14" column="lotatt14"/>
+        <result property="lotatt15" column="lotatt15"/>
+        <result property="lotatt16" column="lotatt16"/>
+        <result property="lotatt17" column="lotatt17"/>
+        <result property="lotatt18" column="lotatt18"/>
+    </resultMap>
+
     <sql id="selectActAllocationDetailsVo">
         select allocation_id,
                order_no,
@@ -70,6 +111,25 @@
         </where>
     </select>
 
+    <select id="selectActAllocationDetailsInvLotAttList" parameterType="object" resultMap="ActAllocationDetailsInvLotAttResult">
+        select t1.*
+        ,t2.lotatt01,t2.lotatt02,t2.lotatt03,t2.lotatt04,t2.lotatt05,t2.lotatt06
+        ,t2.lotatt07,t2.lotatt08,t2.lotatt09,t2.lotatt10,t2.lotatt11,t2.lotatt12
+        ,t2.lotatt13,t2.lotatt14,t2.lotatt15,t2.lotatt16,t2.lotatt17,t2.lotatt18
+        from act_allocation_details t1
+        left join inv_lot_att t2 ON t2.lotnum = t1.lotnum
+        <where>
+            <if test="allocationId != null  and allocationId != ''"> and allocation_id = #{allocationId}</if>
+            <if test="orderNo != null  and orderNo != ''"> and order_no = #{orderNo}</if>
+            <if test="material != null  and material != ''"> and material = #{material}</if>
+            <if test="lotnum != null  and lotnum != ''"> and lotnum = #{lotnum}</if>
+            <if test="userdefine1 != null  and userdefine1 != ''"> and userdefine1 = #{userdefine1}</if>
+            <if test="status != null  and status != ''"> and status = #{status}</if>
+            <if test="lotatt01 != null  and lotatt01 != ''"> and lotatt01 = #{lotatt01}</if>
+            <if test="lotatt02 != null  and lotatt02 != ''"> and lotatt02 = #{lotatt02}</if>
+        </where>
+    </select>
+
     <select id="selectActAllocationDetailsByAllocationId" parameterType="String" resultMap="ActAllocationDetailsResult">
         <include refid="selectActAllocationDetailsVo"/>
         where allocation_id = #{allocationId}

+ 120 - 0
warewms-base/src/main/java/com/ruoyi/base/constant/Constant.java

@@ -50,6 +50,126 @@ public class Constant {
         }
     }
 
+    /**
+     * 入库单状态
+     */
+    public enum ASN_STS {
+        /**
+         * 订单创建
+         */
+        STS00("00"),
+        /**
+         * 部分收货
+         */
+        STS30("30"),
+        /**
+         * 完全收货
+         */
+        STS40("40"),
+        /**
+         * 部分上架
+         */
+        STS50("50"),
+        /**
+         * 完全上架
+         */
+        STS60("60"),
+        /**
+         * 部分验收
+         */
+        STS70("70"),
+        /**
+         * 完全验收
+         */
+        STS80("80"),
+        /**
+         * 收货取消
+         */
+        STS90("90"),
+        /**
+         * ASN关闭
+         */
+        STS99("99");
+
+        private String value;
+
+        ASN_STS(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    /**
+     * 出库状态
+     */
+    public enum ORDER_STS {
+        /**
+         * 订单创建
+         */
+        STS00("00"),
+        /**
+         * 部分分配
+         */
+        STS10("10"),
+        /**
+         * 完全分配
+         */
+        STS20("20"),
+        /**
+         * 部分拣货
+         */
+        STS30("30"),
+        /**
+         * 拣货完成
+         */
+        STS40("40"),
+        /**
+         * 取消
+         */
+        STS90("90"),
+        /**
+         * 关闭
+         */
+        STS99("99");
+
+        private String value;
+
+        ORDER_STS(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
+    /**
+     * 库存状态
+     */
+    public enum INV_STS {
+        /**
+         * 合格
+         */
+        HG("90"),
+        /**
+         * 不合格
+         */
+        BHG("99");
+
+        private String value;
+
+        INV_STS(String value) {
+            this.value = value;
+        }
+
+        public String getValue() {
+            return value;
+        }
+    }
+
     /**
      * 储位状态
      */

+ 18 - 0
warewms-base/src/main/java/com/ruoyi/base/domain/vo/CodeSkuRelationshipSoVO.java

@@ -0,0 +1,18 @@
+package com.ruoyi.base.domain.vo;
+
+import lombok.Data;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: jwk
+ * Date: 2023/03/20
+ * Description:
+ */
+@Data
+public class CodeSkuRelationshipSoVO {
+    private String orderNo;
+    private String sn;
+    private String sku;
+    private String skuType;
+    private Double qty;
+}

+ 14 - 0
warewms-base/src/main/java/com/ruoyi/base/form/SnCheckSoForm.java

@@ -0,0 +1,14 @@
+package com.ruoyi.base.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+@Data
+public class SnCheckSoForm {
+    @NotEmpty(message = "条码不能为空")
+    private String sn;
+    @NotEmpty(message = "出库单不能为空")
+    private String orderNo;
+}

+ 9 - 7
warewms-base/src/main/resources/mapper/base/CodeSkuRelationshipMapper.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.base.mapper.CodeSkuRelationshipMapper">
-    
+
     <resultMap type="CodeSkuRelationship" id="CodeSkuRelationshipResult">
         <result property="id"    column="id"    />
         <result property="sn"    column="sn"    />
@@ -32,7 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectCodeSkuRelationshipList" parameterType="CodeSkuRelationshipVO" resultMap="CodeSkuRelationshipResult">
         <include refid="selectCodeSkuRelationshipVo"/>
-        <where>  
+        <where>
             <if test="sn != null  and sn != ''"> and sn = #{sn}</if>
             <if test="status != null  and status != ''"> and status = #{status}</if>
             <if test="sku != null  and sku != ''"> and sku = #{sku}</if>
@@ -40,12 +40,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="userId != null  and userId != ''"> and user_id = #{userId}</if>
         </where>
     </select>
-    
+
     <select id="selectCodeSkuRelationshipById" parameterType="Long" resultMap="CodeSkuRelationshipResult">
         <include refid="selectCodeSkuRelationshipVo"/>
         where id = #{id}
     </select>
-        
+
     <insert id="insertCodeSkuRelationship" parameterType="CodeSkuRelationshipVO" useGeneratedKeys="true" keyProperty="id">
         insert into code_sku_relationship
         <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -93,14 +93,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteCodeSkuRelationshipByIds" parameterType="String">
-        delete from code_sku_relationship where id in 
+        delete from code_sku_relationship where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
 
     <select id="selectCodeSkuRelationshipBySn" parameterType="string" resultMap="CodeSkuRelationshipVOResult">
-      select c.sn,c.status,s.* from code_sku_relationship c left join base_sku s on c.sku = s.sku
+      select c.sn,c.status,s.*
+      from code_sku_relationship c
+      left join base_sku s on c.sku = s.sku
       where c.sn = #{sn} and status = 'Y'
     </select>
-</mapper>
+</mapper>