浏览代码

[CODE]: 入库: 计划 10、打印20、卸货30、入库确认40;出库:计划60、打印70、装货80、出库确认90;入库流水号 RKYYMMDDXXX、出库流水号 CKYYMMDDXXX

maxianghua 4 年之前
父节点
当前提交
eae0c006c0

+ 64 - 14
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseInStockController.java

@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.warehouse.warehouseBusiness;
 
 import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
@@ -81,6 +82,7 @@ public class TWarehouseInStockController extends BaseController {
     @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
     @Log(title = "详情主表", businessType = BusinessType.INSERT)
     @PostMapping(value = "/add")
+    @RepeatSubmit
     public AjaxResult add(@RequestParam("tWarehouseBills") String tWarehouseBills,
                           @RequestParam("tWhgenleg") String tWhgenleg,
                           @RequestParam("tWarehousebillsfeesCr") String tWarehousebillsfeesCr,
@@ -93,20 +95,6 @@ public class TWarehouseInStockController extends BaseController {
                 tWarehousebillsfeesDr, tWarehousebillsitems, tWhgenleg, loginUser, billsType);
     }
 
-    /**
-     * 新增入库详情入账
-     */
-    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
-    @Log(title = "详情主表", businessType = BusinessType.INSERT)
-    @PostMapping(value = "/addCredit")
-    public AjaxResult addCredit(@RequestParam("warehouseBills") String warehouseBills,
-                                @RequestParam("warehousebillsitems") String warehousebillsitems,
-                                @RequestParam("whgenleg") String whgenleg) {
-        String billsType = "SJRK";
-        // 获取当前的用户
-        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        return itWarehouseBillsService.addCredit(warehouseBills, warehousebillsitems, whgenleg, loginUser, billsType);
-    }
 
     /**
      * 修改入库详情主表
@@ -154,4 +142,66 @@ public class TWarehouseInStockController extends BaseController {
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.revokeTWarehousebillsById1(warehouseBills, warehousebillsitems, loginUser, billsType);
     }
+
+    /**
+     *  打印作业单  状态 改为 -->  待入库
+     *      生成 流水号 --> log 记录 20
+     *      waitWarehousing
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/waitWarehousing")
+    @RepeatSubmit
+    public AjaxResult waitWarehousing(@RequestParam("warehouseBills") String warehouseBills,
+                                @RequestParam("warehousebillsitems") String warehousebillsitems
+                                ) {
+        String billsType = "20";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType);
+    }
+
+
+    /**
+     *   卸货      状态 改为 -->  卸货中
+     *                   log 记录 30
+     *      ischargeCargo
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/ischargeCargo")
+    @RepeatSubmit
+    public AjaxResult ischargeCargo(@RequestParam("warehouseBills") String warehouseBills,
+                                      @RequestParam("warehousebillsitems") String warehousebillsitems ) {
+        String billsType = "30";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType);
+    }
+
+
+    /**
+     *   入库确认   状态 改为 -->  已入库
+     *                   log 记录 40
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/addCredit")
+    @RepeatSubmit
+    public AjaxResult addCredit(@RequestParam("warehouseBills") String warehouseBills,
+                                @RequestParam("warehousebillsitems") String warehousebillsitems) {
+        String billsType = "SJRK";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.addCredit(warehouseBills, warehousebillsitems, loginUser, billsType);
+    }
+
+
+
+    /**
+     *   请核流程
+     *
+     */
+
+
 }

+ 53 - 14
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseOutStockController.java

@@ -1,6 +1,7 @@
 package com.ruoyi.web.controller.warehouse.warehouseBusiness;
 
 import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.annotation.RepeatSubmit;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
@@ -110,20 +111,6 @@ public class TWarehouseOutStockController extends BaseController {
                 tWarehousebillsfeesDr, tWarehousebillsitems, tWhgenleg, loginUser, billsType);
     }
 
