Browse Source

入库单修改

andy 3 years ago
parent
commit
16ebcc501d

+ 33 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/asn/WmsDocAsnHeaderController.java

@@ -1,10 +1,13 @@
 package com.ruoyi.web.controller.warewms.asn;
 
+import java.util.Date;
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
 
 import com.alibaba.fastjson.JSON;
 import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
+import com.ruoyi.base.service.SysIdsequenceService;
+import com.ruoyi.common.core.domain.model.LoginUser;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -36,6 +39,8 @@ public class WmsDocAsnHeaderController extends BaseController
 {
     @Autowired
     private IWmsDocAsnHeaderService wmsDocAsnHeaderService;
+    @Autowired
+    private SysIdsequenceService sysIdsequenceService;
 
     /**
      * 查询入库单列表
@@ -113,7 +118,33 @@ public class WmsDocAsnHeaderController extends BaseController
     @PostMapping("addDocAsnDetails")
     public AjaxResult addDocAsnDetails(@RequestBody WmsDocAsnDetails wmsDocAsnDetails)
     {
-        System.out.println(JSON.toJSONString(wmsDocAsnDetails));
-        return AjaxResult.success("");
+        return toAjax(wmsDocAsnHeaderService.insertWmsDocAsnDetails(wmsDocAsnDetails));
+    }
+
+    /**
+     * 新增入库单明细
+     */
+    @GetMapping(value = "/initAsnHeader/{asnNo}")
+    public AjaxResult initAsnHeader(@PathVariable("asnNo") String asnNo)
+    {
+        WmsDocAsnHeader docAsnHeader = new WmsDocAsnHeader();
+        LoginUser loginUser = getLoginUser();
+        if (asnNo == null || "undefine".equals(asnNo)) {
+            asnNo = sysIdsequenceService.getCurrent("ASNNO");
+            Date now = new Date();
+            docAsnHeader.setAsnNo(asnNo);
+            docAsnHeader.setCreateUserId(loginUser.getUsername());
+            docAsnHeader.setCreateDate(now);
+            docAsnHeader.setEditDate(now);
+            docAsnHeader.setEditUserId(loginUser.getUsername());
+            docAsnHeader.setAsnType("PR");
+            docAsnHeader.setAsnStatus("00");
+        } else {
+            docAsnHeader = wmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo);
+            if(docAsnHeader == null) {
+                return AjaxResult.error("入库单号不存在");
+            }
+        }
+        return AjaxResult.success("",docAsnHeader);
     }
 }

+ 8 - 0
ruoyi-ui/src/api/docAsn/docAsn.js

@@ -51,3 +51,11 @@ export function addDocAsnDetails(data) {
     data: data
   })
 }
+
+// 初始化表头
+export function initAsnHeader(asnNo) {
+  return request({
+    url: '/docAsn/docAsn/initAsnHeader/' + asnNo,
+    method: 'get'
+  })
+}

+ 33 - 46
ruoyi-ui/src/views/docAsn/docAsnDetails-add-or-update.vue

@@ -21,18 +21,32 @@
         </el-col>
         <el-col :span="8">
           <el-form-item label="状态" prop="lineStatus">
-            <el-input v-model="dataForm.lineStatus" placeholder=""></el-input>
+            <el-select v-model="dataForm.lineStatus" :disabled="true" placeholder="请选择" style="width: 100%">
+              <el-option
+                v-for="dict in dict.type.asn_status"
+                :key="dict.value"
+                :label="dict.label"
+                :value="dict.value"
+              />
+            </el-select>
           </el-form-item>
         </el-col>
       </el-row>
       <el-row>
         <el-col :span="8">
-          <el-form-item label="收货区域" prop="locationZone">
-            <el-input v-model="dataForm.locationZone" placeholder=""></el-input>
+          <el-form-item label="指定区域" prop="locationZone">
+            <el-select v-model="dataForm.locationZone" placeholder="请选择库区" clearable size="small" style="width: 100%">
+              <el-option
+                v-for="dict in this.locationZoneCombo"
+                :key="dict.zoneId"
+                :label="dict.zoneName"
+                :value="dict.zoneId"
+              />
+            </el-select>
           </el-form-item>
         </el-col>
         <el-col :span="8">
-          <el-form-item label="收货库位" prop="locationId">
+          <el-form-item label="指定库位" prop="locationId">
             <el-input v-model="dataForm.locationId" placeholder=""></el-input>
           </el-form-item>
         </el-col>
@@ -100,11 +114,12 @@
 
 <script>
   import { lotattConfigList } from "@/api/ams/config"
