Browse Source

bug修复

andy 2 years ago
parent
commit
5246863c04

+ 43 - 13
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java

@@ -3,10 +3,8 @@ package com.ruoyi.web.controller.warewms.pda;
 import com.alibaba.fastjson.JSON;
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
-import com.ruoyi.ams.asn.form.PaForm;
-import com.ruoyi.ams.asn.form.StockForm;
-import com.ruoyi.ams.asn.form.StockingListForm;
-import com.ruoyi.ams.asn.form.UnlockForm;
+import com.ruoyi.ams.asn.form.*;
+import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
 import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
 import com.ruoyi.ams.asn.vo.SearchStockVO;
 import com.ruoyi.ams.box.domain.WmsBoxInfo;
@@ -37,6 +35,8 @@ import com.ruoyi.ams.order.service.IActAllocationDetailsService;
 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.domain.vo.CodeSkuRelationshipVO;
+import com.ruoyi.base.form.SnCheckForm;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.domain.AjaxResult;
@@ -47,6 +47,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.system.service.ISysDictDataService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.ArrayList;
@@ -85,6 +86,8 @@ public class PdaController {
     private IFlowConfigHeaderService flowConfigHeaderService;
     @Autowired
     private IWmsBoxInfoService wmsBoxInfoService;
+    @Autowired
+    private IWmsDocAsnDetailsService wmsDocAsnDetailsService;
 
     /**
      * 查询批次属性后台配置
@@ -162,16 +165,13 @@ public class PdaController {
     /**
      * 条码检测
      *
-     * @param param
+     * @param snCheckForm
      * @return
      */
     @PostMapping("/docAsn/snCheck")
-    public AjaxResult snCheck(@RequestBody Map<String, String> param) {
-        String sn = param.get("sn");
-        if (StringUtils.isEmpty(sn)) {
-            return AjaxResult.error("条码不能为空");
-        }
-        return codeSkuRelationshipService.snCheck(sn);
+    public AjaxResult snCheck(@Validated @RequestBody SnCheckForm snCheckForm) {
+        CodeSkuRelationshipVO codeSkuRelationshipVO = wmsDocAsnHeaderService.searchSn(snCheckForm);
+        return AjaxResult.success(codeSkuRelationshipVO);
     }
 
     /**
@@ -201,8 +201,8 @@ public class PdaController {
      * @return
      */
     @GetMapping("/docAsn/searchStock")
-    public AjaxResult searchStock(@RequestParam String palletNo) {
-        List<SearchStockVO> searchStockVOList = wmsDocAsnHeaderService.searchStock(palletNo);
+    public AjaxResult searchStock(@RequestParam String palletNo, @RequestParam String sku) {
+        List<SearchStockVO> searchStockVOList = wmsDocAsnHeaderService.searchStock(palletNo, sku);
         return AjaxResult.success("", searchStockVOList);
     }
 
@@ -403,4 +403,34 @@ public class PdaController {
             return AjaxResult.error("更新失败");
         }
     }
+
+    @PostMapping("/docAsn/closeStock")
+    public AjaxResult closeStock(@RequestBody Map<String, Object> param) {
+        if (param.get("asnNo") == null) {
+            return AjaxResult.error("请输入入库单号");
+        }
+        String asnNo = param.get("asnNo").toString();
+        WmsDocAsnHeader header = wmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo);
+        if (header == null) {
+            return AjaxResult.error("入库单不存在");
+        }
+        WmsDocAsnDetails query = new WmsDocAsnDetails();
+        query.setAsnNo(asnNo);
+        List<WmsDocAsnDetails> detailsList = wmsDocAsnDetailsService.selectWmsDocAsnDetailsList(query);
+        if (detailsList != null && detailsList.size() > 0) {
+            for (WmsDocAsnDetails details : detailsList) {
+                if (details.getExpectedQty().compareTo(details.getReceivedQty()) != 0) {
+                    return AjaxResult.error("不满足入库条件");
+                }
+            }
+            if (header.getEdiSendFlag() == null || header.getEdiSendFlag().equals("N")) {
+                //TODO 反馈ERP
+                return AjaxResult.error("入库单反馈成功");
+            } else {
+                return AjaxResult.success("入库单已经回传");
+            }
+        } else {
+            return AjaxResult.error("查询不到入库单明细");
+        }
+    }
 }