-    /**
-     * 新增出库详情入账
-     */
-    @PreAuthorize("@ss.hasPermi('warehouseBusiness:inStock:add')")
-    @Log(title = "详情主表", businessType = BusinessType.INSERT)
-    @PostMapping(value = "/addCredit")
-    public AjaxResult addCredit(@RequestParam("warehouseBills") String warehouseBills,
-                                @RequestParam("warehousebillsitems") String warehousebillsitems ) {
-
-        String billsType = "SJCK";
-        // 获取当前的用户
-        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        return itWarehouseBillsService.updateCredit(warehouseBills, warehousebillsitems, loginUser, billsType);
-    }
 
     /**
      * 修改出库详情主表
@@ -171,4 +158,56 @@ public class TWarehouseOutStockController extends BaseController {
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.revokeTWarehousebillsById1(warehouseBills, warehousebillsitems, loginUser, billsType);
     }
+
+    /**
+     *  打印作业单  状态 改为 -->  待出库
+     *      生成 流水号 --> log 记录 70
+     *      waitWarehousing
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:outStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/waitWarehousing")
+    @RepeatSubmit
+    public AjaxResult waitWarehousing(@RequestParam("warehouseBills") String warehouseBills,
+                                      @RequestParam("warehousebillsitems") String warehousebillsitems) {
+        String billsType = "70";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType);
+    }
+
+    /**
+     *   装货      状态 改为 -->  装货中
+     *                   log 记录 80
+     *      ischargeCargo
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:outStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/ischargeCargo")
+    @RepeatSubmit
+    public AjaxResult ischargeCargo(@RequestParam("warehouseBills") String warehouseBills,
+                                    @RequestParam("warehousebillsitems") String warehousebillsitems ) {
+        String billsType = "80";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType);
+    }
+
+
+    /**
+     *   出库确认   状态 改为 -->  已出库
+     *                   log 记录 90
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:outStock:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/addCredit")
+    public AjaxResult addCredit(@RequestParam("warehouseBills") String warehouseBills,
+                                @RequestParam("warehousebillsitems") String warehousebillsitems ) {
+        String billsType = "SJCK";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.updateCredit(warehouseBills, warehousebillsitems, loginUser, billsType);
+    }
+
+
 }

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

@@ -90,7 +90,8 @@ public interface ITWarehouseBillsService {
     public AjaxResult revokeTWarehousebillsById(Long fId, LoginUser loginUser, String billsType);
     AjaxResult revokeTWarehousebillsById1(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String billsType);
 
-    AjaxResult addCredit(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType);
+    AjaxResult addCredit(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String billsType);
+
 
     /**
      *   出库 、调拨、 货转 确认
@@ -101,4 +102,14 @@ public interface ITWarehouseBillsService {
      * @return
      */
     AjaxResult updateCredit(String warehouseBills, String warehousebillsitems,  LoginUser loginUser, String billsType);
+
+    /**
+     *   入库 、 出库  修改 从表状态
+     * @param warehouseBills
+     * @param warehousebillsitems
+     * @param loginUser
+     * @param status
+     * @return
+     */
+    AjaxResult waitWarehousing(String warehouseBills, String warehousebillsitems,  LoginUser loginUser , String status );
 }

+ 37 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/BillnoSerialServiceImpl.java

