andy 2 سال پیش
والد
کامیت
33606e9fcd

+ 10 - 0
ruoyi-admin/src/test/java/com/ruoyi/admin/test/base/WarehouseTest.java

@@ -17,6 +17,8 @@ import com.ruoyi.ams.inv.mapper.InvLotLocIdMapper;
 import com.ruoyi.ams.locationView.domain.form.LocationViewForm;
 import com.ruoyi.ams.locationView.domain.vo.LocationViewVO;
 import com.ruoyi.ams.locationView.service.LocationViewService;
+import com.ruoyi.ams.order.mapper.WmsDocOrderDetailsMapper;
+import com.ruoyi.ams.order.vo.StockOrderVO;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.BaseWarehouse;
 import com.ruoyi.base.domain.LotattVO;
@@ -71,6 +73,8 @@ public class WarehouseTest {
     private IFlowConfigHeaderService flowConfigHeaderService;
     @Autowired
     private AsnSoStrategyMapper asnSoStrategyMapper;
+    @Autowired
+    private WmsDocOrderDetailsMapper wmsDocOrderDetailsMapper;
 
     @Test
     public void test() {
@@ -172,4 +176,10 @@ public class WarehouseTest {
         List<FilterLockInvLocationDTO> locationInfoList = locationAllocationStrategy.filterLockInv(locationIdList, outWarehouseDTOs, asnSoStrategy, token);
         System.out.println(JSON.toJSONString(locationInfoList));
     }
+
+    @Test
+    public void test7() {
+        List<StockOrderVO> orderVOList = wmsDocOrderDetailsMapper.selectStockOrder("123");
+        System.out.println(orderVOList);
+    }
 }

+ 1 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java

@@ -299,6 +299,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
                 updateDetails.setAsnNo(asnDetails.getAsnNo());
                 updateDetails.setAsnLineNo(asnDetails.getAsnLineNo());
                 updateDetails.setdEdi01(stockForm.getOrderNo());
+                updateDetails.setdEdi02(s.getSkuSn());//产品sn
                 wmsDocAsnDetailsMapper.updateWmsDocAsnDetails(updateDetails);
             }
         }

+ 7 - 0
warewms-ams/src/main/java/com/ruoyi/ams/box/mapper/WmsBoxInfoMapper.java

@@ -68,4 +68,11 @@ public interface WmsBoxInfoMapper
      * @return
      */
      int updateLocationBind(@Param("locationFrom") Long locationFrom,@Param("locationTo") Long locationTo,@Param("isFull") String isFull);
+
+    /**
+     * 接触托盘绑定关系
+     * @param locationId
+     * @return
+     */
+     int unbindBox(@Param("locationId")String locationId);
 }

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

@@ -65,4 +65,11 @@ public interface ActAllocationDetailsMapper
      * @return
      */
      List<ActAllocationDetails> queryAllocationDetailsByPalletNo(String palletNo);
+
+    /**
+     * 根据订单查询分配明细
+     * @param orderNo
+     * @return
+     */
+     List<ActAllocationDetails> queryAllocationDetailsByOrderNo(String orderNo);
 }

+ 8 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/mapper/WmsDocOrderDetailsMapper.java

@@ -77,4 +77,12 @@ public interface WmsDocOrderDetailsMapper
      * @return
      */
     List<StockOrderVO> selectStockOrder(@Param("palletNo") String palletNo);
+
+    /**
+     * 根据单号行号查询明细
+     * @param orderNo
+     * @param orderLoneNo
+     * @return
+     */
+    WmsDocOrderDetails selectWmsDocOrderDetailsByNoLineNo(@Param("orderNo") String orderNo, @Param("orderLoneNo") Long orderLoneNo);
 }

+ 7 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/IActAllocationDetailsService.java

@@ -88,4 +88,11 @@ public interface IActAllocationDetailsService {
      * @return
      */
     List<ActAllocationDetails> queryAllocationDetailsByPalletNo(String palletNo);
+
+    /**
+     * 查询分配明细
+     * @param orderNo
+     * @return
+     */
+    List<ActAllocationDetails> queryAllocationDetailsByOrderNo(String orderNo);
 }

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