+ 3 - 5
ruoyi-admin/src/test/java/com/ruoyi/admin/test/base/WarehouseTest.java

@@ -207,21 +207,20 @@ public class WarehouseTest {
 
     @Test
     public void initDocAsnData() {
-        String asnNo = idSequenceUtils.generateId("ASNNO");
         WmsDocAsnHeader header = new WmsDocAsnHeader();
-        header.setAsnNo(asnNo);
         header.setAsnReference1("12321");
         header.setAsnStatus("00");
         header.setAsnType("PR");
         header.setCreateTime(new Date());
         header.setCreateBy("warewms");
         header.setCustomerId("default");
+        wmsDocAsnHeaderService.insertWmsDocAsnHeader(header);
         List<WmsDocAsnDetails> detailsList = new ArrayList<>();
         //String[] arr = new String[]{"test201", "test202", "test301", "test302", "test401", "test402"};
         String[] arr = new String[]{"test201", "test203"};
         for (int i = 1; i <= arr.length; i++) {
             WmsDocAsnDetails details = new WmsDocAsnDetails();
-            details.setAsnNo(asnNo);
+            details.setAsnNo(header.getAsnNo());
             details.setAsnLineNo(Long.valueOf(i));
             details.setSku(arr[i - 1]);
             details.setExpectedQty(BigDecimal.valueOf(15));
@@ -237,8 +236,7 @@ public class WarehouseTest {
             wmsDocAsnHeaderService.insertWmsDocAsnDetails(details);
         }
         header.setWmsDocAsnDetailsList(detailsList);
-        wmsDocAsnHeaderService.insertWmsDocAsnHeader(header);
-        System.out.println(asnNo);
+        System.out.println(header.getAsnNo());
     }
 
     @Test

+ 11 - 1
warewms-ams/src/main/java/com/ruoyi/ams/asn/domain/WmsDocAsnHeader.java

@@ -98,6 +98,8 @@ public class WmsDocAsnHeader extends BaseEntity
     /** 是否有效(N删除Y有效) */
     private String activeFlag;
 
+    private String ediSendFlag;
+
     /** $column.columnComment */
     private String hEdi01;
 
@@ -363,7 +365,15 @@ public class WmsDocAsnHeader extends BaseEntity
         this.hEdi01 = hEdi01;
     }
 
-    public String gethEdi01() 
+    public String getEdiSendFlag() {
+        return ediSendFlag;
+    }
+
+    public void setEdiSendFlag(String ediSendFlag) {
+        this.ediSendFlag = ediSendFlag;
+    }
+
+    public String gethEdi01()
     {
         return hEdi01;
     }

+ 9 - 1
warewms-ams/src/main/java/com/ruoyi/ams/asn/mapper/WmsDocAsnHeaderMapper.java

@@ -117,5 +117,13 @@ public interface WmsDocAsnHeaderMapper {
      * @param palletNo
      * @return
      */
-    List<SearchStockVO> searchStock(@Param("palletNo") String palletNo);
+    List<SearchStockVO> searchStock(@Param("palletNo") String palletNo,@Param("sku") String sku);
+
+    /**
+     * 根据入库单号查询接收数
+     *
+     * @param asnNoList
+     * @return
+     */
+    Double selectReceivedQtyByAsnNos(@Param("sku") String sku, @Param("list") List<String> asnNoList);
 }

+ 10 - 1
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/IWmsDocAsnHeaderService.java

@@ -8,6 +8,8 @@ import com.ruoyi.ams.asn.form.PaForm;
 import com.ruoyi.ams.asn.form.StockForm;
 import com.ruoyi.ams.asn.form.UnlockForm;
 import com.ruoyi.ams.asn.vo.SearchStockVO;
+import com.ruoyi.base.domain.vo.CodeSkuRelationshipVO;
+import com.ruoyi.base.form.SnCheckForm;
 import com.ruoyi.common.core.domain.AjaxResult;
 
 /**
@@ -119,7 +121,7 @@ public interface IWmsDocAsnHeaderService {
      * @param palletNo
      * @return
      */
-    List<SearchStockVO> searchStock(String palletNo);
+    List<SearchStockVO> searchStock(String palletNo, String sku);
 
     /**
      * 解绑物料
@@ -143,4 +145,11 @@ public interface IWmsDocAsnHeaderService {
      * @return
      */
     List<WmsDocAsnDetails> selectStockingList(List<String> asnNos);
+
+    /**
+     * 条码检测
+     * @param snCheckForm
+     * @return
+     */
+    CodeSkuRelationshipVO searchSn(SnCheckForm snCheckForm);
 }