@@ -120,6 +120,43 @@ public class BillnoSerialServiceImpl implements IBillnoSerialService {
     }
 
     /**
+     * 获取入库 出库 流水号
+     * @param billType  编号类型(RK(入库) CK(出库) )
+     * @param time      入库时间
+     * @return  结果
+     */
+    public String getSerialNumber(String billType, Date time) {
+        String billNo = null;
+        String yyMMdd = DateFormatUtils.format(time, "yyMMdd");
+        BillnoSerial billnoSerial = new BillnoSerial();
+        billnoSerial.setBillType(billType);
+        billnoSerial.setBillPrefix(yyMMdd);
+        BillnoSerial billnoSerials = billnoSerialMapper.selectBillnoSerial(billnoSerial);
+        if (StringUtils.isNotNull(billnoSerials)) {
+            if (billnoSerials.getSerial() <= 9) {
+                billNo = yyMMdd +"00" + billnoSerials.getSerial();
+            } else if (billnoSerials.getSerial() <= 99) {
+                billNo =yyMMdd + "0" + billnoSerials.getSerial();
+            } else if (billnoSerials.getSerial() <= 999) {
+                billNo =yyMMdd + "" + billnoSerials.getSerial();
+            }
+            billnoSerials.setSerial(billnoSerials.getSerial() + 1);
+            billnoSerialMapper.updateBillnoSerial(billnoSerials);
+        } else {
+            billNo = yyMMdd + "001";
+            billnoSerial.setSerial(2);
+            billnoSerialMapper.insertBillnoSerial(billnoSerial);
+        }
+
+        if ("RK".equals(billType)) {
+            billNo = "RK" + billNo;
+        } else if ("CK".equals(billType)) {
+            billNo = "CK" + billNo;
+        }
+        return billNo;
+    }
+
+    /**
      * 查询客户存货编号流水号
      *
      * @param id 客户存货编号流水号ID

+ 178 - 239
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -25,6 +25,8 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import java.math.BigDecimal;
 import java.util.*;
 
+import static java.util.stream.Collectors.toList;
+
 /**
  * 详情主表Service业务层处理
  *
@@ -78,6 +80,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     private BillnoDelMapper billnoDelMapper;
 
     @Autowired
+    private TWarehousebillsLogMapper tWarehousebillsLogMapper;
+
+    @Autowired
     private TWarehouseAgreementServiceImpl tWarehouseAgreementService;
 
 
@@ -360,16 +365,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             warehouseBills.setfChargedate(warehouseBills.getfBsdate());
             warehouseBills.setfBilltype(billsType);
             warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
-            /*// 提交时:  生流水号
-            if ("6".equals(warehouseBills.getfBillstatus()) || "7".equals(warehouseBills.getfBillstatus())) {
-                // 业务编码
-                String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());
-                warehouseBills.setfBillno(billNo);
-                // 存货编码
-                Date time = new Date();
-                String bscorpno = billnoSerialServiceImpl.getCorpNo(warehouseBills.getfCorpid(), time);
-                warehouseBills.setfBscorpno(bscorpno);
-            }*/
             // 业务编码
             String billNo = billnoSerialServiceImpl.getBillNo(billsType, warehouseBills.getfBsdate());
             warehouseBills.setfBillno(billNo);
@@ -385,118 +380,46 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             warehouseBills.setUpdateBy(loginUser.getUser().getUserName());
             warehouseBills.setUpdateTime(new Date());
             tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
-            tWarehousebillsitemsMapper.deleteByFPid(fPid);
             tWarehousebillsfeesMapper.deleteByFPid(fPid);
             tEnclosureMapper.deleteByFPid(fPid);
+            // 删除  从表中 未打印账单的数据
+            deleteBillsitems(fPid,tWarehousebillsitems);
         }
