Browse Source

入库单、出库单修改
入库码盘bug修复

andy 2 years ago
parent
commit
b69fadb929
25 changed files with 244 additions and 99 deletions
  1. 23 0
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/pda/PdaController.java
  2. 8 3
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/asn/WmsDocAsnHeaderController.java
  3. 12 3
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/order/WmsDocOrderHeaderController.java
  4. 1 1
      ruoyi-admin/src/main/resources/application.yml
  5. 1 1
      ruoyi-admin/src/test/java/com/ruoyi/admin/test/base/WarehouseTest.java
  6. 2 3
      ruoyi-ui/src/api/docAsn/docAsn.js
  7. 2 3
      ruoyi-ui/src/api/docOrder/docOrder.js
  8. 9 0
      ruoyi-ui/src/views/wms/docAsn/docAsnDetails-add-or-update.vue
  9. 27 41
      ruoyi-ui/src/views/wms/docAsn/docAsnDetails.vue
  10. 2 0
      ruoyi-ui/src/views/wms/docOrder/docOrderDetails-add-or-update.vue
  11. 28 31
      ruoyi-ui/src/views/wms/docOrder/docOrderDetails.vue
  12. 1 0
      ruoyi-ui/src/views/wms/docOrder/index.vue
  13. 9 0
      warewms-ams/src/main/java/com/ruoyi/ams/asn/form/DelDocAsnDetailsForm.java
  14. 9 0
      warewms-ams/src/main/java/com/ruoyi/ams/asn/service/IWmsDocAsnDetailsService.java
  15. 28 0
      warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnDetailsServiceImpl.java
  16. 4 2
      warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java
  17. 13 0
      warewms-ams/src/main/java/com/ruoyi/ams/box/form/UpdateBoxForm.java
  18. 14 0
      warewms-ams/src/main/java/com/ruoyi/ams/order/service/IWmsDocOrderDetailsService.java
  19. 24 0
      warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderDetailsServiceImpl.java
  20. 2 3
      warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml
  21. 1 1
      warewms-ams/src/main/resources/mapper/ams/LotattConfigMapper.xml
  22. 6 6
      warewms-ams/src/main/resources/mapper/docAsn/WmsDocAsnHeaderMapper.xml
  23. 2 0
      warewms-base/src/main/java/com/ruoyi/base/domain/vo/CodeSkuRelationshipVO.java
  24. 12 0
      warewms-base/src/main/java/com/ruoyi/base/service/impl/CodeSkuRelationshipServiceImpl.java
  25. 4 1
      warewms-base/src/main/resources/mapper/base/CodeSkuRelationshipMapper.xml

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

@@ -9,7 +9,9 @@ import com.ruoyi.ams.asn.form.StockingListForm;
 import com.ruoyi.ams.asn.form.UnlockForm;
 import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
 import com.ruoyi.ams.asn.vo.SearchStockVO;
+import com.ruoyi.ams.box.domain.WmsBoxInfo;
 import com.ruoyi.ams.box.form.AddBoxForm;
+import com.ruoyi.ams.box.form.UpdateBoxForm;
 import com.ruoyi.ams.box.service.IWmsBoxInfoService;
 import com.ruoyi.ams.business.IBusinessService;
 import com.ruoyi.ams.common.vo.DictVO;