+  import { queryLocationZoneDict } from "@/api/base/locationZone"
   import { addDocAsnDetails } from "@/api/docAsn/docAsn"
   import SkuSearchDialog from '@/views/base/baseSku/skuSearchDialog'
 
   export default {
-    dicts: ['sys_yes_no', 'ams_inv_quality'],
+    dicts: ['sys_yes_no', 'ams_inv_quality', 'asn_status'],
     data () {
       return {
         visible: false,
@@ -113,16 +128,16 @@
         dataForm: {
           asnNo: '',
           sku: '',
-          expectedQty: 0,
-          expectedQtyEach: 0,
-          receivedQty: 0,
-          receivedQtyEach: 0,
+          expectedQty: null,
+          expectedQtyEach: null,
+          receivedQty: null,
+          receivedQtyEach: null,
           holdRejectreason: '',
           notes: '',
           locationZone: '',
           locationId: '',
           packId: '',
-          lineStatus: null,
+          lineStatus: '00',
           lotatt01: '',
           lotatt02: '',
           lotatt03: '',
@@ -144,7 +159,8 @@
         },
         dataRule: {},
         tableOption: [],
-        attShowFlag: false
+        attShowFlag: false,
+        locationZoneCombo: []
       }
     },
     components: {
@@ -153,43 +169,10 @@
     methods: {
       init (id) {
         this.initData()
-        this.dataForm.id = id
+        this.dataForm.asnNo = id
         this.visible = true
         this.$nextTick(() => {
-          // this.$refs['dataForm'].resetFields()
-          if (this.dataForm.id) {
-            this.$http({
-              url: this.$http.adornUrl(`/sys/docAsnHeader/info/${this.dataForm.id}`),
-              method: 'get',
-              params: this.$http.adornParams()
-            }).then(({data}) => {
-              if (data && data.code === 0) {
-                this.dataForm.createUserId = data.docAsnHeader.createUserId
-                this.dataForm.notes = data.docAsnHeader.notes
-                this.dataForm.supplierId = data.docAsnHeader.supplierId
-                this.dataForm.editUserId = data.docAsnHeader.editUserId
-                this.dataForm.paNo = data.docAsnHeader.paNo
-                this.dataForm.qcNo = data.docAsnHeader.qcNo
-                this.dataForm.userdefine1 = data.docAsnHeader.userdefine1
-                this.dataForm.userdefine2 = data.docAsnHeader.userdefine2
-                this.dataForm.userdefine3 = data.docAsnHeader.userdefine3
-                this.dataForm.editDate = data.docAsnHeader.editDate
-                this.dataForm.userdefine4 = data.docAsnHeader.userdefine4
-                this.dataForm.userdefine5 = data.docAsnHeader.userdefine5
-                this.dataForm.asnNo = data.docAsnHeader.asnNo
-                this.dataForm.asnReference1 = data.docAsnHeader.asnReference1
-                this.dataForm.asnReference2 = data.docAsnHeader.asnReference2
-                this.dataForm.customerId = data.docAsnHeader.customerId
-                this.dataForm.releaseStatus = data.docAsnHeader.releaseStatus
-                this.dataForm.asnType = data.docAsnHeader.asnType
-                this.dataForm.expectedArriveTime = data.docAsnHeader.expectedArriveTime
-                this.dataForm.asnStatus = data.docAsnHeader.asnStatus
-                this.dataForm.customerNo = data.docAsnHeader.customerNo
-                this.dataForm.createDate = data.docAsnHeader.createDate
-                this.dataForm.activeFlag = data.docAsnHeader.activeFlag
-              }
-            })
-          }
+          //查询明细
         })
       },
       // 表单提交
@@ -211,6 +194,10 @@
         lotattConfigList().then(response => {
           this.tableOption = response.data
         })
+
+        queryLocationZoneDict().then(response => {
+          this.locationZoneCombo = response.data
+        })
       },
       showHidden () {
         this.attShowFlag = !this.attShowFlag

+ 1 - 1
ruoyi-ui/src/views/docAsn/docAsnDetails.vue

@@ -84,7 +84,7 @@
       layout="total, sizes, prev, pager, next, jumper">
     </el-pagination>
     <div>
-      <el-button type="primary" size="mini" @click="addOrUpdateHandle()">明细新增</el-button>
+      <el-button type="primary" size="mini" @click="addOrUpdateHandle(dataForm.asnNo)">明细新增</el-button>
       <el-button type="primary" size="mini" >明细编辑</el-button>
       <el-button type="primary" size="mini" >明细删除</el-button>
     </div>

+ 12 - 1
ruoyi-ui/src/views/docAsn/docAsnHeader-add-or-update.vue

@@ -106,6 +106,7 @@
 
 <script>
 
+  import { initAsnHeader } from "@/api/docAsn/docAsn";
   import {querySupplierDict} from "@/api/base/supplier";
   import {queryCustomerDict} from "@/api/base/customer";
   import AsnDetails from './docAsnDetails'
@@ -160,7 +161,17 @@
         this.initData()
         this.visible = true
         this.$nextTick(() => {
-          this.$refs.asnDetails.getDataList(id)
+          initAsnHeader(id).then(response => {
+            if(response.code == 200) {
+              let asnHeader = response.data;
+              this.dataFormHead.asnNo = asnHeader.asnNo
+              this.dataFormHead.asnStatus = asnHeader.asnStatus
+              this.dataFormHead.asnType = asnHeader.asnType
+            } else {
+              this.$modal.msgError(response.msg);
+            }
+          })
+          this.$refs.asnDetails.getDataList(this.dataFormHead.asnNo)
         })
       },
       initData () {

+ 1 - 1
ruoyi-ui/src/views/docAsn/index.vue

@@ -312,7 +312,7 @@ export default {
       this.reset();
       this.addOrUpdateVisible = true
       this.$nextTick(() => {
-        this.$refs.addOrUpdate.init('1')
+        this.$refs.addOrUpdate.init('undefine')
       })
     },
     /** 修改按钮操作 */

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

@@ -1,6 +1,8 @@
 package com.ruoyi.ams.asn.service;
 
 import java.util.List;
+
+import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
 import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
 
 /**
@@ -66,4 +68,11 @@ public interface IWmsDocAsnHeaderService
      * @return 结果
      */
      int deleteWmsDocAsnHeaderByAsnNo(String asnNo);
+
+    /**
+     * 插入表体
+     * @param wmsDocAsnDetails
+     * @return
+     */
+     int insertWmsDocAsnDetails(WmsDocAsnDetails wmsDocAsnDetails);
 }

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

@@ -122,6 +122,13 @@ public class WmsDocAsnHeaderServiceImpl implements IWmsDocAsnHeaderService
         return wmsDocAsnHeaderMapper.deleteWmsDocAsnHeaderByAsnNo(asnNo);
     }
 
+    @Override
+    public int insertWmsDocAsnDetails(WmsDocAsnDetails wmsDocAsnDetails) {
+        List<WmsDocAsnDetails> detailsList = new ArrayList<>();
+        detailsList.add(wmsDocAsnDetails);
+        return wmsDocAsnHeaderMapper.batchWmsDocAsnDetails(detailsList);
+    }
+
     /**
      * 新增入库单体信息
      * 

File diff suppressed because it is too large
+ 31 - 31
warewms-ams/src/main/resources/mapper/docAsn/WmsDocAsnHeaderMapper.xml


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

@@ -6,5 +6,17 @@ package com.ruoyi.base.service;
  * Date: 2022/3/4
  */
 public interface SysIdsequenceService {
+    /**
+     * 生成id
+     * @param idName
+     * @return
+     */
     String generateId(String idName);
+
+    /**
+     * 获取当前id
+     * @param idName
+     * @return
+     */
+    String getCurrent(String idName);
 }

+ 25 - 0
warewms-base/src/main/java/com/ruoyi/base/service/impl/SysIdsequenceServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ruoyi.base.service.impl;
 
+import cn.hutool.core.date.DateUtil;
 import com.ruoyi.base.domain.SysIdsequence;
 import com.ruoyi.base.mapper.SysIdsequenceMapper;
 import com.ruoyi.base.service.SysIdsequenceService;
@@ -55,4 +56,28 @@ public class SysIdsequenceServiceImpl implements SysIdsequenceService {
             }
         }
     }
