Browse Source

提交代码

6 months ago
parent
commit
d2be763fd4

+ 2 - 5
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/ProdInventory/controller/ProdInventoryOrderController.java

@@ -1,7 +1,6 @@
 package com.xingxi.web.controller.business.ProdInventory.controller;
 
 import com.xingxi.business.ProdInventory.domain.ProdInventoryOrder;
-import com.xingxi.business.ProdInventory.service.IProdInventoryOrderDetailService;
 import com.xingxi.business.ProdInventory.service.IProdInventoryOrderService;
 import com.xingxi.common.annotation.Log;
 import com.xingxi.common.core.controller.BaseController;
@@ -33,8 +32,6 @@ public class ProdInventoryOrderController extends BaseController {
     private IProdInventoryOrderService prodInventoryOrderService;
     @Resource
     private IProdInventoryOrderVoService prodInventoryOrderVoService;
-    @Resource
-    private IProdInventoryOrderDetailService prodInventoryOrderDetailService;
 
     @RequiresPermissions("business:product:inventory:view")
     @GetMapping("/inventoryOrder")
@@ -91,7 +88,7 @@ public class ProdInventoryOrderController extends BaseController {
     @Log(title = "商品入出库单", businessType = BusinessType.UPDATE)
     @PostMapping("/inventoryOrder/edit")
     @ResponseBody
-    public AjaxResult editSave(ProdInventoryOrderVo prodInventoryOrderVo) {
-        return toAjax(prodInventoryOrderDetailService.batchInsertProdInventoryOrderDetail(prodInventoryOrderVo.getInventoryOrderDetails()));
+    public AjaxResult editSave(@RequestBody ProdInventoryOrderVo prodInventoryOrderVo) {
+        return toAjax(prodInventoryOrderVoService.updateProdInventoryOrderVo(prodInventoryOrderVo));
     }
 }

+ 2 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/ProdInventory/domain/ProdInventoryVo.java

@@ -24,4 +24,6 @@ public class ProdInventoryVo extends ProdInventory {
     private String attrName;
     // 添加商品库存数量
     private Integer addInvQty;
+    // 出入库标记
+    private String ioFlag;
 }

+ 8 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/ProdInventory/service/IProdInventoryOrderVoService.java

@@ -26,4 +26,12 @@ public interface IProdInventoryOrderVoService {
      * @return 商品出入库单Vo集合
      */
     List<ProdInventoryOrderVo> selectProdInventoryOrderVoList(ProdInventoryOrderVo prodInventoryOrderVo);
+
+    /**
+     * 更新商品出入库单Vo
+     *
+     * @param prodInventoryOrderVo 商品出入库单Vo
+     * @return 更新结果
+     */
+    int updateProdInventoryOrderVo(ProdInventoryOrderVo prodInventoryOrderVo);
 }

+ 96 - 0
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/ProdInventory/service/impl/ProdInventoryOrderVoServiceImpl.java

@@ -1,11 +1,26 @@
 package com.xingxi.web.controller.business.ProdInventory.service.impl;
 
+import com.xingxi.business.ProdInventory.domain.ProdInventory;
+import com.xingxi.business.ProdInventory.domain.ProdInventoryBill;
+import com.xingxi.business.ProdInventory.domain.ProdInventoryOrderDetail;
+import com.xingxi.business.ProdInventory.mapper.ProdInventoryBillMapper;
+import com.xingxi.business.ProdInventory.mapper.ProdInventoryMapper;
+import com.xingxi.business.ProdInventory.mapper.ProdInventoryOrderDetailMapper;
+import com.xingxi.business.ProdInventory.mapper.ProdInventoryOrderMapper;
+import com.xingxi.common.enums.EDelFlag;
+import com.xingxi.common.enums.EInventoryBillType;
+import com.xingxi.common.utils.DateUtils;
+import com.xingxi.common.utils.ShiroUtils;
+import com.xingxi.common.utils.bean.BeanUtils;
 import com.xingxi.web.controller.business.ProdInventory.domain.ProdInventoryOrderVo;
+import com.xingxi.web.controller.business.ProdInventory.domain.ProdInventoryVo;
 import com.xingxi.web.controller.business.ProdInventory.mapper.ProdInventoryOrderVoMapper;
+import com.xingxi.web.controller.business.ProdInventory.mapper.ProdInventoryVoMapper;
 import com.xingxi.web.controller.business.ProdInventory.service.IProdInventoryOrderVoService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -17,7 +32,17 @@ import java.util.List;
 @Service
 public class ProdInventoryOrderVoServiceImpl implements IProdInventoryOrderVoService {
     @Resource
+    private ProdInventoryMapper prodInventoryMapper;
+    @Resource
+    private ProdInventoryVoMapper prodInventoryVoMapper;
+    @Resource
+    private ProdInventoryBillMapper prodInventoryBillMapper;
+    @Resource
+    private ProdInventoryOrderMapper prodInventoryOrderMapper;
+    @Resource
     private ProdInventoryOrderVoMapper prodInventoryOrderVoMapper;
+    @Resource
+    private ProdInventoryOrderDetailMapper prodInventoryOrderDetailMapper;
 
 
     /**
@@ -41,4 +66,75 @@ public class ProdInventoryOrderVoServiceImpl implements IProdInventoryOrderVoSer
     public List<ProdInventoryOrderVo> selectProdInventoryOrderVoList(ProdInventoryOrderVo prodInventoryOrderVo) {
         return prodInventoryOrderVoMapper.selectProdInventoryOrderVoList(prodInventoryOrderVo);
     }
+
+    /**
+     * 更新商品出入库单Vo
+     *
+     * @param prodInventoryOrderVo 商品出入库单Vo
+     * @return 更新结果
+     */
+    @Override
+    public int updateProdInventoryOrderVo(ProdInventoryOrderVo prodInventoryOrderVo) {
+        int effectRows = 0;
+        Date nowDate = DateUtils.getNowDate();
+        Long mercId;
+
+        ProdInventoryOrderVo checkResult = prodInventoryOrderVoMapper.selectProdInventoryOrderVoById(prodInventoryOrderVo.getInventoryOrderId());
+        if (EInventoryBillType.STOCKIN.getVal().equals(prodInventoryOrderVo.getIoFlag())) {
+            mercId = checkResult.getInId();
+        } else {
+            mercId = checkResult.getOutId();
+        }
+
+        for (ProdInventoryOrderDetail prodInventoryOrderDetail : prodInventoryOrderVo.getInventoryOrderDetails()) {
+            ProdInventory cond = new ProdInventory();
+            cond.setProdId(prodInventoryOrderDetail.getProdId());
+            cond.setProdAttrId(prodInventoryOrderDetail.getProdAttrId());
+            cond.setProdAttrId(mercId);
+            List<ProdInventory> listProdInventory = prodInventoryMapper.selectProdInventoryList(cond);
+            Integer addInvQty = prodInventoryOrderDetail.getQuantity();
+            ProdInventoryVo prodInventoryVo = new ProdInventoryVo();
+
+            // 更新商品库存表
+            if (listProdInventory.size() > 0) {
+                BeanUtils.copyBeanProp(prodInventoryVo, listProdInventory.get(0));
+                prodInventoryVo.setIoFlag(EInventoryBillType.STOCKIN.getVal());
+                prodInventoryVo.setAddInvQty(addInvQty);
+                prodInventoryVo.setUpdateUser(ShiroUtils.getLoginName());
+                prodInventoryVo.setUpdateTime(nowDate);
+                effectRows = prodInventoryVoMapper.updateProdInventoryVo(prodInventoryVo);
+            } else {
+                ProdInventory prodInventory = new ProdInventory();
+                prodInventory.setProdId(prodInventoryOrderDetail.getProdId());
+                prodInventory.setProdAttrId(prodInventoryOrderDetail.getProdAttrId());
+                prodInventory.setMercId(mercId);
+                prodInventory.setQuantity(addInvQty);
+                prodInventory.setAvailQty(addInvQty);
+                prodInventory.setDelFlag(EDelFlag.NO.getVal());
+                prodInventory.setCreateUser(ShiroUtils.getLoginName());
+                prodInventory.setCreateTime(nowDate);
+                effectRows = prodInventoryMapper.insertProdInventory(prodInventory);
+                prodInventoryVo = prodInventoryVoMapper.selectProdInventoryVoByProdInventoryId(prodInventoryVo.getProdInventoryId());
+            }
+
+            // 更新商品出入库明细单
+            prodInventoryOrderDetail.setInventoryOrderId(prodInventoryOrderVo.getInventoryOrderId());
+            prodInventoryOrderDetail.setDelFlag(EDelFlag.NO.getVal());
+            prodInventoryOrderDetail.setCreateUser(ShiroUtils.getLoginName());
+            prodInventoryOrderDetail.setCreateTime(nowDate);
+            effectRows += prodInventoryOrderDetailMapper.insertProdInventoryOrderDetail(prodInventoryOrderDetail);
+
+            // 更新商品出入库流水
+            ProdInventoryBill prodInventoryBill = new ProdInventoryBill();
+            prodInventoryBill.setBillTime(nowDate);
+            prodInventoryBill.setBillType(prodInventoryOrderVo.getIoFlag());
+            prodInventoryBill.setInventoryId(prodInventoryVo.getProdInventoryId());
+            prodInventoryBill.setQuantity(addInvQty);
+            prodInventoryBill.setDelFlag(EDelFlag.NO.getVal());
+            prodInventoryBill.setCreateUser(ShiroUtils.getLoginName());
+            prodInventoryBill.setCreateTime(nowDate);
+            effectRows += prodInventoryBillMapper.insertProdInventoryBill(prodInventoryBill);
+        }
+        return effectRows;
+    }
 }

+ 2 - 1
08.src/Xingxi/xingxi-admin/src/main/java/com/xingxi/web/controller/business/ProdInventory/service/impl/ProdInventoryVoServiceImpl.java

@@ -78,6 +78,7 @@ public class ProdInventoryVoServiceImpl implements IProdInventoryVoService {
         // 更新商品库存表
         if (prodInventoryVo.getProdInventoryId() != null) {
             prodInventoryVo = prodInventoryVoMapper.selectProdInventoryVoByProdInventoryId(prodInventoryVo.getProdInventoryId());
+            prodInventoryVo.setIoFlag(EInventoryBillType.STOCKIN.getVal());
             prodInventoryVo.setAddInvQty(addInvQty);
             prodInventoryVo.setUpdateUser(ShiroUtils.getLoginName());
             prodInventoryVo.setUpdateTime(nowDate);
@@ -114,7 +115,7 @@ public class ProdInventoryVoServiceImpl implements IProdInventoryVoService {
         prodInventoryOrderDetail.setCreateUser(ShiroUtils.getLoginName());
         prodInventoryOrderDetail.setCreateTime(nowDate);
         effectRows += prodInventoryOrderDetailMapper.insertProdInventoryOrderDetail(prodInventoryOrderDetail);
-        // 更新商品出入库
+        // 更新商品出入库流水
         ProdInventoryBill prodInventoryBill = new ProdInventoryBill();
         prodInventoryBill.setBillTime(nowDate);
         prodInventoryBill.setBillType(EInventoryBillType.STOCKIN.getVal());

+ 8 - 2
08.src/Xingxi/xingxi-admin/src/main/resources/mapper/ProdInventoryVoMapper.xml

@@ -69,8 +69,14 @@
             <if test="prodId != null">prodId = #{prodId},</if>
             <if test="prodAttrId != null">prodAttrId = #{prodAttrId},</if>
             <if test="mercId != null">mercId = #{mercId},</if>
-            <if test="addInvQty != null">quantity = quantity + #{addInvQty},</if>
-            <if test="addInvQty != null">availQty = availQty + #{addInvQty},</if>
+            <if test="ioFlag == 'stockin'">
+                <if test="addInvQty != null">quantity = quantity + #{addInvQty},</if>
+                <if test="addInvQty != null">availQty = availQty + #{addInvQty},</if>
+            </if>
+            <if test="ioFlag == 'stockout'">
+                <if test="addInvQty != null">quantity = quantity - #{addInvQty},</if>
+                <if test="addInvQty != null">availQty = availQty - #{addInvQty},</if>
+            </if>
             <if test="updateUser != null">updateUser = #{updateUser},</if>
             <if test="updateTime != null">updateTime = #{updateTime},</if>
         </trim>

+ 6 - 2
08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/prodInventory/prodInventoryOrderAdd.html

@@ -23,7 +23,7 @@
                 <div class="form-group">
                     <label class="col-sm-3 control-label">出入库原因:</label>
                     <div class="col-sm-8">
-                        <select name="ioType" class="form-control m-b" th:with="type=${@dict.getType('inventory_bill_reason')}" data-placeholder="出入库原因">
+                        <select id="ioType" name="ioType" class="form-control m-b" th:with="type=${@dict.getType('inventory_bill_reason')}" data-placeholder="出入库原因">
                             <option value="">-</option>
                             <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
                         </select>
@@ -44,7 +44,7 @@
                     <label class="col-sm-3 control-label">出库商户:</label>
                     <div class="col-sm-8">
                         <input type="text" class="merchantSelect form-control" id="outMercName" name="outMercName" th:placeholder="出库商户"/>
-                        <input type="hidden" id="outMercId" name="inId"/>
+                        <input type="hidden" id="outMercId" name="outId"/>
                     </div>
                 </div>
             </div>
@@ -187,6 +187,10 @@
                     $.modal.alertError("选择入库时,请选择入库商户!");
                 } else if ($("#ioFlag").val() === "stockout" && $("#outMercName").val() === "") {
                     $.modal.alertError("选择出库时,请选择出库商户!");
+                } else if ($("#ioFlag").val() === "stockin" && $("#ioType").val().indexOf("IN") < 0) {
+                    $.modal.alertError("入出库标记为入库时,请选择正确的入出库原因!");
+                } else if ($("#ioFlag").val() === "stockout" && $("#ioType").val().indexOf("OUT") < 0) {
+                    $.modal.alertError("入出库标记为出库时,请选择正确的入出库原因!");
                 } else if ($("#outMercName").val() === "" && $("#inMercName").val() === "") {
                     $.modal.alertError("请至少选择一个入库或出库商户!");
                 } else if ($("#outMercName").val() !== "" && $("#inMercName").val() !== "") {

+ 4 - 2
08.src/Xingxi/xingxi-admin/src/main/resources/templates/business/prodInventory/prodInventoryOrderEdit.html

@@ -54,7 +54,7 @@
         </form>
         <div class="col-sm-12">
             <a class="btn btn-success" onclick="selectRows()">
-                <i class="fa fa-plus"></i>增加库存
+                <i class="fa fa-plus"></i>调整库存
             </a>
         </div>
         <div class="col-sm-12 select-table table-striped">
@@ -112,7 +112,9 @@
         function submitHandler() {
             var rows = $('#prod-inv-list-table').bootstrapTable('getData');
             var inventoryOrderDetails = []
-            if (rows.length === 0) {
+            if ($("#prod-list-table").bootstrapTable('getSelections').length === 0) {
+                $.modal.alertError("没有选择配置库存的商品!");
+            } else if (rows.length === 0) {
                 $.modal.alertError("请选择需要增加库存的商品!");
             } else {
                 var hasData = false;