@@ -380,4 +382,25 @@ public class PdaController {
     public AjaxResult checkOut(@RequestBody CheckOutForm checkOutForm) {
         return wmsDocOrderHeaderService.doCheckout(checkOutForm);
     }
+
+    /**
+     * 修改托盘状态
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("/boxInfo/update")
+    public AjaxResult boxInfoUpdate(@RequestBody UpdateBoxForm updateBoxForm) {
+        WmsBoxInfo wmsBoxInfo = wmsBoxInfoService.selectWmsBoxInfoByBoxNo(updateBoxForm.getPalletNo());
+        if (wmsBoxInfo == null) {
+            return AjaxResult.error("托盘不存在");
+        }
+        wmsBoxInfo.setIsFull(updateBoxForm.getFullTag());
+        int result = wmsBoxInfoService.updateWmsBoxInfo(wmsBoxInfo);
+        if (result > 0) {
+            return AjaxResult.success("更新成功");
+        } else {
+            return AjaxResult.error("更新失败");
+        }
+    }
 }

+ 8 - 3
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/wms/asn/WmsDocAsnHeaderController.java

@@ -7,6 +7,7 @@ import java.util.Map;
 import javax.servlet.http.HttpServletResponse;
 
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.ams.asn.form.DelDocAsnDetailsForm;
 import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
 import com.ruoyi.base.domain.BaseIdsequence;
 import com.ruoyi.base.service.IBaseIdsequenceService;
@@ -177,11 +178,15 @@ public class WmsDocAsnHeaderController extends BaseController {
         return AjaxResult.success("", header);
     }
 
+    /**
+     * 批量删除明细
+     * @param param
+     * @return
+     */
     @PostMapping(value = "/delDocAsnDetails")
     public AjaxResult delDocAsnDetails(@RequestBody Map<String, Object> param) {
-        String asnNo = param.get("asnNo").toString();
-        Long asnLineNo = Long.parseLong(param.get("asnLineNo").toString());
-        return toAjax(wmsDocAsnDetailsService.deleteWmsDocAsnDetailsByAsnNoLineNo(asnNo, asnLineNo));
+        List<HashMap<String,Object>> list = (List)param.get("details");
+        return toAjax(wmsDocAsnDetailsService.deleteWmsDocAsnDetailsByAsnNoLineNos(list));
     }
 
     @PostMapping(value = "/closeAsn")

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

@@ -214,6 +214,11 @@ public class WmsDocOrderHeaderController extends BaseController {
         return toAjax(wmsDocOrderHeaderService.updateWmsDocOrderHeader(wmsDocOrderHeader));
     }
 
+    /**
+     * 更新出库单mingxi
+     * @param wmsDocOrderDetails
+     * @return
+     */
     @PostMapping(value = "/updateDocOrderDetails")
     public AjaxResult updateDocOrderDetails(@RequestBody WmsDocOrderDetails wmsDocOrderDetails) {
         LoginUser loginUser = this.getLoginUser();
@@ -222,10 +227,14 @@ public class WmsDocOrderHeaderController extends BaseController {
         return toAjax(wmsDocOrderDetailsService.updateWmsDocOrderDetails(wmsDocOrderDetails));
     }
 
+    /**
+     * 批量删除出库单明细
+     * @param param
+     * @return
+     */
     @PostMapping(value = "/deleteOrderDetails")
     public AjaxResult deleteOrderDetails(@RequestBody Map<String, Object> param) {
-        String orderNo = param.get("orderNo").toString();
-        Long orderLineNo = Long.parseLong(param.get("orderLineNo").toString());
-        return toAjax(wmsDocOrderDetailsService.deleteWmsDocOrderDetailsByOrderNo(orderNo, orderLineNo));
+        List<HashMap<String,Object>> list = (List)param.get("details");
+        return toAjax(wmsDocOrderDetailsService.deleteWmsDocOrderDetailsByOrderNoLineNos(list));
     }
 }

+ 1 - 1
ruoyi-admin/src/main/resources/application.yml

@@ -86,7 +86,7 @@ token:
     # 令牌密钥
     secret: abcdefghijklmnopqrstuvwxyz
     # 令牌有效期(默认30分钟)
-    expireTime: 120
+    expireTime: 3000
   
 # MyBatis配置
 mybatis:

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

@@ -284,7 +284,7 @@ public class WarehouseTest {
 
     @Test
     public void querySameTypeByPalletNo() {
-        List<InvLotLocId> invLotLocIdList = invLotLocIdMapper.querySameTypeByPalletNo("2", "B1001");
+        List<InvLotLocId> invLotLocIdList = invLotLocIdMapper.querySameTypeByPalletNo("2", "YHRQ002");
         System.out.println(JSON.toJSONString(invLotLocIdList));
     }
 

+ 2 - 3
ruoyi-ui/src/api/docAsn/docAsn.js

@@ -89,13 +89,12 @@ export function queryDocAsnDetailsInfo(asnNo, asnLineNo) {
   })
 }
 