-        // 查询库存总账   库存明细不为空 并且 入库不是暂存状态 进行库存总账的查询新增修改
-        if (tWarehousebillsitems != null && !"2".equals(warehouseBills.getfBillstatus())) {
+        // 库存明细添加
+        if (tWarehousebillsitems != null ) {
             JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
             List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
-            int i = 1;
             for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
-                // 查询总账是否存在
-                TWhgenleg tWhgenle = queryTWhgenleg(warehouseBills, wbItem);
-                //  入库数特殊不判断入账
-                if ("SJCK".equals(billsType)) { // 出库 查询
-                    if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return AjaxResult.error("库存明细第" + i + "行库存为空");
-                    } else { // 非空修改库存总账
-                        if ("6".equals(warehouseBills.getfBillstatus())) {
-                            //  库存 <  出库件数  提示库存不足
-                            if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return AjaxResult.error("库存明细第" + i + "行库存不足");
-                            }
-                            updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
-                        }
-                    }
-                } else if ("CKDB".equals(billsType)) { // 调拨查询
-                    if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return AjaxResult.error("库存明细第" + i + "行库存为空");
-                    } else { // 非空修改库存总账
-                        if ("6".equals(warehouseBills.getfBillstatus())) {
-                            if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return AjaxResult.error("库存明细第" + i + "行库存不足");
-                            } else {  // 2、 库存足够 先 进行出库操作
-                                updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
-                            }
-                            // 3、 进行入库操作 查询是否存在库存
-                            warehouseBills.setfCorpid(warehouseBills.getfTocorpid()); // 新货权方
-                            TWhgenleg tWhgenle1 = queryTWhgenleg(warehouseBills, wbItem);
-                            if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
-                                instalTWhgenleg(warehouseBills, wbItem, loginUser.getUser());
-                            } else { // 4、 存在 进行跟新库存
-                                if ("6".equals(warehouseBills.getfBillstatus())) {
-                                    updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
-                                }
-                            }
-                        }
+                // 仓储计费日期
+                wbItem.setfChargedate(warehouseBills.getfChargedate());
+                if(null!=wbItem.getfId()){
+                    wbItem.setUpdateBy(loginUser.getUser().getUserName());
+                    wbItem.setUpdateTime(new Date());
+                    tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
+                }else{
+                    // 添加主表 业务单号
+                    wbItem.setfBillno(warehouseBills.getfBillno());
+                    wbItem.setfMblno(warehouseBills.getfMblno());
+                    wbItem.setfPid(fPid);
+                    wbItem.setCreateBy(loginUser.getUser().getUserName());
+                    wbItem.setCreateTime(new Date());
+                    Long status = null;
+                    if (billsType.equals("SJRK")){
+                        wbItem.setfBillstatus("10");
+                        status=10l;
+                    } else if(billsType.equals("SJCK")){
+                        wbItem.setfBillstatus("60");
+                        status=60l;
                     }
-                } else if ("HQZY".equals(billsType)) { // 货转
-                    if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return AjaxResult.error("库存明细第" + i + "行库存为空");
-                    } else { // 非空修改库存总账
-                        if ("6".equals(warehouseBills.getfBillstatus())) {
-                            if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
-                                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                                return AjaxResult.error("库存明细第" + i + "行库存不足");
-                            } else {  // 2、 库存足够 先 进行出库操作
-                                updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
-                            }
-                            // 3、 进行入库操作 查询是否存在库存
-                            warehouseBills.setfCorpid(warehouseBills.getfTocorpid()); // 新货权方
-                            TWhgenleg tWhgenle1 = queryTWhgenleg(warehouseBills, wbItem);
-                            if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
-                                instalTWhgenleg(warehouseBills, wbItem, loginUser.getUser());
-                            } else { // 4、 存在 进行跟新库存
-                                updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
-                            }
-                        }
+                    tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
+                    if(!billsType.equals("HQZY")){
+                        // 添加状态log
+                        insertTWarehousebillsLog(wbItem, status,loginUser);
                     }
                 }
-                i++;
-            }
-        }
-        // 库存明细添加
-        if (tWarehousebillsitems != null) {
-            JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
-            List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
-            int notInStorage = 0;
-            int Stored = 0;
-            for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
-                if (wbItem.getfBillstatus() == null) {
-                    wbItem.setfBillstatus("1");
-                    notInStorage++;
-                } else if (wbItem.getfBillstatus().equals("6")) {
-                    wbItem.setfBillstatus("6");
-                    Stored++;
-                } else if (wbItem.getfBillstatus().equals("1")) {
-                    wbItem.setfBillstatus("1");
-                    notInStorage++;
-                }
-                wbItem.setfPid(fPid);
-                wbItem.setfMarks(warehouseBills.getfMarks());
-                wbItem.setfMblno(warehouseBills.getfMblno());
-                wbItem.setCreateBy(loginUser.getUser().getUserName());
-                wbItem.setCreateTime(new Date());
-                tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
-            }
-            // 录入库存明细整体状态
-            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);
+            // 录入库存明细整体状态 --> 更新主表 入账状态
+            updateWarehousebillsItemsStatus(warehouseBills);
         }
         //  附件添加
         if (StringUtils.isNotNull(tWhgenleg)) {
@@ -545,14 +468,13 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
      *
      * @param warehouseBills      主表
      * @param warehousebillsitems 明细
-     * @param whgenleg            附件
      * @param loginUser           当前登录人
      * @param billsType           状态
      * @return 结果
      */
     @Override
     @Transactional
-    public AjaxResult addCredit(String warehouseBills, String warehousebillsitems, String whgenleg, LoginUser loginUser, String billsType) {
+    public AjaxResult addCredit(String warehouseBills, String warehousebillsitems,  LoginUser loginUser, String billsType) {
         Long fPid = null;
         if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
             return AjaxResult.error("未找到主表信息");
@@ -565,30 +487,10 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
             tWarehouseBills.setUpdateTime(new Date());
             tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
-            fPid = tWarehouseBills.getfId();
-            tEnclosureMapper.deleteByFPid(fPid);
-        } else {
-            // 业务编码
-            String billNo = billnoSerialServiceImpl.getBillNo(billsType, tWarehouseBills.getfBsdate());
-            tWarehouseBills.setfBillno(billNo);
-            // 存货编码
-            Date time = new Date();
-            String bscorpno = billnoSerialServiceImpl.getCorpNo(tWarehouseBills.getfCorpid(), time);
-            tWarehouseBills.setfBscorpno(bscorpno);
-            tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
-            tWarehouseBills.setCreateTime(new Date());
-            tWarehouseBills.setfBilltype("SJRK");
-            tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
-            // 已入账
-            tWarehouseBills.setfBillstatus("2");
-            tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
-            fPid = tWarehouseBills.getfId();
         }
         JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
         List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
         for (TWarehousebillsitems item : warehousebillsitemsList) {
-            // 唛头添加
-            item.setfMarks(tWarehouseBills.getfMarks());
             item.setfBillingway(tWarehouseBills.getfBillingway());
             item.setfChargedate(tWarehouseBills.getfChargedate());
             TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, item);
@@ -604,15 +506,14 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     return AjaxResult.error("新增库存总账失败");
                 }
             }