+
+    @Override
+    public String getCurrent(String idName) {
+        SysIdsequence sysIdsequence = sysIdsequenceMapper.selectByIdname(idName);
+        String prefix;
+        String dateStr = "";
+        if(!StringUtils.isEmpty(sysIdsequence.getDateFormat()) && (sysIdsequence.getDateFormat().equals("YYYYMMDD") || sysIdsequence.getDateFormat().equals("YYMMDD"))){
+            prefix = sysIdsequence.getPrefix() + DateUtil.format(new Date(),"yMMdd");
+            dateStr = DateUtil.format(new Date(),"yMMdd");
+        }else {
+            prefix = sysIdsequence.getPrefix();
+        }
+        int index = 0;
+        if(sysIdsequence.getDateFormat() == null || sysIdsequence.getDateFormat().equals("") || dateStr.equals(sysIdsequence.getDateMax())){
+            index = sysIdsequence.getIdSequence() == null ? 0 : sysIdsequence.getIdSequence().intValue();
+        }
+        String resultNo = "";
+        if(!StringUtils.isEmpty(prefix)){
+            resultNo = prefix + CommonUtils.lpad((index+1)+"",sysIdsequence.getLength().intValue(),"0");
+        }else {
+            resultNo =  (index+1)+"";
+        }
+        return resultNo;
+    }
 }