-export function delDocAsnDetails(asnNo, asnLineNo) {
+export function delDocAsnDetails(arr) {
   return request({
     url: '/docAsn/docAsn/delDocAsnDetails',
     method: 'post',
     data: {
-      "asnNo": asnNo,
-      "asnLineNo": asnLineNo
+      "details": arr
     }
   })
 }

+ 2 - 3
ruoyi-ui/src/api/docOrder/docOrder.js

@@ -77,13 +77,12 @@ export function initOrderDetails(orderNo) {
 }
 
 // 新增入库单
-export function deleteOrderDetails(orderNo,orderLineNo) {
+export function deleteOrderDetails(arr) {
   return request({
     url: '/docOrder/docOrder/deleteOrderDetails',
     method: 'post',
     data: {
-      "orderNo": orderNo,
-      "orderLineNo": orderLineNo
+      "details": arr
     }
   })
 }

+ 9 - 0
ruoyi-ui/src/views/wms/docAsn/docAsnDetails-add-or-update.vue

@@ -183,6 +183,8 @@
       init(asnNo,asnLineNo) {
         if(asnLineNo != ''){
           this.isAdd = false
+        } else {
+          this.isAdd = true
         }
         this.dataForm.asnNo = asnNo
         this.dataForm.asnLineNo = ''
@@ -241,6 +243,13 @@
         this.tableOption.length = 0
         lotattConfigList().then(response => {
           this.tableOption = response.data
+          if(this.tableOption && this.tableOption.length > 0) {
+            for(let i = 0;i < this.tableOption.length; i++) {
+              //单据不要必填项
+              this.tableOption[i].lotattFlag = 'Choice'
+              this.tableOption[i].defaultValue = ''
+            }
+          }
         })
 
         queryLocationZoneDict().then(response => {

+ 27 - 41
ruoyi-ui/src/views/wms/docAsn/docAsnDetails.vue

@@ -82,8 +82,8 @@
       @pagination="getDataList"
     />
     <div>
-      <el-button type="primary" size="mini" :disabled="viewTag" @click="addOrUpdateHandle(true)">明细新增</el-button>
-      <el-button type="primary" size="mini" :disabled="viewTag" @click="addOrUpdateHandle(false)">明细编辑</el-button>
+      <el-button type="primary" size="mini" :disabled="viewTag" @click="addHandle()">明细新增</el-button>
+      <el-button type="primary" size="mini" :disabled="viewTag" @click="updateHandle()">明细编辑</el-button>
       <el-button type="primary" size="mini" :disabled="viewTag" @click="deleteHandle()">明细删除</el-button>
     </div>
     <!-- 弹窗, 新增 / 修改 -->
@@ -136,25 +136,29 @@
       },
       // 多选
       selectionChangeHandle (val) {
-        if(val) {
-          this.dataListSelections.push(val)
-        }
+          this.dataListSelections = val
       },
       // 新增 / 修改
-      addOrUpdateHandle (isAdd) {
+      addHandle () {
         //控制只能单选
         this.addOrUpdateVisible = true
         this.$nextTick(() => {
-          if(isAdd){
-            this.$refs.addOrUpdate.init(this.queryParams.asnNo,'')
-          } else {
-            if (this.dataListSelections.length > 1) {
-              this.$modal.msgWarning("编辑操作只能选择一条数据");
-              return
-            }
-            let sel = this.dataListSelections[0][0]
-            this.$refs.addOrUpdate.init(sel.asnNo,sel.asnLineNo)
+          this.$refs.addOrUpdate.init(this.queryParams.asnNo,'')
+        })
+      },
+      updateHandle () {
+        this.addOrUpdateVisible = true
+        this.$nextTick(() => {
+          if (this.dataListSelections.length > 1) {
+            this.$modal.msgError("编辑操作只能选择一条数据");
+            return
           }
+          let sel = this.dataListSelections[0]
+          if(sel.lineStatus != "00") {
+            this.$modal.msgError("只能编辑订单创建状态的单据");
+            return
+          }
+          this.$refs.addOrUpdate.init(sel.asnNo,sel.asnLineNo)
         })
       },
       initLotatt() {
@@ -170,40 +174,22 @@
         })
       },
       deleteHandle() {
-        /*if(this.dataListSelections && this.dataListSelections.length>0) {
-          this.$modal.confirm('是否确认删除入库明细的数据项?').then(function() {
-            console.log("--------------------------")
-            console.log(this.dataListSelections.length)
-            console.log(this.dataListSelections)
-            for(let i= 0;i<this.dataListSelections.length;i++) {
-              let obj = this.dataListSelections[i]
-              return delDocAsnDetails(obj.asnNo,obj.asnLineNo).then(response => {
-                if(response.code == 200) {
-                  this.$modal.msgSuccess(response.msg);
-                } else {
-                  this.$modal.msgError(response.msg);
-                }
-                this.getDataList(obj.asnNo)
-              });
-            }
-          }).then(() => {
-            this.getList();
-            this.$modal.msgSuccess("删除成功");
-          }).catch(() => {});
-        }*/
         if(this.dataListSelections && this.dataListSelections.length>0) {
-          let asnNo = this.dataListSelections[0][0].asnNo
-          let asnLineNo = this.dataListSelections[0][0].asnLineNo
+          let dataListSelections = this.dataListSelections
           this.$modal.confirm('是否确认删除入库明细的数据项?').then(function() {
-            return delDocAsnDetails(asnNo,asnLineNo);
+            let arr = []
+            for(let i= 0;i<dataListSelections.length;i++) {
+              let obj = dataListSelections[i]
+              arr.push({"asnNo":obj.asnNo,"asnLineNo":obj.asnLineNo});
+            }
+            return delDocAsnDetails(arr);
           }).then(response => {
             if(response.code == 200) {
               this.$modal.msgSuccess(response.msg);
             } else {
               this.$modal.msgError(response.msg);
             }
-            this.getDataList(asnNo)
-            this.dataListSelections.length = 0
+            this.getDataList(this.queryParams.asnNo)
           }).catch(() => {});
         }
       }

+ 2 - 0
ruoyi-ui/src/views/wms/docOrder/docOrderDetails-add-or-update.vue

@@ -167,6 +167,8 @@
       init (orderNo,orderLineNo) {
         if(orderLineNo != ''){
           this.isAdd = false
+        } else {
+          this.isAdd = true
         }
         this.dataForm.orderNo = orderNo
         this.dataForm.orderLineNo = orderLineNo

+ 28 - 31
ruoyi-ui/src/views/wms/docOrder/docOrderDetails.vue

@@ -66,8 +66,8 @@
       @pagination="getDataList"
     />
     <div>
-      <el-button type="primary" size="mini" :disabled="viewTag" @click="addOrUpdateHandle()">明细新增</el-button>
-      <el-button type="primary" size="mini" :disabled="viewTag" @click="addOrUpdateHandle()" >明细编辑</el-button>
+      <el-button type="primary" size="mini" :disabled="viewTag" @click="addHandle()">明细新增</el-button>
+      <el-button type="primary" size="mini" :disabled="viewTag" @click="updateHandle()" >明细编辑</el-button>
       <el-button type="primary" size="mini" :disabled="viewTag" @click="deleteHandle()" >明细删除</el-button>
     </div>
     <!-- 弹窗, 新增 / 修改 -->
@@ -122,22 +122,28 @@
         })
       },
       handleSelectionChange(selection) {
-         this.dataListSelections.push(selection)
+         this.dataListSelections = selection
       },
       // 新增 / 修改
-      addOrUpdateHandle () {
-        if (this.dataListSelections.length > 1) {
-          this.$modal.msgWarning("编辑操作只能选择一条数据");
-          return
-        }
+      addHandle () {
+        this.addOrUpdateVisible = true
+        this.$nextTick(() => {
+          this.$refs.addOrUpdate.init(this.dataForm.orderNo,'')
+        })
+      },
+      updateHandle () {
         this.addOrUpdateVisible = true
         this.$nextTick(() => {
-          if (this.dataListSelections.length != 0) {
-            let sel = this.dataListSelections[0][0]
-            this.$refs.addOrUpdate.init(sel.orderNo,sel.orderLineNo)
-          } else {
-            this.$refs.addOrUpdate.init(this.dataForm.orderNo,'')
+          if (this.dataListSelections.length > 1) {
+            this.$modal.msgError("编辑操作只能选择一条数据");
+            return
+          }
+          let sel = this.dataListSelections[0]
+          if(sel.lineStatus != "00") {
+            this.$modal.msgError("只能编辑订单创建状态的单据");
+            return
           }
+          this.$refs.addOrUpdate.init(sel.orderNo,sel.orderLineNo)
         })
       },
       initLotatt() {
@@ -153,31 +159,22 @@
         })
       },
       deleteHandle() {
-        /*if(this.dataListSelections && this.dataListSelections.length>0) {
-          for(let i= 0;i<this.dataListSelections.length;i++) {
-            let obj = this.dataListSelections[i]
-            deleteOrderDetails(obj.ordeNo,obj.orderLineNo).then(response => {
-              if(response.code == 200) {
-                this.$modal.msgSuccess(response.msg);
-              } else {
-                this.$modal.msgError(response.msg);
-              }
-              this.getDataList(obj.ordeNo)
-            });
-          }
-        }*/
-        if(this.dataListSelections && this.dataListSelections.length>0) {
-          let orderNo = this.dataListSelections[0][0].orderNo
-          let orderLineNo = this.dataListSelections[0][0].orderLineNo
+        let that = this;
+        if(that.dataListSelections && that.dataListSelections.length>0) {
           this.$modal.confirm('是否确认删除入库明细的数据项?').then(function() {
-            return deleteOrderDetails(orderNo,orderLineNo);
+            let arr = []
+            for(let i= 0;i<that.dataListSelections.length;i++) {
+              let obj = that.dataListSelections[i]
+              arr.push({"orderNo":obj.orderNo,"orderLineNo":obj.orderLineNo});
+            }
+            return deleteOrderDetails(arr);
           }).then(response => {
             if(response.code == 200) {
               this.$modal.msgSuccess(response.msg);
             } else {
               this.$modal.msgError(response.msg);
             }
-            this.getDataList(orderNo)
+            this.getDataList(that.dataForm.orderNo)
             this.dataListSelections.length = 0
           }).catch(() => {});
         }

+ 1 - 0
ruoyi-ui/src/views/wms/docOrder/index.vue

@@ -156,6 +156,7 @@
             type="text"
             icon="el-icon-delete"
             @click="handleDelete(scope.row)"
+            v-if="scope.row.orderStatus == '00' || scope.row.orderStatus == '90'"
             v-hasPermi="['docOrder:docOrder:remove']"
           >删除
           </el-button>

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/form/DelDocAsnDetailsForm.java

@@ -0,0 +1,9 @@
+package com.ruoyi.ams.asn.form;
+
+import lombok.Data;
+
+@Data
+public class DelDocAsnDetailsForm {
+    private String asnNo;
+    private Long asnLineNo;
+}

+ 9 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/IWmsDocAsnDetailsService.java

@@ -1,8 +1,10 @@
 package com.ruoyi.ams.asn.service;
 
+import java.util.HashMap;
 import java.util.List;
 
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.ams.asn.form.DelDocAsnDetailsForm;
 import com.ruoyi.ams.asn.form.StockForm;
 
 /**
@@ -76,4 +78,11 @@ public interface IWmsDocAsnDetailsService {
      * @return
      */
     int deleteWmsDocAsnDetailsByAsnNoLineNo(String asnNo, Long asnLineNo);
+
+    /**
+     * 批量删除
+     * @param arr
+     * @return
+     */
+    int deleteWmsDocAsnDetailsByAsnNoLineNos(List<HashMap<String,Object>> list);
 }

+ 28 - 0
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnDetailsServiceImpl.java

@@ -1,13 +1,17 @@
 package com.ruoyi.ams.asn.service.impl;
 
+import java.util.HashMap;
 import java.util.List;
 
+import com.ruoyi.ams.asn.form.DelDocAsnDetailsForm;
 import com.ruoyi.ams.asn.form.StockForm;
+import com.ruoyi.common.exception.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.ams.asn.mapper.WmsDocAsnDetailsMapper;
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * 入库单明细Service业务层处理
@@ -19,6 +23,8 @@ import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
 public class WmsDocAsnDetailsServiceImpl implements IWmsDocAsnDetailsService {
     @Autowired
     private WmsDocAsnDetailsMapper wmsDocAsnDetailsMapper;
+    @Autowired
+    private IWmsDocAsnDetailsService wmsDocAsnDetailsService;
 
     /**
      * 查询入库单明细
@@ -106,4 +112,26 @@ public class WmsDocAsnDetailsServiceImpl implements IWmsDocAsnDetailsService {
     public int deleteWmsDocAsnDetailsByAsnNoLineNo(String asnNo, Long asnLineNo) {
         return wmsDocAsnDetailsMapper.deleteWmsDocAsnDetailsByAsnNoLineNo(asnNo, asnLineNo);
     }
+
+    @Transactional
+    @Override
+    public int deleteWmsDocAsnDetailsByAsnNoLineNos(List<HashMap<String, Object>> list) {
+        for (HashMap<String, Object> o : list) {
+            String asnNo = o.get("asnNo").toString();
+            Long asnLineNo = Long.parseLong(o.get("asnLineNo").toString());
+            WmsDocAsnDetails details = wmsDocAsnDetailsService.selectWmsDocAsnDetailsByAsnNoLineNo(asnNo, o.get("asnLineNo").toString());
+            if (details == null) {
+                throw new ServiceException("入库单不存在");
+            } else {
+                if (!details.getLineStatus().equals("00")) {
+                    throw new ServiceException("只能删除订单创建状态的单据");
+                }
+            }
+            int result = wmsDocAsnDetailsService.deleteWmsDocAsnDetailsByAsnNoLineNo(asnNo, asnLineNo);
+            if (result == 0) {
+                throw new ServiceException("删除失败");
+            }
+        }
+        return 1;
+    }
 }

+ 4 - 2
warewms-ams/src/main/java/com/ruoyi/ams/asn/service/impl/WmsDocAsnHeaderServiceImpl.java

@@ -286,7 +286,7 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
             boxInfoService.insertWmsBoxInfo(wmsBoxInfo);
         } else {
             //判断已满拖的话不接收
-            if (wmsBoxInfo.getIsFull().equals("Y")) {
+            if (wmsBoxInfo.getIsFull() != null && wmsBoxInfo.getIsFull().equals("Y")) {
                 throw new ServiceException("该托盘已放满");
             }
             wmsBoxInfo.setBoxState(1);
@@ -441,7 +441,9 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService {
 
                             //生成库存
                             LotattDTO lotattDTO = new LotattDTO();
-                            lotattDTO.setLotatt02(stockForm.getSkuSn());
+                            if(codeSkuRelationshipVO.isProduct()) {
+                                lotattDTO.setLotatt02(stockForm.getSkuSn());
+                            }
                             lotattDTO.setLotatt05("90");
                             lotattDTO.setLotatt07(stockForm.getPalletNo());
                             lotattDTO.setLotatt08(details.getAsnNo());

+ 13 - 0
warewms-ams/src/main/java/com/ruoyi/ams/box/form/UpdateBoxForm.java

@@ -0,0 +1,13 @@
+package com.ruoyi.ams.box.form;
+
+import lombok.Data;
+
+import javax.validation.constraints.NotEmpty;
+
+@Data
+public class UpdateBoxForm {
+    @NotEmpty(message = "托盘编号不能为空")
+    private String palletNo;
+    @NotEmpty(message = "是否满拖不能为空")
+    private String fullTag;
+}

+ 14 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/IWmsDocOrderDetailsService.java

@@ -1,5 +1,6 @@
 package com.ruoyi.ams.order.service;
 
+import java.util.HashMap;
 import java.util.List;
 
 import com.ruoyi.ams.order.domain.WmsDocOrderDetails;
@@ -67,5 +68,18 @@ public interface IWmsDocOrderDetailsService {
      */
     int deleteWmsDocOrderDetailsByOrderNo(String orderNo);
 
+    /**
+     * 删除出库单明细
+     * @param orderNo
+     * @param orderLineNo
+     * @return
+     */
     int deleteWmsDocOrderDetailsByOrderNo(String orderNo,Long orderLineNo);
+
+    /**
+     * 批量删除出库单明细
+     * @param list
+     * @return
+     */
+    int deleteWmsDocOrderDetailsByOrderNoLineNos(List<HashMap<String,Object>> list);
 }

+ 24 - 0
warewms-ams/src/main/java/com/ruoyi/ams/order/service/impl/WmsDocOrderDetailsServiceImpl.java

@@ -1,7 +1,10 @@
 package com.ruoyi.ams.order.service.impl;
 
+import java.util.HashMap;
 import java.util.List;
 
+import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.common.exception.ServiceException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.ruoyi.ams.order.mapper.WmsDocOrderDetailsMapper;
@@ -106,4 +109,25 @@ public class WmsDocOrderDetailsServiceImpl implements IWmsDocOrderDetailsService
         return wmsDocOrderDetailsMapper.deleteWmsDocAsnDetailsByOrderNoLineNo(orderNo, orderLineNo);
     }
 
+    @Override
+    public int deleteWmsDocOrderDetailsByOrderNoLineNos(List<HashMap<String, Object>> list) {
+        for (HashMap<String, Object> o : list) {
+            String orderNo = o.get("orderNo").toString();
+            Long orderLineNo = Long.parseLong(o.get("orderLineNo").toString());
+            WmsDocOrderDetails details = wmsDocOrderDetailsMapper.selectWmsDocOrderDetailsByNoLineNo(orderNo, orderLineNo);
+            if (details == null) {
+                throw new ServiceException("出库单明细不存在");
+            } else {
+                if (!details.getLineStatus().equals("00")) {
+                    throw new ServiceException("只能删除订单创建状态的单据");
+                }
+            }
+            int result = wmsDocOrderDetailsMapper.deleteWmsDocAsnDetailsByOrderNoLineNo(orderNo, orderLineNo);
+            if (result == 0) {
+                throw new ServiceException("删除失败");
+            }
+        }
+        return 1;
+    }
+
 }

+ 2 - 3
warewms-ams/src/main/resources/mapper/ams/InvLotLocIdMapper.xml

@@ -562,10 +562,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select inv.*
         from inv_lot_loc_id inv
          left join inv_lot_att att on inv.lotnum = att.lotnum
-         left join wms_box_info b on b.location_id = inv.location_id
          left join base_sku sk on inv.sku = sk.sku
-        where sk.sku_type <![CDATA[ <> ]]> #{skuType}
-        and b.box_no = #{palletNo}
+        where
+        att.lotatt12 = #{palletNo} and sk.sku_type <![CDATA[ <> ]]> #{skuType}
     </select>
 
     <select id="selectInvLotLocIdBySkuLocationSort" resultMap="InvLotLocIdResult">

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

@@ -35,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectLotattConfigList" parameterType="LotattConfig" resultMap="LotattConfigResult">
         <include refid="selectLotattConfigVo"/>
-        where status = 0 and required_tag <![CDATA[ <> ]]> 'Hidden'
+        where status = 0
     </select>
     
     <select id="selectLotattConfigById" parameterType="Long" resultMap="LotattConfigResult">

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

@@ -167,11 +167,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="qty"    column="qty"    />
         <result property="qtyallocated"    column="qtyallocated"    />
         <result property="skuVO.sku"    column="sku"    />
-        <result property="skuVO.skuName"    column="sku_type"    />
-        <result property="skuVO.skuType"    column="sku_type"    />
-        <result property="skuVO.skuTypeName"    column="sku_type"    />
-        <result property="skuVO.model"    column="sku_type"    />
-        <result property="skuVO.sn"    column="sku_type"    />
+        <result property="skuVO.skuName"    column="skuName"    />
+        <result property="skuVO.skuType"    column="skuType"    />
+        <result property="skuVO.skuTypeName"    column="skuTypeName"    />
+        <result property="skuVO.model"    column="model"    />
+        <result property="skuVO.sn"    column="sn"    />
         <result property="invLotAtt.lotatt01"    column="lotatt01"    />
         <result property="invLotAtt.lotatt02"    column="lotatt02"    />
         <result property="invLotAtt.lotatt03"    column="lotatt03"    />
@@ -422,7 +422,7 @@ 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 w.box_no = #{palletNo} and att.lotatt07 = #{palletNo}
         </where>
     </select>
 </mapper>

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

@@ -14,6 +14,8 @@ public class CodeSkuRelationshipVO {
     private String sn;
     private String status;
     private String sku;
+    private String skuName;
     private String skuType;
+    private String model;
     private boolean isProduct;
 }

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

@@ -135,6 +135,9 @@ public class CodeSkuRelationshipServiceImpl implements ICodeSkuRelationshipServi
     public CodeSkuRelationshipVO checkIsProduct(String sn) {
         List<CodeSkuRelationshipVO> codeSkuRelationshipVO = codeSkuRelationshipMapper.selectCodeSkuRelationshipBySn(sn);
         if (codeSkuRelationshipVO != null && codeSkuRelationshipVO.size() > 0) {
+            if (!codeSkuRelationshipVO.get(0).getStatus().equals("Y")) {
+                throw new ServiceException("该条码已禁用");
+            }
             //成品条码
             CodeSkuRelationshipVO tmp = codeSkuRelationshipVO.get(0);
             tmp.setProduct(true);
@@ -143,10 +146,19 @@ public class CodeSkuRelationshipServiceImpl implements ICodeSkuRelationshipServi
             CodeSkuRelationshipVO tmp = new CodeSkuRelationshipVO();
             //物料条码
             BaseSku baseSku = baseSkuService.selectBaseSkuByCustomerId(Constant.CUSTOMER_ID, sn);
+            if (baseSku == null) {
+                throw new ServiceException("物料不存在");
+            }
+            if (!baseSku.getActiveFlag().equals("Y")) {
+                throw new ServiceException("该物料已禁用");
+            }
             tmp.setProduct(false);
             tmp.setSku(baseSku.getSku());
             tmp.setSkuType(baseSku.getSkuType());
             tmp.setSn(baseSku.getSku());
+            tmp.setSkuName(baseSku.getDesc1());
+            tmp.setModel(baseSku.getModel());
+            tmp.setStatus(baseSku.getActiveFlag());
             return tmp;
         } else {
             throw new ServiceException("条码不存在");

+ 4 - 1
warewms-base/src/main/resources/mapper/base/CodeSkuRelationshipMapper.xml

@@ -21,6 +21,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="sn"    column="sn"    />
         <result property="status"    column="status"    />
         <result property="sku"    column="sku"    />
+        <result property="skuName"    column="desc1"    />
+        <result property="skuType"    column="sku_type"    />
+        <result property="model"    column="model"    />
     </resultMap>
 
     <sql id="selectCodeSkuRelationshipVo">
@@ -97,7 +100,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <select id="selectCodeSkuRelationshipBySn" parameterType="string" resultMap="CodeSkuRelationshipVOResult">
-      select c.sn,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>