-            item.setfPid(fPid);
-            item.setfBillstatus("6");
-            item.setCreateBy(loginUser.getUser().getUserName());
-            item.setCreateTime(new Date());
             int num = 0;
             if (StringUtils.isNotNull(item.getfId())) {
+                item.setfBillstatus("40");
+                item.setUpdateBy(loginUser.getUser().getUserName());
+                item.setUpdateTime(new Date());
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
-            } else {
-                num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
+                // 添加状态log
+                insertTWarehousebillsLog(item,40l,loginUser);
             }
             if (num <= 0) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -620,43 +521,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
         }
         // 查询所有库存明细 修改仓库主表状态
-        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);
-        if (StringUtils.isNotNull(whgenleg) && !"[]".equals(whgenleg)) {
-            JSONArray jsonDrArray = JSONArray.parseArray(whgenleg);
-            List<TEnclosure> tEnclosureList = JSONObject.parseArray(jsonDrArray.toJSONString(), TEnclosure.class);
-            for (TEnclosure tEnclosure : tEnclosureList) {
-                tEnclosure.setfPid(fPid);
-                tEnclosure.setCreateBy(loginUser.getUser().getUserName());
-                tEnclosure.setCreateTime(new Date());
-                tEnclosureMapper.insertTEnclosure(tEnclosure);
-            }
-        }
+        updateWarehousebillsItemsStatus(tWarehouseBills);
         // 添加成功 主键返回 前台
