Ver código fonte

出入库策略修改,bug修复

andy 3 anos atrás
pai
commit
c6e2c9f59a

+ 3 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/ams/AsnSoStrategyController.java

@@ -74,10 +74,11 @@ public class AsnSoStrategyController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('config:asnSoStrategy:add')")
     @Log(title = "出入库策略", businessType = BusinessType.INSERT)
-    @PostMapping
+    @PostMapping("/add")
     public AjaxResult add(@RequestBody AsnSoStrategy asnSoStrategy)
     {
-        return toAjax(asnSoStrategyService.insertAsnSoStrategy(asnSoStrategy));
+        int result = asnSoStrategyService.updateAsnSoStrategy(asnSoStrategy);
+        return toAjax(result);
     }
 
     /**

+ 25 - 18
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/base/BaseLocationInfoController.java

@@ -2,6 +2,10 @@ package com.ruoyi.web.controller.warewms.base;
 
 import java.util.List;
 import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.base.domain.form.BasLocationForm;
+import com.ruoyi.base.mapper.BaseLocationInfoMapper;
+import org.springframework.beans.BeanUtils;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -23,24 +27,24 @@ import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
  * 库位信息Controller
- * 
+ *
  * @author andy
  * @date 2022-02-18
  */
 @RestController
 @RequestMapping("/base/locationInfo")