+ 53 - 27
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java

@@ -36,6 +36,7 @@ import com.ruoyi.base.constant.Constant;
 import com.ruoyi.base.domain.BaseLocationInfo;
 import com.ruoyi.base.domain.BaseSku;
 import com.ruoyi.base.domain.vo.CodeSkuRelationshipVO;
+import com.ruoyi.base.form.SnCheckForm;
 import com.ruoyi.base.service.IBaseLocationInfoService;
 import com.ruoyi.base.service.IBaseSkuService;
 import com.ruoyi.base.service.ICodeSkuRelationshipService;
@@ -148,6 +149,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
     public int insertWmsDocAsnHeader(WmsDocAsnHeader wmsDocAsnHeader) {
         String asnNo = idSequenceUtils.generateId("ASNNO");
         wmsDocAsnHeader.setAsnNo(asnNo);
+        wmsDocAsnHeader.setEdiSendFlag("N");
         int rows = wmsDocAsnHeaderMapper.insertWmsDocAsnHeader(wmsDocAsnHeader);
         //insertWmsDocAsnDetails(wmsDocAsnHeader);
         return rows;
@@ -289,7 +291,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
             if (wmsBoxInfo.getIsFull() != null && wmsBoxInfo.getIsFull().equals("Y")) {
                 throw new ServiceException("该托盘已放满");
             }
-            wmsBoxInfo.setBoxState(1);
+            wmsBoxInfo.setBoxState(1);//启用状态
             wmsBoxInfo.setIsFull(stockForm.getFullTag());
             wmsBoxInfo.setLocationId(Long.parseLong(STAGE01));
             wmsBoxInfo.setUpdateBy(loginUser.getUsername());
@@ -301,7 +303,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
 
         //判断成品条码
         CodeSkuRelationshipVO codeSkuRelationshipVO = codeSkuRelationshipService.checkIsProduct(stockForm.getSkuSn());
-
+        //当前订单总数
         BigDecimal totalQty = new BigDecimal(stockForm.getQty());
 
         //产品条码属于出入库单
@@ -317,13 +319,14 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
             if (wmsDocOrderHeader.getOrderStatus().equals("90") || wmsDocOrderHeader.getOrderStatus().equals("98") || wmsDocOrderHeader.getOrderStatus().equals("99")) {
                 return AjaxResult.error("出库单已完成");
             }
-            //TODO 每个托盘只允许码一个出库单
-            /*InvLotAtt queryAtt = new InvLotAtt();
+            //每个托盘只允许码一个出库单
+            InvLotAtt queryAtt = new InvLotAtt();
             queryAtt.setLotatt14(stockForm.getOrderNo());
-            List<InvLotLocId> invList = invLotLocIdService.queryInvByInvLotatt(queryAtt, stockForm.getPalletNo());
+            queryAtt.setLotatt07(stockForm.getPalletNo());
+            List<InvLotLocId> invList = invLotLocIdService.queryInvByInvLotatt(queryAtt);
             if (invList != null && invList.size() > 1) {
-                throw new ServiceException("");
-            }*/
+                throw new ServiceException("每个托盘只允许码一个出库单");
+            }
 
             orderDetails = wmsDocOrderHeader.getWmsDocOrderDetailsList();
 
@@ -367,14 +370,6 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
         if (codeSkuRelationshipVO.isProduct()) {
             stockForm.setQty(BigDecimal.ONE.toString());
             totalQty = BigDecimal.ONE;
-
-            InvLotAtt queryAtt = new InvLotAtt();
-            queryAtt.setSku(codeSkuRelationshipVO.getSku());
-            queryAtt.setLotatt02(stockForm.getSkuSn());
-            List<InvLotLocId> invList = invLotLocIdService.queryInvByInvLotatt(queryAtt, stockForm.getPalletNo());
-            if (invList != null && invList.size() > 0) {
-                throw new ServiceException("每个成品条码只允许码一次");
-            }
         }
 
         //匹配对应的入库单,出库单