-        return AjaxResult.success("成功", fPid);
+        return AjaxResult.success(warehousebillsitems);
     }
 
     /**
@@ -685,23 +552,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             tWarehouseBills.setUpdateTime(new Date());
             tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
             fPid = tWarehouseBills.getfId();
-            tEnclosureMapper.deleteByFPid(fPid);
-        } else {
-            // 业务编码
-            String billNo = billnoSerialServiceImpl.getBillNo(billsType, tWarehouseBills.getfBsdate());
-            tWarehouseBills.setfBillno(billNo);
-            // 存货编码
-            Date time = new Date();
-            String bscorpno = billnoSerialServiceImpl.getCorpNo(tWarehouseBills.getfCorpid(), time);
-            tWarehouseBills.setfBscorpno(bscorpno);
-            tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
-            tWarehouseBills.setCreateTime(new Date());
-            tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
-            // 已入账
-            tWarehouseBills.setfBillstatus("2");
-            tWarehouseBills.setfBilltype(billsType);
-            tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
-            fPid = tWarehouseBills.getfId();
         }
         JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
         List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
@@ -709,8 +559,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         List<TFees> feesList = new ArrayList<>();
         List<TWarehousebillsfees> warehousebillsfees = new ArrayList<>();
         for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
-            // 唛头添加
-            wbItem.setfMarks(tWarehouseBills.getfMarks());
             // 查询总账是否存在
             TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem);
             //  入库数特殊不判断入账
@@ -805,16 +653,15 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 }
             }
             i++;
-            wbItem.setfPid(fPid);
-            wbItem.setfBillstatus("6");
-            wbItem.setfBsdate(tWarehouseBills.getfBsdate());
-            wbItem.setCreateBy(loginUser.getUser().getUserName());
-            wbItem.setCreateTime(new Date());
             int num = 0;
             if (StringUtils.isNotNull(wbItem.getfId())) {
+                wbItem.setfBillstatus("90");
+                wbItem.setfBsdate(tWarehouseBills.getfBsdate());
+                wbItem.setUpdateBy(loginUser.getUser().getUserName());
+                wbItem.setUpdateTime(new Date());
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
-            } else {
-                num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
+                // 添加状态log
+                insertTWarehousebillsLog(wbItem,90l,loginUser);
             }
             if (num <= 0) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -822,31 +669,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
         }
         // 查询所有库存明细 修改仓库主表状态
-        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);
+        updateWarehousebillsItemsStatus(tWarehouseBills);
         map.put("fPid", fPid);
         map.put("fees", feesList);
         map.put("warehousebillsfees", warehousebillsfees);
@@ -854,6 +677,66 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         return AjaxResult.success("成功", map);
     }
 
+
+    @Override
+    public AjaxResult waitWarehousing(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String status) {
+        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);
+        if (StringUtils.isNotNull(tWarehouseBills.getfId())) {
+            tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
+            tWarehouseBills.setUpdateTime(new Date());
+            tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
+        }
+        JSONArray warehouseJSON = JSONArray.parseArray(warehousebillsitems);
+        List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
+        for (TWarehousebillsitems item : warehousebillsitemsList) {
+            // 生成流水号
+            Date time = new Date();
+            String serialNumber;
+            if(status.equals("20")){ // 生成 入库 流水号
+                 serialNumber = billnoSerialServiceImpl.getSerialNumber("RK", time);
+                 item.setfSerialNumber(serialNumber);
+            } else if (status.equals("70")){ //生成 出库 流水号
+                 serialNumber = billnoSerialServiceImpl.getSerialNumber("CK", time);
+                 item.setfSerialNumber(serialNumber);
+            }
+            int num = 0;
+            if (StringUtils.isNotNull(item.getfId())) {
+                item.setfBillstatus(status);
+                item.setUpdateTime(new Date());
+                item.setUpdateBy(loginUser.getUser().getUserName());
+                num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
+                // 添加状态log
+                insertTWarehousebillsLog(item,Long.parseLong(status),loginUser);
+            } else {
+                item.setfPid(tWarehouseBills.getfId());
+                item.setfBillno(tWarehouseBills.getfBillno());
+                item.setfBillstatus(status);
+                item.setCreateTime(new Date());
+                item.setCreateBy(loginUser.getUser().getUserName());
+                num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
+                // 添加状态log
+                if(status.equals("20")){
+                    insertTWarehousebillsLog(item,10L,loginUser);
+                } else if(status.equals("70")){
+                    insertTWarehousebillsLog(item,60L,loginUser);
+                }
+                insertTWarehousebillsLog(item,Long.parseLong(status),loginUser);
+            }
+            if (num <= 0) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return AjaxResult.error("更新库存明细失败");
+            }
+        }
+        // 返回从表数据明细
+        return AjaxResult.success(warehousebillsitems);
+    }
+
     // 入库 收费明细 校验
     public Long check(BigDecimal number, BigDecimal unitPrice) {
         BigDecimal result1 = number.multiply(unitPrice);
@@ -1086,33 +969,89 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 }
             }
         }
+        updateWarehousebillsItemsStatus(tWarehousebills);
+        return AjaxResult.success();
+    }
+
+    /**
+     *   主表、库存明细表 更新 入账状态
+     */
+    public  void  updateWarehousebillsItemsStatus(TWarehouseBills warehouseBill){
         // 查询所有库存明细 修改仓库主表状态
         int notInStorage = 0;
         int Stored = 0;
         TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
-        tWarehousebillsitems.setfPid(fPid);
+        tWarehousebillsitems.setfPid(warehouseBill.getfId());
         List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
         for (TWarehousebillsitems item : warehousebillsitemsList1) {
-            if (item.getfBillstatus() == null) {
-                notInStorage++;
-            } else if (item.getfBillstatus().equals("6")) {
+             if (item.getfBillstatus().equals("40") | item.getfBillstatus().equals("90")) {
                 Stored++;
-            } else if (item.getfBillstatus().equals("1")) {
+            } else {
                 notInStorage++;
             }
         }
+
         // 录入库存明细整体状态
-        TWarehouseBills warehouseBill = new TWarehouseBills();
-        warehouseBill.setfId(fPid);
+        TWarehouseBills warehouseBill1 = new TWarehouseBills();
+        warehouseBill1.setfId(warehouseBill.getfId());
         if (Objects.equals(Stored, 0)) { // 未入库
-            warehouseBill.setfItemsStatus("1");
+            warehouseBill1.setfItemsStatus("1");
         } else if (Objects.equals(notInStorage, 0)) { // 已入库
-            warehouseBill.setfItemsStatus("6");
+            warehouseBill1.setfItemsStatus("6");
         } else { // 有已入库、有未入库
-            warehouseBill.setfItemsStatus("2");
+            warehouseBill1.setfItemsStatus("2");
         }
-        tWarehouseBillsMapper.updateTWarehousebills(warehouseBill);
-        return AjaxResult.success();
+        tWarehouseBillsMapper.updateTWarehousebills(warehouseBill1);
+    }
+
+    /**
+     *  添加 库存明细状态
+     * @param wbItem
+     * @param status
+     * @param loginUser
+     */
+    public  void  insertTWarehousebillsLog(TWarehousebillsitems wbItem,Long status,LoginUser loginUser){
+        // 添加状态log
+        TWarehousebillsLog tWarehousebillsLog =new TWarehousebillsLog();
+        tWarehousebillsLog.setfPid(wbItem.getfPid());
+        tWarehousebillsLog.setfItmeid(wbItem.getfId());
+        tWarehousebillsLog.setfItmestatus(status);
+        tWarehousebillsLog.setCreateTime(new Date());
+        tWarehousebillsLog.setCreateBy(loginUser.getUser().getUserName());
+        tWarehousebillsLogMapper.insertTWarehousebillsLog(tWarehousebillsLog);
+    }
+
+    /**
+     *   删除 库存明细
+     * @param fid
+     * @param tWarehousebillsitems
+     */
+    public  void  deleteBillsitems(Long fid,String tWarehousebillsitems){
+        List<Long> oldList = new ArrayList<Long>();
+        List<Long> newList = new ArrayList<Long>();
+
+        // 查询所有从表数据
+        TWarehousebillsitems tWarehousebillsitem = new TWarehousebillsitems();
+        tWarehousebillsitem.setfPid(fid);
+        List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitem);
+        warehousebillsitemsList.forEach(wb ->
+                oldList.add(wb.getfId())
+        );
+
+        // 获取提交从表数据ID
+        if (tWarehousebillsitems != null ) {
+            JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
+            List<TWarehousebillsitems> warehousebillsitemsLists = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
+            warehousebillsitemsLists.forEach(wb->
+                    newList.add(wb.getfId())
+            );
+        }
+
+        // 删除多余的ID
+        List<Long> reduce1 = oldList.stream().filter(item -> !newList.contains(item)).collect(toList());
+        reduce1.forEach(id ->
+                tWarehousebillsitemsMapper.deleteByFPid(id)
+        );
     }
 
 }

+ 1 - 1
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsitemsMapper.xml

@@ -297,7 +297,7 @@
     </delete>
 
     <delete id="deleteByFPid" parameterType="Long">
-        delete from t_warehousebillsitems where f_pid = #{fId}
+        delete from t_warehousebillsitems where f_id = #{fId}
     </delete>
 
 </mapper>