فهرست منبع

[CODE]: 入库、出库、货转 撤销入账

maxianghua 4 سال پیش
والد
کامیت
696c5a5ac0

+ 15 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseGoodsTransferController.java

@@ -155,4 +155,19 @@ public class TWarehouseGoodsTransferController extends BaseController {
         return itWarehouseBillsService.revokeTWarehousebillsById(fId,loginUser,billsType);
     }
 
+    /**
+     * 撤销出库库
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:goodsTransfer:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/updateCredit")
+    public AjaxResult deleteCredit(@RequestParam("warehouseBills") String warehouseBills,
+                                   @RequestParam("warehousebillsitems") String warehousebillsitems,
+                                   @RequestParam("whgenleg") String whgenleg) {
+        String billsType = "HQZYRevoke";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.revokeTWarehousebillsById1(warehouseBills, warehousebillsitems, whgenleg, loginUser, billsType);
+    }
+
 }

+ 15 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java

@@ -140,4 +140,19 @@ public class TWarehouseInStockController extends BaseController {
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.revokeTWarehousebillsById(fId, loginUser, billsType);
     }
+
+    /**
+     * 撤销入库
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/updateCredit")
+    public AjaxResult deleteCredit(@RequestParam("warehouseBills") String warehouseBills,
+                                @RequestParam("warehousebillsitems") String warehousebillsitems,
+                                @RequestParam("whgenleg") String whgenleg) {
+        String billsType = "SJRKRevoke";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.revokeTWarehousebillsById1(warehouseBills, warehousebillsitems, whgenleg, loginUser, billsType);
+    }
 }

+ 16 - 1
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseOutStockController.java

@@ -148,7 +148,7 @@ public class TWarehouseOutStockController extends BaseController {
     /**
      *  撤销出库信息
      */
-    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:revoke')")
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:outStock:revoke')")
     @Log(title = "详情主表", businessType = BusinessType.UPDATE)
     @GetMapping("/get/{fId}")
     public AjaxResult revoke(@PathVariable("fId") Long fId) {
@@ -157,4 +157,19 @@ public class TWarehouseOutStockController extends BaseController {
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.revokeTWarehousebillsById(fId,loginUser,billsType);
     }
+
+    /**
+     * 撤销出库库
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:outStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/updateCredit")
+    public AjaxResult deleteCredit(@RequestParam("warehouseBills") String warehouseBills,
+                                   @RequestParam("warehousebillsitems") String warehousebillsitems,
+                                   @RequestParam("whgenleg") String whgenleg) {
+        String billsType = "SJCKRevoke";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.revokeTWarehousebillsById1(warehouseBills, warehousebillsitems, whgenleg, loginUser, billsType);
+    }
 }

+ 1 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -88,6 +88,7 @@ public interface ITWarehouseBillsService {
      * @return
      */
     public AjaxResult revokeTWarehousebillsById(Long fId, LoginUser loginUser, String billsType);
+    AjaxResult revokeTWarehousebillsById1(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType);
 
     AjaxResult addCredit(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType);
 

+ 112 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -935,8 +935,119 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
         }
         return AjaxResult.success();
-
     }
 
 
+    /**
+     * 撤销入账
+     *
+     * @param warehouseBills      主表
+     * @param warehousebillsitems 明细
+     * @param whgenleg            附件
+     * @param loginUser           当前登录人
+     * @param billsType           状态
+     * @return 结果
+     */
+    @Override
+    @Transactional
+    public AjaxResult revokeTWarehousebillsById1(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType) {
+        Long fPid = null;
+        if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
+            return AjaxResult.error("未找到主表信息");
+        }
+        if (StringUtils.isNull(warehousebillsitems) || "[]".equals(warehousebillsitems)) {
+            return AjaxResult.error("未找到入账信息");
+        }
+        TWarehouseBills tWarehousebills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
+        fPid = tWarehousebills.getfId();
+        JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
+        List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
+        if (StringUtils.isNotEmpty(warehousebillsitemsList)) {
+            int i = 1;
+            for (TWarehousebillsitems wb : warehousebillsitemsList) {
+                // 查询库存总账
+                TWhgenleg tWhgenle = queryTWhgenleg(tWarehousebills, wb);
+                if ("SJRKRevoke".equals(billsType)) { // 撤销 入库
+                    if (StringUtils.isNotNull(tWhgenle) && (wb.getfQty() <= tWhgenle.getfQtyblc())) { // 非空 且 撤销数 <= 结余数
+                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
+                    } else { // 撤销数>结余数
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
+                    }
+                } else if ("SJCKRevoke".equals(billsType)) { // 撤销出库
+                    if (StringUtils.isNotNull(tWhgenle)) { // 非空
+                        updateTWhgenlegData(wb, tWhgenle.getfId(), billsType);
+                    } else {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("第" + i + "行未查询到库存信息");
+                    }
+                } else if ("CKDBRevoke".equals(billsType)) { // 调拨 撤销
+                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方
+                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方
+                    //  1、新货权方撤销入库
+                    // 查询库存总账
+                    tWarehousebills.setfCorpid(fTocorpid);
+                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
+                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
+                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
+                    } else {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
+                    }
+                    //  2、原货权方撤销出库
+                    // 查询库存总账
+                    tWarehousebills.setfCorpid(fCorpid);
+                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
+                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
+                } else if ("HQZYRevoke".equals(billsType)) { // 货转撤销 HQZYRevoke
+                    Long fCorpid = tWarehousebills.getfCorpid();// 原货权方
+                    Long fTocorpid = tWarehousebills.getfTocorpid(); // 新货权方
+                    //  1、新货权方撤销入库
+                    // 查询库存总账
+                    tWarehousebills.setfCorpid(fTocorpid);
+                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehousebills, wb);
+                    if (StringUtils.isNotNull(tWhgenle1) && (wb.getfQty() <= tWhgenle1.getfQtyblc())) {
+                        updateTWhgenlegData(wb, tWhgenle1.getfId(), "SJRKRevoke");
+                    } else {
+                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                        return AjaxResult.error("第" + i + "行撤销数大于库存结余数");
+                    }
+                    //  2、原货权方撤销出库
+                    // 查询库存总账
+                    tWarehousebills.setfCorpid(fCorpid);
+                    TWhgenleg tWhgenle2 = queryTWhgenleg(tWarehousebills, wb);
+                    updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
+                }
+                i++;
+            }
+        }
+        // 查询所有库存明细 修改仓库主表状态
+        int notInStorage = 0;
+        int Stored = 0;
+        TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
+        tWarehousebillsitems.setfPid(fPid);
+        List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
+        for (TWarehousebillsitems item : warehousebillsitemsList1) {
+            if (item.getfBillstatus() == null) {
+                notInStorage++;
+            } else if (item.getfBillstatus().equals("6")) {
+                Stored++;
+            } else if (item.getfBillstatus().equals("1")) {
+                notInStorage++;
+            }
+        }
+        // 录入库存明细整体状态
+        TWarehouseBills warehouseBill = new TWarehouseBills();
+        warehouseBill.setfId(fPid);
+        if (Objects.equals(Stored, 0)) { // 未入库
+            warehouseBill.setfItemsStatus("1");
+        } else if (Objects.equals(notInStorage, 0)) { // 已入库
+            warehouseBill.setfItemsStatus("6");
+        } else { // 有已入库、有未入库
+            warehouseBill.setfItemsStatus("2");
+        }
+        tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);
+        return AjaxResult.success();
+    }
+
 }