-public class BaseLocationInfoController extends BaseController
-{
+public class BaseLocationInfoController extends BaseController {
     @Autowired
     private IBaseLocationInfoService baseLocationInfoService;
+    @Autowired
+    private BaseLocationInfoMapper baseLocationInfoMapper;
 
     /**
      * 查询库位信息列表
      */
     @PreAuthorize("@ss.hasPermi('base:locationInfo:list')")
     @GetMapping("/list")
-    public TableDataInfo list(BaseLocationInfo baseLocationInfo)
-    {
+    public TableDataInfo list(BaseLocationInfo baseLocationInfo) {
         startPage();
         List<BaseLocationInfo> list = baseLocationInfoService.selectBaseLocationInfoList(baseLocationInfo);
         return getDataTable(list);
@@ -52,8 +56,7 @@ public class BaseLocationInfoController extends BaseController
     @PreAuthorize("@ss.hasPermi('base:locationInfo:export')")
     @Log(title = "库位信息", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, BaseLocationInfo baseLocationInfo)
-    {
+    public void export(HttpServletResponse response, BaseLocationInfo baseLocationInfo) {
         List<BaseLocationInfo> list = baseLocationInfoService.selectBaseLocationInfoList(baseLocationInfo);
         ExcelUtil<BaseLocationInfo> util = new ExcelUtil<BaseLocationInfo>(BaseLocationInfo.class);
         util.exportExcel(response, list, "库位信息数据");
@@ -64,8 +67,7 @@ public class BaseLocationInfoController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('base:locationInfo:query')")
     @GetMapping(value = "/{id}")
-    public AjaxResult getInfo(@PathVariable("id") Long id)
-    {
+    public AjaxResult getInfo(@PathVariable("id") Long id) {
         return AjaxResult.success(baseLocationInfoService.selectBaseLocationInfoById(id));
     }
 
@@ -75,8 +77,16 @@ public class BaseLocationInfoController extends BaseController
     @PreAuthorize("@ss.hasPermi('base:locationInfo:add')")
     @Log(title = "库位信息", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody BaseLocationInfo baseLocationInfo)
-    {
+    public AjaxResult add(@RequestBody BasLocationForm basLocationForm) {
+        BaseLocationInfo baseLocationInfo = new BaseLocationInfo();
+        BeanUtils.copyProperties(basLocationForm, baseLocationInfo);
+        if (basLocationForm.getBindSku() != null) {
+            baseLocationInfo.setBindSku(String.join(",", basLocationForm.getBindSku()));
+        }
+        List<BaseLocationInfo> list = baseLocationInfoMapper.checkIsRepeat(baseLocationInfo);
+        if (list != null && list.size() > 0) {
+            return AjaxResult.error("库位编码和列号不能重复");
+        }
         return toAjax(baseLocationInfoService.insertBaseLocationInfo(baseLocationInfo));
     }
 
@@ -86,8 +96,7 @@ public class BaseLocationInfoController extends BaseController
     @PreAuthorize("@ss.hasPermi('base:locationInfo:edit')")
     @Log(title = "库位信息", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody BaseLocationInfo baseLocationInfo)
-    {
+    public AjaxResult edit(@RequestBody BaseLocationInfo baseLocationInfo) {
         return toAjax(baseLocationInfoService.updateBaseLocationInfo(baseLocationInfo));
     }
 
@@ -96,9 +105,8 @@ public class BaseLocationInfoController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('base:locationInfo:remove')")
     @Log(title = "库位信息", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{ids}")
-    public AjaxResult remove(@PathVariable Long[] ids)
-    {
+    @DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids) {
         return toAjax(baseLocationInfoService.deleteBaseLocationInfoByIds(ids));
     }
 
@@ -106,8 +114,7 @@ public class BaseLocationInfoController extends BaseController
      * 获取库位下拉树列表
      */
     @GetMapping("/treeselect")
-    public AjaxResult treeselect()
-    {
+    public AjaxResult treeselect() {
         return AjaxResult.success(baseLocationInfoService.buildLocationTreeSelect());
     }
 }

+ 12 - 20
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warewms/base/BaseSkuController.java

@@ -25,14 +25,13 @@ import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
  * 物料信息Controller
- * 
+ *
  * @author andy
  * @date 2022-02-21
  */
 @RestController
 @RequestMapping("/base/baseSku")
-public class BaseSkuController extends BaseController
-{
+public class BaseSkuController extends BaseController {
     @Autowired
     private IBaseSkuService baseSkuService;
 
@@ -41,8 +40,7 @@ public class BaseSkuController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('base:baseSku:list')")
     @GetMapping("/list")
-    public TableDataInfo list(BaseSku baseSku)
-    {
+    public TableDataInfo list(BaseSku baseSku) {
         startPage();
         List<BaseSku> list = baseSkuService.selectBaseSkuList(baseSku);
         return getDataTable(list);
@@ -54,8 +52,7 @@ public class BaseSkuController extends BaseController
     @PreAuthorize("@ss.hasPermi('base:baseSku:export')")
     @Log(title = "物料信息", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(HttpServletResponse response, BaseSku baseSku)
-    {
+    public void export(HttpServletResponse response, BaseSku baseSku) {
         List<BaseSku> list = baseSkuService.selectBaseSkuList(baseSku);
         ExcelUtil<BaseSku> util = new ExcelUtil<BaseSku>(BaseSku.class);
         util.exportExcel(response, list, "物料信息数据");
@@ -65,10 +62,9 @@ public class BaseSkuController extends BaseController
      * 获取物料信息详细信息
      */
     @PreAuthorize("@ss.hasPermi('base:baseSku:query')")
-    @GetMapping(value = "/{customerId}")
-    public AjaxResult getInfo(@PathVariable("customerId") String customerId)
-    {
-        return AjaxResult.success(baseSkuService.selectBaseSkuByCustomerId(customerId));
+    @GetMapping(value = "/{customerId}/{sku}")
+    public AjaxResult getInfo(@PathVariable("customerId") String customerId, @PathVariable("sku") String sku) {
+        return AjaxResult.success(baseSkuService.selectBaseSkuByCustomerId(customerId, sku));
     }
 
     /**
@@ -77,8 +73,7 @@ public class BaseSkuController extends BaseController
     @PreAuthorize("@ss.hasPermi('base:baseSku:add')")
     @Log(title = "物料信息", businessType = BusinessType.INSERT)
     @PostMapping
-    public AjaxResult add(@RequestBody BaseSku baseSku)
-    {
+    public AjaxResult add(@RequestBody BaseSku baseSku) {
         return toAjax(baseSkuService.insertBaseSku(baseSku));
     }
 
@@ -88,8 +83,7 @@ public class BaseSkuController extends BaseController
     @PreAuthorize("@ss.hasPermi('base:baseSku:edit')")
     @Log(title = "物料信息", businessType = BusinessType.UPDATE)
     @PutMapping
-    public AjaxResult edit(@RequestBody BaseSku baseSku)
-    {
+    public AjaxResult edit(@RequestBody BaseSku baseSku) {
         return toAjax(baseSkuService.updateBaseSku(baseSku));
     }
 
@@ -98,9 +92,8 @@ public class BaseSkuController extends BaseController
      */
     @PreAuthorize("@ss.hasPermi('base:baseSku:remove')")
     @Log(title = "物料信息", businessType = BusinessType.DELETE)
-	@DeleteMapping("/{customerIds}")
-    public AjaxResult remove(@PathVariable String[] customerIds)
-    {
+    @DeleteMapping("/{customerIds}")
+    public AjaxResult remove(@PathVariable String[] customerIds) {
         return toAjax(baseSkuService.deleteBaseSkuByCustomerIds(customerIds));
     }
 
@@ -108,8 +101,7 @@ public class BaseSkuController extends BaseController
      * 获取物料信息字典
      */
     @GetMapping("queryDict")
-    public AjaxResult queryDict()
-    {
+    public AjaxResult queryDict() {
         BaseSku query = new BaseSku();
         query.setActiveFlag("Y");
         return AjaxResult.success(baseSkuService.selectBaseSkuList(query));

+ 2 - 2
ruoyi-ui/src/api/base/baseSku.js

@@ -10,9 +10,9 @@ export function listBaseSku(query) {
 }
 
 // 查询物料信息详细
-export function getBaseSku(customerId) {
+export function getBaseSku(customerId,sku) {
   return request({
-    url: '/base/baseSku/' + customerId,
+    url: '/base/baseSku/' + customerId+'/'+sku,
     method: 'get'
   })
 }

+ 4 - 0
ruoyi-ui/src/utils/combo/dict.js

@@ -21,6 +21,10 @@ export const requiredTag = [
   {
     label: '必填',
     value: 'Required'
+  },
+  {
+    label: '隐藏',
+    value: 'Hidden'
   }
 ]
 

+ 8 - 8
ruoyi-ui/src/views/ams/config/index.vue

@@ -80,7 +80,7 @@
       <el-table-column label="控件类型" align="center" prop="inputType" />
       <el-table-column label="输入范围" align="center" prop="inputScope" />
       <el-table-column label="默认值" align="center" prop="defaultValue" />
-      <el-table-column label="状态(0启用1禁用)" align="center" prop="status" />
+      <!--<el-table-column label="状态(0启用1禁用)" align="center" prop="status" />-->
       <el-table-column label="备注" align="center" prop="remark" />
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
         <template slot-scope="scope">
@@ -91,13 +91,13 @@
             @click="handleUpdate(scope.row)"
             v-hasPermi="['ams:config:edit']"
           >修改</el-button>
-          <el-button
-            size="mini"
-            type="text"
-            icon="el-icon-delete"
-            @click="handleDelete(scope.row)"
-            v-hasPermi="['ams:config:remove']"
-          >删除</el-button>
+          <!--<el-button-->
+            <!--size="mini"-->
+            <!--type="text"-->
+            <!--icon="el-icon-delete"-->
+            <!--@click="handleDelete(scope.row)"-->
+            <!--v-hasPermi="['ams:config:remove']"-->
+          <!--&gt;删除</el-button>-->
         </template>
       </el-table-column>
     </el-table>

+ 3 - 3
ruoyi-ui/src/views/ams/flowConfig/index.vue

@@ -268,7 +268,7 @@
             </el-form-item>
           </el-col>
         </el-row>
-        <el-divider content-position="center">批次属性信息</el-divider>
+        <!--<el-divider content-position="center">批次属性信息</el-divider>
         <el-table :data="flowConfigDetailsList" :row-class-name="rowFlowConfigDetailsIndex" @selection-change="handleFlowConfigDetailsSelectionChange" ref="flowConfigDetails">
           <el-table-column label="序号" align="center" prop="index" width="50"/>
           <el-table-column label="批次属性" prop="lotattId">
@@ -289,7 +289,7 @@
             </template>
           </el-table-column>
           <el-table-column label="备注" prop="remark"></el-table-column>
-        </el-table>
+        </el-table>-->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -455,7 +455,7 @@ export default {
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
-          this.form.flowConfigDetailsList = this.flowConfigDetailsList;
+          // this.form.flowConfigDetailsList = this.flowConfigDetailsList;
           if (this.form.id != null) {
             updateFlowConfig(this.form).then(response => {
               this.$modal.msgSuccess("修改成功");

+ 17 - 4
ruoyi-ui/src/views/ams/locationPriority/index.vue

@@ -81,14 +81,18 @@
                 <el-radio v-for="dict in selectDict2" v-model="form.soLocationAverage" :label="dict.value">{{dict.label}}</el-radio>
               </el-form-item>
             </el-form>
-            <div slot="footer" class="dialog-footer">
-              <el-button type="primary" @click="formSub">保 存</el-button>
-              <el-button @click="getList">刷 新</el-button>
-            </div>
           </div>
         </el-card>
       </el-col>
     </el-row>
+    <el-row>
+      <el-col>
+        <div style="text-align: center;">
+          <el-button type="primary" @click="formSub">保 存</el-button>
+          <el-button @click="getList">刷 新</el-button>
+        </div>
+      </el-col>
+    </el-row>
   </div>
 </template>
 
@@ -151,6 +155,15 @@
           this.form.asnSameSku = response.data.asnSameSku
           this.form.asnSameSkuType = response.data.asnSameSkuType
           this.form.asnSameLotatt1Flag = response.data.asnSameLotatt1Flag
+          this.form.asnSameLotatt1Value = response.data.asnSameLotatt1Value
+          this.form.asnSameLotatt2Flag = response.data.asnSameLotatt2Flag
+          this.form.asnSameLotatt2Value = response.data.asnSameLotatt2Value
+          this.form.asnLocationAverage = response.data.asnLocationAverage
+          this.form.soPeriodFlag = response.data.soPeriodFlag
+          this.form.soSameLotatt1Flag = response.data.soSameLotatt1Flag
+          this.form.soSameLotatt1Value = response.data.soSameLotatt1Value
+          this.form.soLocationAverage = response.data.soLocationAverage
+          this.form.soOuterFlag = response.data.soOuterFlag
         })
       },
       formSub() {

+ 233 - 166
ruoyi-ui/src/views/base/baseSku/index.vue

@@ -13,7 +13,7 @@
       <el-form-item label="是否激活" prop="activeFlag">
         <el-select v-model="queryParams.activeFlag" placeholder="请选择是否激活" clearable size="small">
           <el-option
-            v-for="dict in dict.type.sys_normal_disable"
+            v-for="dict in dict.type.sys_yes_no"
             :key="dict.value"
             :label="dict.label"
             :value="dict.value"
@@ -37,7 +37,7 @@
           v-hasPermi="['base:baseSku:add']"
         >新增</el-button>
       </el-col>
-      <el-col :span="1.5">
+      <!--<el-col :span="1.5">
         <el-button
           type="success"
           plain
@@ -47,7 +47,7 @@
           @click="handleUpdate"
           v-hasPermi="['base:baseSku:edit']"
         >修改</el-button>
-      </el-col>
+      </el-col>-->
       <el-col :span="1.5">
         <el-button
           type="danger"
@@ -74,18 +74,18 @@
 
     <el-table v-loading="loading" :data="baseSkuList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="货主编号" align="center" prop="customerId" />
-      <el-table-column label="产品编号" align="center" prop="sku" />
-      <el-table-column label="产品类型" align="center" prop="skuType" />
+      <!--<el-table-column label="货主编号" align="center" prop="customerId" />-->
+      <el-table-column label="物料编号" align="center" prop="sku" />
+      <el-table-column label="物料类型" align="center" prop="skuType" />
       <el-table-column label="规格" align="center" prop="specs" />
       <el-table-column label="型号" align="center" prop="model" />
-      <el-table-column label="描述1" align="center" prop="desc1" />
+      <el-table-column label="物料名称" align="center" prop="desc1" />
       <el-table-column label="描述2" align="center" prop="desc2" />
       <el-table-column label="自赋码1" align="center" prop="selfCode1" />
       <el-table-column label="自赋码2" align="center" prop="selfCode2" />
       <el-table-column label="是否危险品" align="center" prop="hazardFlag">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.hazardFlag"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.hazardFlag"/>
         </template>
       </el-table-column>
       <el-table-column label="包装" align="center" prop="packId" />
@@ -94,7 +94,7 @@
       <el-table-column label="净重" align="center" prop="netweight" />
       <el-table-column label="是否激活" align="center" prop="activeFlag">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.activeFlag"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.activeFlag"/>
         </template>
       </el-table-column>
       <el-table-column label="上架库位" align="center" prop="putawayLocation" />
@@ -110,17 +110,17 @@
       <el-table-column label="有效期(天)" align="center" prop="shelflife" />
       <el-table-column label="冷链标志" align="center" prop="coldFlag">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.coldFlag"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.coldFlag"/>
         </template>
       </el-table-column>
       <el-table-column label="灭菌标志" align="center" prop="sterilizationFlag">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.sterilizationFlag"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.sterilizationFlag"/>
         </template>
       </el-table-column>
       <el-table-column label="养护周期(天)" align="center" prop="curingCycle" />
       <el-table-column label="生产企业" align="center" prop="manufacturer" />
-      <el-table-column label="${comment}" align="center" prop="userdefine1" />
+      <!--<el-table-column label="${comment}" align="center" prop="userdefine1" />
       <el-table-column label="${comment}" align="center" prop="userdefine2" />
       <el-table-column label="${comment}" align="center" prop="userdefine3" />
       <el-table-column label="${comment}" align="center" prop="userdefine4" />
@@ -129,20 +129,20 @@
       <el-table-column label="${comment}" align="center" prop="userdefine7" />
       <el-table-column label="${comment}" align="center" prop="userdefine8" />
       <el-table-column label="${comment}" align="center" prop="userdefine9" />
-      <el-table-column label="${comment}" align="center" prop="userdefine10" />
+      <el-table-column label="${comment}" align="center" prop="userdefine10" />-->
       <el-table-column label="是否检测效期" align="center" prop="expirationDateCheck">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.expirationDateCheck"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.expirationDateCheck"/>
         </template>
       </el-table-column>
       <el-table-column label="是否允许超收" align="center" prop="overchargeCheck">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.overchargeCheck"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.overchargeCheck"/>
         </template>
       </el-table-column>
       <el-table-column label="是否需要质检" align="center" prop="qcCheck">
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.qcCheck"/>
+          <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.qcCheck"/>
         </template>
       </el-table-column>
       <el-table-column label="备注" align="center" prop="remark" />
@@ -165,7 +165,7 @@
         </template>
       </el-table-column>
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -175,83 +175,195 @@
     />
 
     <!-- 添加或修改物料信息对话框 -->
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="规格" prop="specs">
-          <el-input v-model="form.specs" placeholder="请输入规格" />
-        </el-form-item>
-        <el-form-item label="型号" prop="model">
-          <el-input v-model="form.model" placeholder="请输入型号" />
-        </el-form-item>
-        <el-form-item label="描述1" prop="desc1">
-          <el-input v-model="form.desc1" placeholder="请输入描述1" />
-        </el-form-item>
-        <el-form-item label="描述2" prop="desc2">
-          <el-input v-model="form.desc2" placeholder="请输入描述2" />
-        </el-form-item>
-        <el-form-item label="自赋码1" prop="selfCode1">
-          <el-input v-model="form.selfCode1" placeholder="请输入自赋码1" />
-        </el-form-item>
-        <el-form-item label="自赋码2" prop="selfCode2">
-          <el-input v-model="form.selfCode2" placeholder="请输入自赋码2" />
-        </el-form-item>
-        <el-form-item label="是否危险品" prop="hazardFlag">
-          <el-select v-model="form.hazardFlag" placeholder="请选择是否危险品">
-            <el-option
-              v-for="dict in dict.type.sys_normal_disable"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="皮重" prop="tare">
-          <el-input v-model="form.tare" placeholder="请输入皮重" />
-        </el-form-item>
-        <el-form-item label="毛重" prop="grossweight">
-          <el-input v-model="form.grossweight" placeholder="请输入毛重" />
-        </el-form-item>
-        <el-form-item label="净重" prop="netweight">
-          <el-input v-model="form.netweight" placeholder="请输入净重" />
-        </el-form-item>
-        <el-form-item label="是否激活" prop="activeFlag">
-          <el-select v-model="form.activeFlag" placeholder="请选择是否激活">
-            <el-option
-              v-for="dict in dict.type.sys_normal_disable"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="高" prop="skuHigh">
-          <el-input v-model="form.skuHigh" placeholder="请输入高" />
-        </el-form-item>
-        <el-form-item label="长" prop="skuLength">
-          <el-input v-model="form.skuLength" placeholder="请输入长" />
-        </el-form-item>
-        <el-form-item label="宽" prop="skuWidth">
-          <el-input v-model="form.skuWidth" placeholder="请输入宽" />
-        </el-form-item>
-        <el-form-item label="库存上限" prop="qtymax">
-          <el-input v-model="form.qtymax" placeholder="请输入库存上限" />
-        </el-form-item>
-        <el-form-item label="库存下限" prop="qtymin">
-          <el-input v-model="form.qtymin" placeholder="请输入库存下限" />
-        </el-form-item>
-        <el-form-item label="质检规则" prop="qcRule">
-          <el-input v-model="form.qcRule" placeholder="请输入质检规则" />
-        </el-form-item>
-        <el-form-item label="质检周期" prop="qcTime">
-          <el-input v-model="form.qcTime" placeholder="请输入质检周期" />
-        </el-form-item>
-        <el-form-item label="有效期(天)" prop="shelflife">
-          <el-input v-model="form.shelflife" placeholder="请输入有效期(天)" />
-        </el-form-item>
+    <el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="物料编号" prop="sku">
+              <el-input v-model="form.sku" placeholder="请输入物料编号" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="物料种类" prop="skuType">
+              <el-select style="width: 100%" v-model="form.skuType" placeholder="请选择物料种类" clearable size="small">
+                <el-option
+                  v-for="dict in skuTypeCombo"
+                  :key="dict.itemCode"
+                  :label="dict.itemName"
+                  :value="dict.itemCode"
+                />
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="物料名称" prop="desc1">
+              <el-input v-model="form.desc1" placeholder="请输入物料名称" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="描述" prop="desc2">
+              <el-input v-model="form.desc2" placeholder="描述" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="规格" prop="specs">
+              <el-input v-model="form.specs" placeholder="请输入规格" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="型号" prop="model">
+              <el-input v-model="form.model" placeholder="请输入型号" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="自赋码1" prop="selfCode1">
+              <el-input v-model="form.selfCode1" placeholder="请输入自赋码1" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="自赋码2" prop="selfCode2">
+              <el-input v-model="form.selfCode2" placeholder="请输入自赋码2" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="是否危险品" prop="hazardFlag">
+              <el-select v-model="form.hazardFlag" placeholder="请选择是否危险品" style="width: 100%">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="皮重" prop="tare">
+              <el-input v-model="form.tare" placeholder="请输入皮重" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="毛重" prop="grossweight">
+              <el-input v-model="form.grossweight" placeholder="请输入毛重" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="净重" prop="netweight">
+              <el-input v-model="form.netweight" placeholder="请输入净重" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <!--<el-row>-->
+          <!--<el-col :span="12">-->
+            <!--<el-form-item label="长" prop="skuLength">-->
+              <!--<el-input v-model="form.skuLength" placeholder="请输入长" />-->
+            <!--</el-form-item>-->
+          <!--</el-col>-->
+          <!--<el-col :span="12">-->
+            <!--<el-form-item label="宽" prop="skuWidth">-->
+              <!--<el-input v-model="form.skuWidth" placeholder="请输入宽" />-->
+            <!--</el-form-item>-->
+          <!--</el-col>-->
+        <!--</el-row>-->
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="库存上限" prop="qtymax">
+              <el-input v-model="form.qtymax" placeholder="请输入库存上限" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="库存下限" prop="qtymin">
+              <el-input v-model="form.qtymin" placeholder="请输入库存下限" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="是否检测效期" prop="expirationDateCheck">
+              <el-select v-model="form.expirationDateCheck" placeholder="请选择是否检测效期" style="width: 100%">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="有效期(天)" prop="shelflife">
+              <el-input v-model="form.shelflife" placeholder="请输入有效期(天)" />
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="是否允许超收" prop="overchargeCheck">
+              <el-select v-model="form.overchargeCheck" placeholder="请选择是否允许超收" style="width: 100%">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="是否需要质检" prop="qcCheck">
+              <el-select v-model="form.qcCheck" placeholder="请选择是否需要质检" style="width: 100%">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+        </el-row>
+        <el-row>
+          <el-col :span="12">
+            <el-form-item label="是否激活" prop="activeFlag">
+              <el-select v-model="form.activeFlag" placeholder="请选择是否激活" style="width: 100%">
+                <el-option
+                  v-for="dict in dict.type.sys_yes_no"
+                  :key="dict.value"
+                  :label="dict.label"
+                  :value="dict.value"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+          </el-col>
+        </el-row>
+        <!--<el-row>
+          <el-col :span="12">
+            <el-form-item label="质检规则" prop="qcRule">
+              <el-input v-model="form.qcRule" placeholder="请输入质检规则" />
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="质检周期" prop="qcTime">
+              <el-input v-model="form.qcTime" placeholder="请输入质检周期" />
+            </el-form-item>
+          </el-col>
+        </el-row>
         <el-form-item label="冷链标志" prop="coldFlag">
           <el-select v-model="form.coldFlag" placeholder="请选择冷链标志">
             <el-option
-              v-for="dict in dict.type.sys_normal_disable"
+              v-for="dict in dict.type.sys_yes_no"
               :key="dict.value"
               :label="dict.label"
 :value="dict.value"
@@ -261,7 +373,7 @@
         <el-form-item label="灭菌标志" prop="sterilizationFlag">
           <el-select v-model="form.sterilizationFlag" placeholder="请选择灭菌标志">
             <el-option
-              v-for="dict in dict.type.sys_normal_disable"
+              v-for="dict in dict.type.sys_yes_no"
               :key="dict.value"
               :label="dict.label"
 :value="dict.value"
@@ -274,69 +386,9 @@
         <el-form-item label="生产企业" prop="manufacturer">
           <el-input v-model="form.manufacturer" type="textarea" placeholder="请输入内容" />
         </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine1">
-          <el-input v-model="form.userdefine1" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine2">
-          <el-input v-model="form.userdefine2" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine3">
-          <el-input v-model="form.userdefine3" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine4">
-          <el-input v-model="form.userdefine4" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine5">
-          <el-input v-model="form.userdefine5" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine6">
-          <el-input v-model="form.userdefine6" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine7">
-          <el-input v-model="form.userdefine7" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine8">
-          <el-input v-model="form.userdefine8" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine9">
-          <el-input v-model="form.userdefine9" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="${comment}" prop="userdefine10">
-          <el-input v-model="form.userdefine10" placeholder="请输入${comment}" />
-        </el-form-item>
-        <el-form-item label="是否检测效期" prop="expirationDateCheck">
-          <el-select v-model="form.expirationDateCheck" placeholder="请选择是否检测效期">
-            <el-option
-              v-for="dict in dict.type.sys_normal_disable"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="是否允许超收" prop="overchargeCheck">
-          <el-select v-model="form.overchargeCheck" placeholder="请选择是否允许超收">
-            <el-option
-              v-for="dict in dict.type.sys_normal_disable"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <el-form-item label="是否需要质检" prop="qcCheck">
-          <el-select v-model="form.qcCheck" placeholder="请选择是否需要质检">
-            <el-option
-              v-for="dict in dict.type.sys_normal_disable"
-              :key="dict.value"
-              :label="dict.label"
-:value="dict.value"
-            ></el-option>
-          </el-select>
-        </el-form-item>
         <el-form-item label="备注" prop="remark">
           <el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
-        </el-form-item>
+        </el-form-item>-->
       </el-form>
       <div slot="footer" class="dialog-footer">
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -348,10 +400,11 @@
 
 <script>
 import { listBaseSku, getBaseSku, delBaseSku, addBaseSku, updateBaseSku } from "@/api/base/baseSku";
+import { querySkuTypeDict } from "@/api/base/skuType";
 
 export default {
   name: "BaseSku",
-  dicts: ['sys_normal_disable'],
+  dicts: ['sys_yes_no'],
   data() {
     return {
       // 遮罩层
@@ -385,19 +438,32 @@ export default {
       form: {},
       // 表单校验
       rules: {
-        hazardFlag: [
-          { required: true, message: "是否危险品不能为空", trigger: "change" }
+        sku: [
+          { required: true, message: "产品编号不能为空", trigger: "change" }
+        ],
+        skuType: [
+          { required: true, message: "产品分类不能为空", trigger: "change" }
         ],
         activeFlag: [
           { required: true, message: "是否激活不能为空", trigger: "change" }
         ],
-      }
+        desc1: [
+          { required: true, message: "产品名称不能为空", trigger: "change" }
+        ]
+      },
+      skuTypeCombo: []
     };
   },
   created() {
+    this.init();
     this.getList();
   },
   methods: {
+    init() {
+      querySkuTypeDict().then(response => {
+        this.skuTypeCombo = response.data;
+      });
+    },
     /** 查询物料信息列表 */
     getList() {
       this.loading = true;
@@ -424,12 +490,12 @@ export default {
         desc2: null,
         selfCode1: null,
         selfCode2: null,
-        hazardFlag: null,
+        hazardFlag: 'N',
         packId: null,
         tare: null,
         grossweight: null,
         netweight: null,
-        activeFlag: null,
+        activeFlag: 'Y',
         putawayLocation: null,
         putawayZone: null,
         putawayRule: null,
@@ -443,8 +509,8 @@ export default {
         qcRule: null,
         qcTime: null,
         shelflife: null,
-        coldFlag: null,
-        sterilizationFlag: null,
+        coldFlag: 'N',
+        sterilizationFlag: 'N',
         curingCycle: null,
         manufacturer: null,
         userdefine1: null,
@@ -457,9 +523,9 @@ export default {
         userdefine8: null,
         userdefine9: null,
         userdefine10: null,
-        expirationDateCheck: null,
-        overchargeCheck: null,
-        qcCheck: null,
+        expirationDateCheck: 'N',
+        overchargeCheck: 'Y',
+        qcCheck: 'N',
         createBy: null,
         createTime: null,
         updateBy: null,
@@ -493,8 +559,9 @@ export default {
     /** 修改按钮操作 */
     handleUpdate(row) {
       this.reset();
-      const customerId = row.customerId || this.ids
-      getBaseSku(customerId).then(response => {
+      const customerId = row.customerId
+      const sku = row.sku
+      getBaseSku(customerId,sku).then(response => {
         this.form = response.data;
         this.open = true;
         this.title = "修改物料信息";

+ 67 - 13
ruoyi-ui/src/views/base/locationInfo/index.vue

@@ -171,18 +171,29 @@
     <!-- 添加或修改库位信息对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="id" prop="warehouseId">
-          <el-input v-model="form.warehouseId" placeholder="请输入车间id" />
+        <el-form-item label="所属仓库" prop="warehouseId">
+          <el-select v-model="form.warehouseId" placeholder="请选择所属仓库" clearable size="small" style="width: 100%">
+            <el-option
+              v-for="dict in this.warehouseCombo"
+              :key="dict.warehouseId"
+              :label="dict.warehouseName"
+              :value="dict.warehouseId"
+            />
+          </el-select>
         </el-form-item>
-        <el-form-item label="区域" prop="zoneId">
-          <el-input v-model="form.zoneId" placeholder="请输入区域id" />
+        <el-form-item label="库区" prop="zoneId">
+          <el-select v-model="form.zoneId" 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-form-item label="库位编码" prop="locationNo">
           <el-input v-model="form.locationNo" placeholder="请输入库位编码" />
         </el-form-item>
-        <el-form-item label="条形码" prop="locationBarcode">
-          <el-input v-model="form.locationBarcode" placeholder="请输入条形码" />
-        </el-form-item>
         <el-form-item label="排号" prop="rowNo">
           <el-input v-model="form.rowNo" placeholder="请输入排号" />
         </el-form-item>
@@ -246,7 +257,20 @@
         <el-form-item label="堆叠层数" prop="foldedCount">
           <el-input :disabled="form.foldedTag === '0'" v-model="form.foldedCount" placeholder="请输入堆叠层数" />
         </el-form-item>
-        <!--<el-form-item label="${comment}" prop="userdefine1">
+        <el-form-item label="绑定物料" prop="bindSku">
+          <el-select style="width: 100%" v-model="form.bindSku" :multiple="true" placeholder="请选择物料种类" clearable size="small">
+            <el-option
+              v-for="dict in skuTypeCombo"
+              :key="dict.itemCode"
+              :label="dict.itemName"
+              :value="dict.itemCode"
+            />
+          </el-select>
+        </el-form-item>
+        <!--<el-form-item label="条形码" prop="locationBarcode">
+          <el-input v-model="form.locationBarcode" placeholder="请输入条形码" />
+        </el-form-item>
+        <el-form-item label="${comment}" prop="userdefine1">
           <el-input v-model="form.userdefine1" placeholder="请输入${comment}" />
         </el-form-item>
         <el-form-item label="${comment}" prop="userdefine2">
@@ -292,6 +316,7 @@
 import { listLocationInfo, getLocationInfo, delLocationInfo, addLocationInfo, updateLocationInfo } from "@/api/base/locationInfo";
 import { queryLocationZoneDict } from "@/api/base/locationZone";
 import { queryWarehouseDict } from "@/api/base/warehouse";
+import { querySkuTypeDict } from "@/api/base/skuType";
 
 export default {
   name: "LocationInfo",
@@ -331,9 +356,34 @@ export default {
       form: {},
       // 表单校验
       rules: {
+        warehouseId: [
+          { required: true, message: "所属不能为空", trigger: "change" }
+        ],
+        zoneId: [
+          { required: true, message: "库区不能为空", trigger: "change" }
+        ],
+        locationNo: [
+          { required: true, message: "库位编码不能为空", trigger: "change" }
+        ],
+        colNo: [
+          { required: true, message: "列不能为空", trigger: "change" }
+        ],
+        colIndex: [
+          { required: true, message: "列序号不能为空", trigger: "change" }
+        ],
+        stockStatus: [
+          { required: true, message: "库位状态不能为空", trigger: "change" }
+        ],
+        isEmpty: [
+          { required: true, message: "是否为空不能为空", trigger: "change" }
+        ],
+        locationType: [
+          { required: true, message: "库位状态不能为空", trigger: "change" }
+        ]
       },
       locationZoneCombo: [],
-      warehouseCombo: []
+      warehouseCombo: [],
+      skuTypeCombo: []
     };
   },
   created() {
@@ -348,6 +398,10 @@ export default {
       queryLocationZoneDict().then(response => {
         this.locationZoneCombo = response.data
       });
+      // 初始化物料分类
+      querySkuTypeDict().then(response => {
+        this.skuTypeCombo = response.data;
+      });
     },
     /** 查询库位信息列表 */
     getList() {
@@ -377,14 +431,14 @@ export default {
         colIndex: null,
         shiftNo: null,
         shiftIndex: null,
-        stockStatus: null,
-        isEmpty: null,
+        stockStatus: '00',
+        isEmpty: 'Y',
         bindSku: null,
         locationType: null,
         rackId: null,
         agvStation: null,
-        foldedTag: null,
-        foldedCount: null,
+        foldedTag: 'N',
+        foldedCount: 0,
         userdefine1: null,
         userdefine2: null,
         userdefine3: null,

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

@@ -43,7 +43,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     
     <select id="selectAsnSoStrategyByAsnSameSku" parameterType="String" resultMap="AsnSoStrategyResult">
         <include refid="selectAsnSoStrategyVo"/>
-        where asn_same_sku = #{asnSameSku}
     </select>
         
     <insert id="insertAsnSoStrategy" parameterType="AsnSoStrategy">
@@ -81,6 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <update id="updateAsnSoStrategy" parameterType="AsnSoStrategy">
         update asn_so_strategy
         <trim prefix="SET" suffixOverrides=",">
+            <if test="asnSameSku != null">asn_same_sku = #{asnSameSku},</if>
             <if test="asnSameSkuType != null">asn_same_sku_type = #{asnSameSkuType},</if>
             <if test="asnSameLotatt1Flag != null">asn_same_lotatt1_flag = #{asnSameLotatt1Flag},</if>
             <if test="asnSameLotatt1Value != null">asn_same_lotatt1_value = #{asnSameLotatt1Value},</if>
@@ -93,7 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="soOuterFlag != null">so_outer_flag = #{soOuterFlag},</if>
             <if test="soLocationAverage != null">so_location_average = #{soLocationAverage},</if>
         </trim>
-        where asn_same_sku = #{asnSameSku}
+        where id = 'default'
     </update>
 
     <delete id="deleteAsnSoStrategyByAsnSameSku" parameterType="String">

+ 3 - 4
warewms-ams/src/main/resources/mapper/ams/FlowConfigHeaderMapper.xml

@@ -211,9 +211,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </insert>
 
     <select id="selectLotattDetails" parameterType="Long" resultMap="FlowConfigLotattVOResult">
-        select d.lotatt_id,d.lotatt_flag,l.lotatt_name,l.input_type,l.input_scope,l.default_value lotatt_value
-        from flow_config_details d
-        left join lotatt_config l on d.lotatt_id = l.lotatt_id
-        where d.header_id = #{id} and d.lotatt_flag &lt;&gt; 'Hidden'
+        select d.lotatt_id,d.required_tag lotatt_flag,d.lotatt_name,d.input_type,d.input_scope,d.default_value lotatt_value
+        from lotatt_config d
+        where d.required_tag &lt;&gt; 'Hidden'
     </select>
 </mapper>

+ 357 - 0
warewms-base/src/main/java/com/ruoyi/base/domain/form/BasLocationForm.java

@@ -0,0 +1,357 @@
+package com.ruoyi.base.domain.form;
+
+import com.ruoyi.common.annotation.Excel;
+
+/**
+ * Created by IntelliJ IDEA.
+ * User: andy.qu
+ * Date: 2022/3/23
+ */
+public class BasLocationForm {
+    /** 主键 */
+    private Long id;
+
+    /** 车间id */
+    @Excel(name = "车间id")
+    private Long warehouseId;
+
+    /** 区域id */
+    @Excel(name = "区域id")
+    private Long zoneId;
+
+    /** 库位编码 */
+    @Excel(name = "库位编码")
+    private String locationNo;
+
+    /** 条形码 */
+    @Excel(name = "条形码")
+    private String locationBarcode;
+
+    /** 排号 */
+    @Excel(name = "排号")
+    private String rowNo;
+
+    /** 排序号 */
+    @Excel(name = "排序号")
+    private Long rowIndex;
+
+    /** 列号 */
+    @Excel(name = "列号")
+    private String colNo;
+
+    /** 列序号 */
+    @Excel(name = "列序号")
+    private Long colIndex;
+
+    /** 层号 */
+    @Excel(name = "层号")
+    private String shiftNo;
+
+    /** 层序号 */
+    @Excel(name = "层序号")
+    private Long shiftIndex;
+
+    /** 储位状态(00)空闲,(10)占用,(20)完成,(90)合格,(99)不合格(80封存) */
+    @Excel(name = "储位状态(00)空闲,(10)占用,(20)完成,(90)合格,(99)不合格(80封存)")
+    private String stockStatus;
+
+    /** 是否为空(Y空/N非空) */
+    @Excel(name = "是否为空(Y空/N非空)")
+    private String isEmpty;
+
+    /** 指定产品 */
+    @Excel(name = "指定产品")
+    private String[] bindSku;
+
+    /** 储位类型(1货架2地堆3流离货架) */
+    @Excel(name = "储位类型", readConverterExp = "1=货架2地堆3流离货架")
+    private String locationType;
+
+    /** 盘架编号 */
+    @Excel(name = "盘架编号")
+    private String rackId;
+
+    /** AGV点位 */
+    @Excel(name = "AGV点位")
+    private Long agvStation;
+
+    /** 0默认(没有任何含义),1允许堆叠 */
+    @Excel(name = "0默认(没有任何含义),1允许堆叠")
+    private String foldedTag;
+
+    /** 叠空托盘上限(当folded_tag为1时有效) */
+    @Excel(name = "叠空托盘上限", readConverterExp = "当=folded_tag为1时有效")
+    private Long foldedCount;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine1;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine2;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine3;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine4;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine5;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine6;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine7;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine8;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine9;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String userdefine10;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getWarehouseId() {
+        return warehouseId;
+    }
+
+    public void setWarehouseId(Long warehouseId) {
+        this.warehouseId = warehouseId;
+    }
+
+    public Long getZoneId() {
+        return zoneId;
+    }
+
+    public void setZoneId(Long zoneId) {
+        this.zoneId = zoneId;
+    }
+
+    public String getLocationNo() {
+        return locationNo;
+    }
+
+    public void setLocationNo(String locationNo) {
+        this.locationNo = locationNo;
+    }
+
+    public String getLocationBarcode() {
+        return locationBarcode;
+    }
+
+    public void setLocationBarcode(String locationBarcode) {
+        this.locationBarcode = locationBarcode;
+    }
+
+    public String getRowNo() {
+        return rowNo;
+    }
+
+    public void setRowNo(String rowNo) {
+        this.rowNo = rowNo;
+    }
+
+    public Long getRowIndex() {
+        return rowIndex;
+    }
+
+    public void setRowIndex(Long rowIndex) {
+        this.rowIndex = rowIndex;
+    }
+
+    public String getColNo() {
+        return colNo;
+    }
+
+    public void setColNo(String colNo) {
+        this.colNo = colNo;
+    }
+
+    public Long getColIndex() {
+        return colIndex;
+    }
+
+    public void setColIndex(Long colIndex) {
+        this.colIndex = colIndex;
+    }
+
+    public String getShiftNo() {
+        return shiftNo;
+    }
+
+    public void setShiftNo(String shiftNo) {
+        this.shiftNo = shiftNo;
+    }
+
+    public Long getShiftIndex() {
+        return shiftIndex;
+    }
+
+    public void setShiftIndex(Long shiftIndex) {
+        this.shiftIndex = shiftIndex;
+    }
+
+    public String getStockStatus() {
+        return stockStatus;
+    }
+
+    public void setStockStatus(String stockStatus) {
+        this.stockStatus = stockStatus;
+    }
+
+    public String getIsEmpty() {
+        return isEmpty;
+    }
+
+    public void setIsEmpty(String isEmpty) {
+        this.isEmpty = isEmpty;
+    }
+
+    public String[] getBindSku() {
+        return bindSku;
+    }
+
+    public void setBindSku(String[] bindSku) {
+        this.bindSku = bindSku;
+    }
+
+    public String getLocationType() {
+        return locationType;
+    }
+
+    public void setLocationType(String locationType) {
+        this.locationType = locationType;
+    }
+
+    public String getRackId() {
+        return rackId;
+    }
+
+    public void setRackId(String rackId) {
+        this.rackId = rackId;
+    }
+
+    public Long getAgvStation() {
+        return agvStation;
+    }
+
+    public void setAgvStation(Long agvStation) {
+        this.agvStation = agvStation;
+    }
+
+    public String getFoldedTag() {
+        return foldedTag;
+    }
+
+    public void setFoldedTag(String foldedTag) {
+        this.foldedTag = foldedTag;
+    }
+
+    public Long getFoldedCount() {
+        return foldedCount;
+    }
+
+    public void setFoldedCount(Long foldedCount) {
+        this.foldedCount = foldedCount;
+    }
+
+    public String getUserdefine1() {
+        return userdefine1;
+    }
+
+    public void setUserdefine1(String userdefine1) {
+        this.userdefine1 = userdefine1;
+    }
+
+    public String getUserdefine2() {
+        return userdefine2;
+    }
+
+    public void setUserdefine2(String userdefine2) {
+        this.userdefine2 = userdefine2;
+    }
+
+    public String getUserdefine3() {
+        return userdefine3;
+    }
+
+    public void setUserdefine3(String userdefine3) {
+        this.userdefine3 = userdefine3;
+    }
+
+    public String getUserdefine4() {
+        return userdefine4;
+    }
+
+    public void setUserdefine4(String userdefine4) {
+        this.userdefine4 = userdefine4;
+    }
+
+    public String getUserdefine5() {
+        return userdefine5;
+    }
+
+    public void setUserdefine5(String userdefine5) {
+        this.userdefine5 = userdefine5;
+    }
+
+    public String getUserdefine6() {
+        return userdefine6;
+    }
+
+    public void setUserdefine6(String userdefine6) {
+        this.userdefine6 = userdefine6;
+    }
+
+    public String getUserdefine7() {
+        return userdefine7;
+    }
+
+    public void setUserdefine7(String userdefine7) {
+        this.userdefine7 = userdefine7;
+    }
+
+    public String getUserdefine8() {
+        return userdefine8;
+    }
+
+    public void setUserdefine8(String userdefine8) {
+        this.userdefine8 = userdefine8;
+    }
+
+    public String getUserdefine9() {
+        return userdefine9;
+    }
+
+    public void setUserdefine9(String userdefine9) {
+        this.userdefine9 = userdefine9;
+    }
+
+    public String getUserdefine10() {
+        return userdefine10;
+    }
+
+    public void setUserdefine10(String userdefine10) {
+        this.userdefine10 = userdefine10;
+    }
+}

+ 2 - 0
warewms-base/src/main/java/com/ruoyi/base/mapper/BaseLocationInfoMapper.java

@@ -94,4 +94,6 @@ public interface BaseLocationInfoMapper
      * @return
      */
      int updateLocationStockStatus(@Param("id") Long id,@Param("status") String status);
+
+     List<BaseLocationInfo> checkIsRepeat(BaseLocationInfo baseLocationInfo);
 }

+ 2 - 1
warewms-base/src/main/java/com/ruoyi/base/mapper/BaseSkuMapper.java

@@ -2,6 +2,7 @@ package com.ruoyi.base.mapper;
 
 import java.util.List;
 import com.ruoyi.base.domain.BaseSku;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * 物料信息Mapper接口
@@ -17,7 +18,7 @@ public interface BaseSkuMapper
      * @param customerId 物料信息主键
      * @return 物料信息
      */
-     BaseSku selectBaseSkuByCustomerId(String customerId);
+     BaseSku selectBaseSkuByCustomerId(@Param("customerId") String customerId,@Param("sku") String sku);
 
     /**
      * 查询物料信息列表

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

@@ -17,7 +17,7 @@ public interface IBaseSkuService
      * @param customerId 物料信息主键
      * @return 物料信息
      */
-     BaseSku selectBaseSkuByCustomerId(String customerId);
+     BaseSku selectBaseSkuByCustomerId(String customerId,String sku);
 
     /**
      * 查询物料信息列表

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

@@ -27,9 +27,9 @@ public class BaseSkuServiceImpl implements IBaseSkuService
      * @return 物料信息
      */
     @Override
-    public BaseSku selectBaseSkuByCustomerId(String customerId)
+    public BaseSku selectBaseSkuByCustomerId(String customerId,String sku)
     {
-        return baseSkuMapper.selectBaseSkuByCustomerId(customerId);
+        return baseSkuMapper.selectBaseSkuByCustomerId(customerId,sku);
     }
 
     /**
@@ -54,6 +54,7 @@ public class BaseSkuServiceImpl implements IBaseSkuService
     public int insertBaseSku(BaseSku baseSku)
     {
         baseSku.setCreateTime(DateUtils.getNowDate());
+        baseSku.setCustomerId("default");
         return baseSkuMapper.insertBaseSku(baseSku);
     }
 

+ 6 - 0
warewms-base/src/main/resources/mapper/base/BaseLocationInfoMapper.xml

@@ -285,4 +285,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         update base_location_info set stock_status = #{status} where id = #{id}
     </update>
 
+    <select id="checkIsRepeat" parameterType="BaseLocationInfo" resultMap="BaseLocationInfoResult">
+        select * from base_location_info b
+        where
+        (location_no = #{locationNo} or col_no = #{colNo})
+    </select>
+
 </mapper>

+ 9 - 2
warewms-base/src/main/resources/mapper/base/BaseSkuMapper.xml

@@ -62,7 +62,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </sql>
 
     <select id="selectBaseSkuList" parameterType="BaseSku" resultMap="BaseSkuResult">
-        <include refid="selectBaseSkuVo"/>
+        select b.customer_id, b.sku, sk.item_name sku_type, b.specs, b.model, b.desc1, b.desc2, b.self_code1, b.self_code2, b.hazard_flag, b.pack_id, b.tare,
+        b.grossweight, b.netweight, b.active_flag, b.putaway_location, b.putaway_zone, b.putaway_rule, b.sku_high, b.sku_length,
+        b.sku_width, b.qtymax, b.qtymin, b.default_receiving_uom, b.default_shipment_uom, b.qc_rule, b.qc_time, b.shelflife, b.cold_flag,
+        b.sterilization_flag, b.curing_cycle, b.manufacturer, b.userdefine1, b.userdefine2, b.userdefine3, b.userdefine4, b.userdefine5,
+        b.userdefine6, b.userdefine7, b.userdefine8, b.userdefine9, b.userdefine10, b.expiration_date_check, b.overcharge_check,
+        b.qc_check, b.create_by, b.create_time, b.update_by, b.update_time, b.remark
+        from base_sku b
+        left join base_sku_type sk on b.sku_type = sk.item_code
         <where>  
             <if test="customerId != null  and customerId != ''"> and customer_id = #{customerId}</if>
             <if test="sku != null  and sku != ''"> and sku like concat('%', #{sku}, '%')</if>
@@ -73,7 +80,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     
     <select id="selectBaseSkuByCustomerId" parameterType="String" resultMap="BaseSkuResult">
         <include refid="selectBaseSkuVo"/>
-        where customer_id = #{customerId}
+        where customer_id = #{customerId} and sku = #{sku}
     </select>
         
     <insert id="insertBaseSku" parameterType="BaseSku">