@@ -83,10 +83,10 @@ public interface IWmsDocOrderHeaderService {
     /**
      * 更新订单明细备货数
      *
-     * @param orderNo
-     * @param orderLoneNo
-     * @param sku
-     * @param qty
+     * @param orderNo 订单号
+     * @param orderLoneNo 订单明细
+     * @param sku 物料
+     * @param qty 数量
      * @return
      */
     int updateOrderDetailsStock(String orderNo, Long orderLoneNo, String sku, Double qty);
@@ -128,6 +128,13 @@ public interface IWmsDocOrderHeaderService {
      */
     AjaxResult doCheckout(List<CheckOutForm> checkOutForms);
 
+    /**
+     * 发运
+     * @param orderNo
+     * @return
+     */
+    AjaxResult doShipped(String orderNo);
+
     /**
      * 查询待出库明细
      * @param palletNo

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

@@ -20,6 +20,7 @@ import com.ruoyi.ams.order.service.IActAllocationDetailsService;
  */
 @Service
 public class ActAllocationDetailsServiceImpl implements IActAllocationDetailsService {
+
     @Autowired
     private ActAllocationDetailsMapper actAllocationDetailsMapper;
     @Autowired
@@ -131,4 +132,9 @@ public class ActAllocationDetailsServiceImpl implements IActAllocationDetailsSer
     public List<ActAllocationDetails> queryAllocationDetailsByPalletNo(String palletNo) {
         return actAllocationDetailsMapper.queryAllocationDetailsByPalletNo(palletNo);
     }
+
+    @Override
+    public List<ActAllocationDetails> queryAllocationDetailsByOrderNo(String orderNo) {
+        return actAllocationDetailsMapper.queryAllocationDetailsByOrderNo(orderNo);
+    }
 }

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

@@ -5,6 +5,7 @@ import java.util.List;
 
 import com.ruoyi.ams.box.mapper.WmsBoxInfoMapper;
 import com.ruoyi.ams.inv.domain.InvLotLocId;
+import com.ruoyi.ams.inv.mapper.InvLotLocIdMapper;
 import com.ruoyi.ams.inv.service.IInvLotLocIdService;
 import com.ruoyi.ams.order.domain.ActAllocationDetails;
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
@@ -41,6 +42,8 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     private IWmsDocOrderHeaderService wmsDocOrderHeaderService;
     @Autowired
     private WmsBoxInfoMapper wmsBoxInfoMapper;
+    @Autowired
+    private InvLotLocIdMapper invLotLocIdMapper;
 
     /**
      * 查询出库单头
@@ -267,21 +270,49 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             //库存进行移动
             invLotLocIdService.stockTransfer(actAllocationDetails.getLocationId(), Long.parseLong(actAllocationDetails.getPickToLocation()));
             //托盘进行绑定修改
-            wmsBoxInfoMapper.updateLocationBind(actAllocationDetails.getLocationId(), Long.parseLong(p.getLocationTo()),p.getFullTag());
+            wmsBoxInfoMapper.updateLocationBind(actAllocationDetails.getLocationId(), Long.parseLong(p.getLocationTo()), p.getFullTag());
             //TODO 是否需要生成任务
+
         }
         return AjaxResult.success("操作成功");
     }
 
     @Override
     public AjaxResult doCheckout(List<CheckOutForm> checkOutForms) {
+        //TODO 生成任务呼叫到接驳位
 
         return null;
     }
 
+    @Transactional
     @Override
-    public List<StockOrderVO> selectStockOrder(String palletNo) {
-
+    public AjaxResult doShipped(String orderNo) {
+        List<ActAllocationDetails> actAllocationDetails = actAllocationDetailsService.queryAllocationDetailsByOrderNo(orderNo);
+        for (ActAllocationDetails details : actAllocationDetails) {
+            String pickToLocation = details.getPickToLocation();
+            //更新发运数
+            WmsDocOrderDetails orderDetails = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByNoLineNo(details.getOrderNo(), details.getLineNo());
+            orderDetails.setQtyShipped(details.getPickQty());
+            if (orderDetails.getQtyOrdered().equals(details.getPickQty())) {
+                orderDetails.setLineStatus("70");
+            } else {
+                orderDetails.setLineStatus("60");
+            }
+            //更新库存
+            InvLotLocId invLotLocId = invLotLocIdMapper.selectInvLotLocIdByLotnum(details.getLotnum());
+            invLotLocId.setQtyallocated(invLotLocId.getQtyallocated().subtract(details.getQty()));
+            invLotLocId.setQty(invLotLocId.getQty().subtract(details.getQty()));
+            invLotLocIdMapper.updateInvLotLocId(invLotLocId);
+            //更新订单明细
+            wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(orderDetails);
+            //清空托盘绑定关系
+            wmsBoxInfoMapper.unbindBox(pickToLocation);
+        }
         return null;
     }
+
+    @Override
+    public List<StockOrderVO> selectStockOrder(String palletNo) {
+        return wmsDocOrderDetailsMapper.selectStockOrder(palletNo);
+    }
 }

+ 4 - 0
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -311,6 +311,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        delete from inv_lot_loc_id where location_id = #{locationId}
     </update>
 
+    <update id="clearInvByLocationId">
+       delete from inv_lot_loc_id where lotnum = #{lotnum}
+    </update>
+
     <select id="queryInvBySku" resultType="double">
         select
         sum(inv.qty) qty

+ 5 - 0
warewms-ams/src/main/resources/mapper/box/WmsBoxInfoMapper.xml

@@ -110,4 +110,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </trim>
         where location_id = #{locationFrom}
     </update>
+
+    <update id="unbindBox">
+        update wms_box_info set location_id = '',is_full = 'N'
+        where location_id = #{locationId}
+    </update>
 </mapper>

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

@@ -131,4 +131,9 @@
         select al.* from act_allocation_details al left join wms_box_info b on al.location_id = b.location_id
         where al.box_no = #{palletNo}
     </select>
+
+    <select id="queryAllocationDetailsByOrderNo" parameterType="String" resultMap="ActAllocationDetailsResult">
+        select al.* from act_allocation_details al
+        where al.order_no = #{orderNo} and status in (10,20,30,40)
+    </select>
 </mapper>

+ 17 - 1
warewms-ams/src/main/resources/mapper/docOrder/WmsDocOrderDetailsMapper.xml

@@ -84,7 +84,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <resultMap type="com.ruoyi.ams.order.vo.StockOrderVO" id="StockOrderVOResult">
-
+        <result property="orderNo" column="order_no"></result>
+        <result property="orderLineNo" column="order_line_no"></result>
+        <result property="allocationId" column="allocation_id"></result>
+        <result property="sku" column="sku"></result>
+        <result property="sn" column="sn"></result>
+        <result property="pickQty" column="pick_qty"></result>
     </resultMap>
 
     <sql id="selectWmsDocOrderDetailsVo">
@@ -434,6 +439,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <select id="selectStockOrder" resultMap="StockOrderVOResult">
+        select
+            h.order_no,de.order_line_no,ad.allocation_id,de.sku,de.d_edi_02,ifnull(ad.pick_qty,0) pick_qty
+        from wms_doc_order_header h
+        left join wms_doc_order_details de on h.order_no = de.order_no
+        left join act_allocation_details ad on de.order_no = ad.order_no and de.order_line_no = ad.line_no
+        left join base_sku sk on de.sku = sk.sku
+        left join wms_box_info box on ad.pick_to_location = box.location_id
+        where box.box_no = #{palletNo}
+    </select>
 
+    <select id="selectWmsDocOrderDetailsByNoLineNo" resultMap="WmsDocOrderDetailsResult">
+        select * from wms_doc_order_details where order_no = #{orderNo} and order_line_no = #{orderLoneNo}
     </select>
 </mapper>