@@ -384,12 +379,17 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
                 return AjaxResult.error("没有可以接收的入库单");
             } else {
                 for (WmsDocAsnDetails details : list) {
-                    if (new BigDecimal(stockForm.getQty()).compareTo(details.getExpectedQty()) == 1) {
-                        throw new ServiceException("入库数量超出入库单数量");
-                    }
-                    if (details.getReceivedQty().add(new BigDecimal(stockForm.getQty())).compareTo(details.getExpectedQty()) == 1) {
-                        throw new ServiceException("入库数量超出入库单数量");
+                    InvLotAtt attQuery = new InvLotAtt();
+                    attQuery.setSku(codeSkuRelationshipVO.getSku());
+                    attQuery.setLotatt07(stockForm.getPalletNo());
+                    attQuery.setLotatt02(codeSkuRelationshipVO.getSn());
+                    attQuery.setLotatt08(details.getAsnNo());
+                    attQuery.setLotatt14(stockForm.getOrderNo());
+                    List<InvLotLocId> samePalletInvList = invLotLocIdMapper.queryInvByInvLotatt(attQuery);
+                    if (samePalletInvList != null && samePalletInvList.size() > 0) {
+                        throw new ServiceException("每个成品条码相同托盘只允许码一次");
                     }
+
                     //如果入库单预计数量大于接收数
                     if (details.getExpectedQty().compareTo(details.getReceivedQty()) == 1) {
                         //当前入库单可以接收的数量
@@ -412,7 +412,12 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
                                 asnStatus = "40";
                             }
                             //更新入库单接收数量及状态
-                            wmsDocAsnDetailsMapper.updateWmsReceivedQty(details.getAsnNo(), details.getAsnLineNo().intValue(), current, asnStatus);
+                            int result = wmsDocAsnDetailsMapper.updateWmsReceivedQty(details.getAsnNo(), details.getAsnLineNo().intValue(), current, asnStatus);
+                            if (result > 0) {
+                                totalQty = totalQty.subtract(current);
+                            } else {
+                                throw new ServiceException("更新接收数失败");
+                            }
                             if (!StringUtils.isEmpty(stockForm.getOrderNo())) {
                                 //绑定对应入库单号
                                 WmsDocAsnDetails updateDetails = new WmsDocAsnDetails();
@@ -428,7 +433,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
                             detailsQuery.setAsnNo(details.getAsnNo());
                             List<WmsDocAsnDetails> detailsCheckList = wmsDocAsnDetailsMapper.selectWmsDocAsnDetailsList(detailsQuery);
                             for (WmsDocAsnDetails d : detailsCheckList) {
-                                if(!d.getLineStatus().equals("40")) {
+                                if (!d.getLineStatus().equals("40")) {
                                     asnStatus = "30";
                                 }
                             }
@@ -441,7 +446,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
 
                             //生成库存
                             LotattDTO lotattDTO = new LotattDTO();
-                            if(codeSkuRelationshipVO.isProduct()) {
+                            if (codeSkuRelationshipVO.isProduct()) {
                                 lotattDTO.setLotatt02(stockForm.getSkuSn());
                             }
                             lotattDTO.setLotatt05("90");
@@ -479,7 +484,9 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
         }
 
         //获取库存当前的托盘位置
-        List<InvLotLocId> invLotLocIdList = invLotLocIdService.queryInvByInvLotatt(null, palletNo);
+        InvLotAtt lotAtt = new InvLotAtt();
+        lotAtt.setLotatt07(paForm.getPalletNo());
+        List<InvLotLocId> invLotLocIdList = invLotLocIdService.queryInvByInvLotatt(lotAtt);
         for (InvLotLocId inv : invLotLocIdList) {
             InvLotAtt invLotAtt = invLotAttService.selectInvLotAttByLotnum(inv.getLotnum());
             invLotAtt.setLotatt12("Y");
@@ -540,8 +547,8 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
     }
 
     @Override
-    public List<SearchStockVO> searchStock(String palletNo) {
-        return wmsDocAsnHeaderMapper.searchStock(palletNo);
+    public List<SearchStockVO> searchStock(String palletNo, String sku) {
+        return wmsDocAsnHeaderMapper.searchStock(palletNo, sku);
     }
 
     @Transactional
@@ -554,6 +561,11 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
         if (wmsBoxInfo.getLocationId() == null) {
             return AjaxResult.error("托盘未绑定");
         }
+
+        //把托盘设置成非满拖
+        wmsBoxInfo.setIsFull("N");
+        wmsBoxInfoService.updateWmsBoxInfo(wmsBoxInfo);
+
         InvLotLocId query = new InvLotLocId();
         query.setLotnum(unlockForm.getLotnum());
         query.setSku(unlockForm.getSku());
@@ -571,7 +583,6 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
             detailsQuery.setSku(qtt.getSku());
             List<WmsDocAsnDetails> details = wmsDocAsnDetailsMapper.selectWmsDocAsnDetailsList(detailsQuery);
             for (WmsDocAsnDetails d : details) {
-                //TODO 修改入库单状态
                 wmsDocAsnDetailsMapper.updateWmsReceivedQty(d.getAsnNo(), d.getAsnLineNo().intValue(), BigDecimal.valueOf(-1 * inv.getQty().doubleValue()), "30");
             }
             //查询入库单明细并进行修改
@@ -603,4 +614,19 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
     public List<WmsDocAsnDetails> selectStockingList(List<String> asnNos) {
         return wmsDocAsnDetailsMapper.selectStockingList(asnNos);
     }
+
+    @Override
+    public CodeSkuRelationshipVO searchSn(SnCheckForm snCheckForm) {
+        CodeSkuRelationshipVO codeSkuRelationshipVO = codeSkuRelationshipService.snCheck(snCheckForm.getSn());
+        if (snCheckForm.getAsnNoList() != null) {
+            Double receivedQty = wmsDocAsnHeaderMapper.selectReceivedQtyByAsnNos(codeSkuRelationshipVO.getSku(), snCheckForm.getAsnNoList());
+            if (receivedQty == null) {
+                receivedQty = 0d;
+            }
+            codeSkuRelationshipVO.setReceivedQty(receivedQty);
+        } else {
+            codeSkuRelationshipVO.setReceivedQty(0d);
+        }
+        return codeSkuRelationshipVO;
+    }
 }

+ 1 - 2
warewms-ams/src/main/java/com/ruoyi/ams/inv/mapper/InvLotLocIdMapper.java

@@ -204,7 +204,7 @@ public interface InvLotLocIdMapper {
      * @param boxNo
      * @return
      */
-    List<InvLotLocId> queryInvByInvLotatt(@Param("lotattDTO") InvLotAtt invLotAtt, @Param("boxNo") String boxNo);
+    List<InvLotLocId> queryInvByInvLotatt(@Param("lotattDTO") InvLotAtt invLotAtt);
 
     /**
      * 查询
@@ -274,5 +274,4 @@ public interface InvLotLocIdMapper {
      */
     int updateAllocationBy(@Param("lotnum") String lotnum, @Param("locationId") Long locationId, @Param("qty") BigDecimal qty);
 
-    int checkSameSN(@Param("skuSn") String skuSn, @Param("boxNo") String boxNo);
 }

+ 1 - 1
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/IInvLotLocIdService.java

@@ -222,7 +222,7 @@ public interface IInvLotLocIdService {
      * @param invLotAtt
      * @return
      */
-    List<InvLotLocId> queryInvByInvLotatt(InvLotAtt invLotAtt, String boxNo);
+    List<InvLotLocId> queryInvByInvLotatt(InvLotAtt invLotAtt);
 
     /**
      * 查询已备货的满托库存

+ 4 - 3
warewms-ams/src/main/java/com/ruoyi/ams/inv/service/impl/InvLotLocIdServiceImpl.java

@@ -521,8 +521,8 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     }
 
     @Override
-    public List<InvLotLocId> queryInvByInvLotatt(InvLotAtt invLotAtt, String boxNo) {
-        return invLotLocIdMapper.queryInvByInvLotatt(invLotAtt, boxNo);
+    public List<InvLotLocId> queryInvByInvLotatt(InvLotAtt invLotAtt) {
+        return invLotLocIdMapper.queryInvByInvLotatt(invLotAtt);
     }
 
     @Override
@@ -534,7 +534,8 @@ public class InvLotLocIdServiceImpl implements IInvLotLocIdService {
     public AjaxResult unLockInvByPalletNo(String palletNo, String sn) {
         InvLotAtt invLotAtt = new InvLotAtt();
         invLotAtt.setLotatt02(sn);
-        List<InvLotLocId> lotLocIdList = invLotLocIdMapper.queryInvByInvLotatt(invLotAtt, palletNo);
+        invLotAtt.setLotatt07(palletNo);
+        List<InvLotLocId> lotLocIdList = invLotLocIdMapper.queryInvByInvLotatt(invLotAtt);
         if (lotLocIdList != null && lotLocIdList.size() > 0) {
             for (InvLotLocId inv : lotLocIdList) {
                 invLotLocIdMapper.unlockInv(Long.parseLong(inv.getLocationId()), inv.getSku(), inv.getCustomerId());

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

@@ -150,6 +150,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     public int insertWmsDocOrderHeader(WmsDocOrderHeader wmsDocOrderHeader) {
         String orderNo = idSequenceUtils.generateId("ORDERNO");
         wmsDocOrderHeader.setOrderNo(orderNo);
+        wmsDocOrderHeader.setEdiSendFlag("N");
         int result = wmsDocOrderHeaderMapper.insertWmsDocOrderHeader(wmsDocOrderHeader);
         /*List<WmsDocOrderDetails> orderDetails = wmsDocOrderHeader.getWmsDocOrderDetailsList();
         for (WmsDocOrderDetails de : orderDetails) {
@@ -249,11 +250,11 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
     @Override
     public AjaxResult doAllocationDetails(WmsDocOrderHeader header, WmsDocOrderDetails details) {
         LotattDTO lotattDTO = new LotattDTO();
-        if(!StringUtils.isEmpty(header.getUserdefine1())) {
+        if (!StringUtils.isEmpty(header.getUserdefine1())) {
             //如果备货的只能查询属于该出库单的库存
             lotattDTO.setLotatt14(header.getOrderNo());
         }
-        List<InvLotLocId> invList = invLotLocIdService.queryInvOrderBy(details.getLotnum(), details.getSku(), details.getLocation(), details.getCustomerId(), lotattDTO);
+        List<InvLotLocId> invList = invLotLocIdService.queryInvOrderBy(details.getLotnum(), details.getSku(), details.getLocation(), Constant.CUSTOMER_ID, lotattDTO);
         //库存可分配数小于订单数
         BigDecimal orderQty = details.getQtyOrdered();
         //判断总数是否足够分配
@@ -384,7 +385,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             wmsDocOrderDetailsMapper.updateWmsDocOrderDetails(wmsDocOrderDetails);
 
             //库存进行移动
-            invLotLocIdService.stockTransfer(actAllocationDetails.getLocationId(),"", Long.parseLong(locationTo));
+            invLotLocIdService.stockTransfer(actAllocationDetails.getLocationId(), "", Long.parseLong(locationTo));
             //托盘进行绑定修改
             wmsBoxInfoMapper.updateLocationBind(Long.parseLong(location), Long.parseLong(locationTo), null);
             /*if (!exitsMap.containsKey(location)) {
@@ -536,7 +537,7 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             //把拣货库位上的库存移动到一个新的托盘上
             actAllocationDetails.setPickToLocation(boxTo.getLocationId().toString());
             actAllocationDetails.setPickQty(actAllocationDetails.getPickQty().add(new BigDecimal(arrangeStockForm.getQty())));
-            actAllocationDetails.setStatus("40");
+            //actAllocationDetails.setStatus("40");
             actAllocationDetailsService.updateActAllocationDetails(actAllocationDetails);
             //修改托盘状态
             boxTo.setIsFull("N");
@@ -544,6 +545,11 @@ public class WmsDocOrderHeaderServiceImpl implements IWmsDocOrderHeaderService {
             //库存进行移动
             invLotLocIdService.stockTransferPick(actAllocationDetails.getLocationId(), boxTo.getLocationId(), actAllocationDetails.getLotnum(), new BigDecimal(arrangeStockForm.getQty()), arrangeStockForm.getBoxNo());
 
+            //新增分配明细
+            ActAllocationDetails pickAllocation = new ActAllocationDetails();
+            pickAllocation.setQty(new BigDecimal(arrangeStockForm.getQty()));
+
+
             //更新出库单拣货数量
             WmsDocOrderDetails wmsDocOrderDetails = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByNoLineNo(actAllocationDetails.getOrderNo(), actAllocationDetails.getLineNo());
             wmsDocOrderDetails.setQtyPicked(wmsDocOrderDetails.getQtyPicked().add(actAllocationDetails.getPickQty()));

+ 1 - 9
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -473,7 +473,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="lotattDTO.lotatt11 != null  and lotattDTO.lotatt11 != ''"> and att.lotatt11 = #{lotattDTO.lotatt11}</if>
                 <if test="lotattDTO.lotatt12 != null  and lotattDTO.lotatt12 != ''"> and att.lotatt12 = #{lotattDTO.lotatt12}</if>
                 <if test="lotattDTO.lotatt13 != null  and lotattDTO.lotatt13 != ''"> and att.lotatt13 = #{lotattDTO.lotatt13}</if>
-                <if test="lotattDTO.lotatt14 != null  and lotattDTO.lotatt14 != ''"> and att.lotatt14 = #{lotattDTO.lotatt14}</if>
+                <if test="lotattDTO.lotatt14 != null  and lotattDTO.lotatt14 != ''"> and (att.lotatt14 = #{lotattDTO.lotatt14} or att.lotatt14 is null)</if>
                 <if test="lotattDTO.lotatt15 != null  and lotattDTO.lotatt15 != ''"> and att.lotatt15 = #{lotattDTO.lotatt15}</if>
                 <if test="lotattDTO.lotatt16 != null  and lotattDTO.lotatt16 != ''"> and att.lotatt16 = #{lotattDTO.lotatt16}</if>
                 <if test="lotattDTO.lotatt17 != null  and lotattDTO.lotatt17 != ''"> and att.lotatt17 = #{lotattDTO.lotatt17}</if>
@@ -487,7 +487,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="queryInvByInvLotatt" resultMap="InvLotLocIdResult">
         select li.* from inv_lot_loc_id li
         left join inv_lot_att att on li.lotnum = att.lotnum
-        left join wms_box_info b on li.location_id = b.location_id
         <where>
             <if test="lotattDTO != null">
                 <if test="lotattDTO.lotatt01 != null  and lotattDTO.lotatt01 != ''"> and att.lotatt01 = #{lotattDTO.lotatt01}</if>
@@ -509,7 +508,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
                 <if test="lotattDTO.lotatt17 != null  and lotattDTO.lotatt17 != ''"> and att.lotatt17 = #{lotattDTO.lotatt17}</if>
                 <if test="lotattDTO.lotatt18 != null  and lotattDTO.lotatt18 != ''"> and att.lotatt18 = #{lotattDTO.lotatt18}</if>
             </if>
-             and b.box_no = #{boxNo}
         </where>
     </select>
 
@@ -575,10 +573,4 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         </where>
         order by (qtyallocated - qty)
     </select>
-
-    <select id="checkSameSN">
-         select li.* from inv_lot_loc_id li
-         left join inv_lot_att att on li.lotnum = att.lotnum
-         left join wms_box_info b on li.location_id = b.location_id
-    </select>
 </mapper>

+ 15 - 2
warewms-ams/src/main/resources/mapper/docAsn/WmsDocAsnHeaderMapper.xml

@@ -28,6 +28,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy"    column="update_by"    />
         <result property="updateTime"    column="update_time"    />
         <result property="activeFlag"    column="active_flag"    />
+        <result property="ediSendFlag" column="edi_send_flag" />
         <result property="hEdi01"    column="h_edi_01"    />
         <result property="hEdi02"    column="h_edi_02"    />
         <result property="hEdi03"    column="h_edi_03"    />
@@ -86,6 +87,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="sub_update_time"    />
         <result property="locationId"    column="sub_location_id"    />
         <result property="documentId"    column="sub_document_id"    />
+        <result property="ediSendFlag" column="edi_send_flag" />
         <result property="dEdi01"    column="sub_d_edi_01"    />
         <result property="dEdi02"    column="sub_d_edi_02"    />
         <result property="dEdi03"    column="sub_d_edi_03"    />
@@ -143,6 +145,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateTime"    column="update_time"    />
         <result property="locationId"    column="location_id"    />
         <result property="documentId"    column="document_id"    />
+        <result property="ediSendFlag" column="edi_send_flag" />
         <result property="dEdi01"    column="d_edi_01"    />
         <result property="dEdi02"    column="d_edi_02"    />
         <result property="dEdi03"    column="d_edi_03"    />
@@ -193,7 +196,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectWmsDocAsnHeaderVo">
-        select asn_no, asn_type, asn_status, customer_id, customer_no, asn_reference1, asn_reference2, release_status, expected_arrive_time, pa_no, qc_no, notes, supplier_id, userdefine1, userdefine2, userdefine3, userdefine4, userdefine5, create_by, create_time, update_by, update_time, active_flag, h_edi_01, h_edi_02, h_edi_03, h_edi_04, h_edi_05, h_edi_06, h_edi_07, h_edi_08, h_edi_09, h_edi_10, h_edi_11, h_edi_12, h_edi_13, h_edi_14, h_edi_15 from wms_doc_asn_header dh
+        select asn_no, asn_type, asn_status, customer_id, customer_no, asn_reference1, asn_reference2, release_status, expected_arrive_time, pa_no, qc_no, notes, supplier_id, userdefine1, userdefine2, userdefine3, userdefine4, userdefine5, create_by, create_time, update_by, update_time, active_flag,edi_send_flag, h_edi_01, h_edi_02, h_edi_03, h_edi_04, h_edi_05, h_edi_06, h_edi_07, h_edi_08, h_edi_09, h_edi_10, h_edi_11, h_edi_12, h_edi_13, h_edi_14, h_edi_15 from wms_doc_asn_header dh
     </sql>
 
     <select id="selectWmsDocAsnHeaderList" parameterType="WmsDocAsnHeader" resultMap="WmsDocAsnHeaderResult">
@@ -422,7 +425,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN base_sku sk ON inv.sku = sk.sku
         LEFT JOIN base_sku_type skt ON sk.sku_type = skt.item_code
         <where>
-            and w.box_no = #{palletNo} and att.lotatt07 = #{palletNo}
+            (w.box_no = #{palletNo} or att.lotatt07 = #{palletNo})
+            and inv.sku = #{sku}
         </where>
     </select>
+
+    <select id="selectReceivedQtyByAsnNos" resultType="double">
+        select ifnull(sum(expected_qty),0) - ifnull(sum(received_qty),0) received_qty from wms_doc_asn_details
+        where sku = #{sku} and expected_qty - received_qty > 0 and asn_no in
+        <foreach item="item" index="index" collection="list" separator=",">
+            (#{item})
+        </foreach>
+        group by sku
+    </select>
 </mapper>

+ 1 - 0
warewms-base/src/main/java/com/ruoyi/base/domain/vo/CodeSkuRelationshipVO.java

@@ -18,4 +18,5 @@ public class CodeSkuRelationshipVO {
     private String skuType;
     private String model;
     private boolean isProduct;
+    private Double receivedQty;
 }

+ 13 - 0
warewms-base/src/main/java/com/ruoyi/base/form/SnCheckForm.java

@@ -0,0 +1,13 @@
+package com.ruoyi.base.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
+
+@Data
+public class SnCheckForm {
+    @NotEmpty(message = "条码不能为空")
+    private String sn;
+    private List<String> asnNoList;
+}

+ 1 - 1
warewms-base/src/main/java/com/ruoyi/base/service/ICodeSkuRelationshipService.java

@@ -75,7 +75,7 @@ public interface ICodeSkuRelationshipService {
      * @param sn 条码
      * @return
      */
-    AjaxResult snCheck(String sn);
+    CodeSkuRelationshipVO snCheck(String sn);
 
     /**
      * 检查是否是成品

+ 2 - 2
warewms-base/src/main/java/com/ruoyi/base/service/impl/CodeSkuRelationshipServiceImpl.java

@@ -120,9 +120,9 @@ public class CodeSkuRelationshipServiceImpl implements ICodeSkuRelationshipServi
      * @return
      */
     @Override
-    public AjaxResult snCheck(String sn) {
+    public CodeSkuRelationshipVO snCheck(String sn) {
         CodeSkuRelationshipVO codeSkuRelationshipVO = this.checkIsProduct(sn);
-        return AjaxResult.success("", codeSkuRelationshipVO);
+        return codeSkuRelationshipVO;
     }
 
     /**