Browse Source

update bug

caifc 3 years ago
parent
commit
19c3067290

+ 72 - 71
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -436,6 +436,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
      * @return 库存总账
      */
     public TWhgenleg queryTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems, String ifCntrno) {
+        // 货转时如果调出操作是10-1且计费日期10-1那么调入的时候也要判断计费日期10-1业务日期10-1,调入之后吧id赋值给费用明细新加字段中
+        // 调拨同理
+
         TWhgenleg tWhgenleg = new TWhgenleg();
         // 客户
         tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
@@ -452,6 +455,14 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         tWhgenleg.setfMarks(warehousebillsitems.getfMarks());
         // 业务日期
         tWhgenleg.setfBsdate(warehousebillsitems.getfBsdate());
+    1
+        1
+                1
+                        1
+                                11
+                                        1
+                                                1
+    1
         if ("1".equals(ifCntrno)) {
             tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());
         }
@@ -3595,6 +3606,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         List<TFees> feesList = new ArrayList<>();
         List<TWarehousebillsfees> warehousebillsfees = new ArrayList<>();
         for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
+            if (StringUtils.isNull(wbItem.getfSrcid())) {
+                throw new WarehouseException("仓储明细找不对库存总帐信息");
+            }
             // 如果业务时间超出当前时间则不允许
             if (wbItem.getfBsdate().after(new Date())) {
                 throw new WarehouseException("业务日期不得超出当前日期");
@@ -3620,90 +3634,77 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 transferWarehouselocid = wbItem.getfTransferWarehouselocid();
 //                wbItem.setfWarehouselocid(transferWarehouselocid);
             }
-            // 查询总账是否存在
-            TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
-
-            if (Objects.nonNull(tWhgenle) && wbItem.getfBsdate().before(tWarehouseBills.getfChargedate())) {
+            // 根据来源编号查出库存总账的信息
+            TWhgenleg tWhgenle = tWhgenlegMapper.selectTWhgenlegById(wbItem.getfSrcid());
+                // 查询总账是否存在
+            if (Objects.isNull(tWhgenle)) {
+                throw new WarehouseException("库存明细第" + i + "行找不到库存信息");
+            }
+            if (wbItem.getfBsdate().before(tWarehouseBills.getfChargedate())) {
                 throw new WarehouseException("业务日期不得超出库存总帐日期");
             }
             //  入库数特殊不判断入账
             if ("SJCK".equals(billsType)) { // 出库 查询
-                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return AjaxResult.error("库存明细第" + i + "行库存为空");
-                } else { // 非空修改库存总账
-                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
-                    checkWhgenleg(wbItem, tWhgenle);
-                    //  库存 <  出库件数
-                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return AjaxResult.error("库存明细第" + i + "行库存不足");
-                    }
-                    // 更新库存总账
-                    updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
-                    if (StringUtils.isNull(tWarehouseBills.getfBsdate()) || StringUtils.isNull(wbItem.getfChargedate())) {
-                        return AjaxResult.error("库存明细第" + i + "行请检查日期,操作终止");
-                    }
-                    DateUtils.getDateDay(tWarehouseBills.getfBsdate(), wbItem.getfChargedate());
-                    if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
-                        return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
-                    }
+                if (StringUtils.isNull(tWarehouseBills.getfBsdate()) || StringUtils.isNull(wbItem.getfChargedate())) {
+                    return AjaxResult.error("库存明细第" + i + "行请检查日期,操作终止");
+                }
+                if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
+                    return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
+                }
+                //校验计费日期是等于库存总帐计费日,如果不相等则报错
+                checkWhgenleg(wbItem, tWhgenle);
+                //  库存 <  出库件数
+                if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
+                    return AjaxResult.error("库存明细第" + i + "行库存不足");
                 }
+                // 更新库存总账
+                updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
                 wbItem.setfBillstatus(40L);
             } else if (WarehouseTypeEnum.CKDB.getType().equals(billsType) || WarehouseTypeEnum.HWTG.getType().equals(billsType)) { // 调拨查询
-                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
+                //校验计费日期是等于库存总帐计费日,如果不相等则报错
+                checkWhgenleg(wbItem, tWhgenle);
+                if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return AjaxResult.error("库存明细第" + i + "行库存为空");
-                } else { // 非空修改库存总账
-                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
-                    checkWhgenleg(wbItem, tWhgenle);
-                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return AjaxResult.error("库存明细第" + i + "行库存不足");
-                    } else {  // 2、 库存足够 先 进行出库操作
-                        wbItem.setfWarehouselocid(warehouselocId);
-                        updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
-                    }
-                    if (WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
-                        tWarehouseBills.setfTrademodeid(tWarehouseBills.getfNewTrademodeid());
-                    }
-                    // 3、 进行入库操作 查询是否存在库存
-                    wbItem.setfWarehouselocid(transferWarehouselocid); // 新库区
-                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
-                    if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
-                        instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
-                    } else { // 4、 存在 进行跟新库存
-                        updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
-                    }
+                    throw new WarehouseException("库存明细第" + i + "行库存不足");
+                } else {  // 2、 库存足够 先 进行出库操作
+                    wbItem.setfWarehouselocid(warehouselocId);
+                    updateTWhgenlegData(wbItem, tWhgenle.getfId(), WarehouseTypeEnum.SJCK.getType());
+                }
+                if (WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
+                    tWarehouseBills.setfTrademodeid(tWarehouseBills.getfNewTrademodeid());
+                }
+                // 3、 进行入库操作 查询是否存在库存
+                wbItem.setfWarehouselocid(transferWarehouselocid); // 新库区
+                // todo:: 需要完善的地方  缺一个字段用来存储 货转新总帐查询
+                TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
+
+                if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
+                    instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
+                } else { // 4、 存在 进行跟新库存
+                    updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
                 }
                 wbItem.setfWarehouselocid(warehouselocId);
                 wbItem.setfBillstatus(40L);
             } else if (WarehouseTypeEnum.HQZY.getType().equals(billsType)) { // 货转
                 wbItem.setfBillstatus(6L);
                 wbItem.setfBillingway(tWarehouseBills.getfBillingway());
-                if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
-                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                    return AjaxResult.error("库存明细第" + i + "行库存为空");
-                } else { // 非空修改库存总账
-                    //校验计费日期是等于库存总帐计费日,如果不相等则报错
-                    checkWhgenleg(wbItem, tWhgenle);
-                    if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
-                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-                        return AjaxResult.error("库存明细第" + i + "行库存不足");
-                    } else {  // 2、 库存足够 先 进行出库操作
-                        updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
-                    }
-                    long corpId = tWarehouseBills.getfCorpid();
-                    tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid());
-                    // 3、 进行入库操作 查询是否存在库存
-                    TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
-                    if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
-                        instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
-                    } else { // 4、 存在 进行跟新库存
-                        updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
-                    }
-                    tWarehouseBills.setfCorpid(corpId);
-                }
+                //校验计费日期是等于库存总帐计费日,如果不相等则报错
+                checkWhgenleg(wbItem, tWhgenle);
+                if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {  //  1、  库存 <  调拨件数  提示库存不足
+                    throw new WarehouseException("库存明细第" + i + "行库存不足");
+                } else {  // 2、 库存足够 先 进行出库操作
+                    updateTWhgenlegData(wbItem, tWhgenle.getfId(), WarehouseTypeEnum.SJCK.getType());
+                }
+                long corpId = tWarehouseBills.getfCorpid();
+                tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid());
+                // 3、 进行入库操作 查询是否存在库存
+                TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
+                if (StringUtils.isNull(tWhgenle1)) {   // 5、 不存在 进行新增库存
+                    instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
+                } else { // 4、 存在 进行跟新库存
+                    updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
+                }
+                tWarehouseBills.setfCorpid(corpId);
             }
             i++;
             int num = 0;
@@ -3715,7 +3716,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 wbItem.setUpdateBy(loginUser.getUser().getUserName());
                 wbItem.setUpdateTime(new Date());
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
-                if ("SJCK".equals(billsType)) {
+                if (WarehouseTypeEnum.SJCK.getType().equals(billsType)) {
                     // 添加状态log
                     insertTWarehousebillsLog(wbItem, 40L, loginUser);
                 }

+ 1 - 0
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -123,6 +123,7 @@
             <if test="fBusinessType != null ">and f_business_type = #{fBusinessType}</if>
             <if test="fMarks != null ">and f_marks = #{fMarks}</if>
             <if test="fBsdate != null ">and f_bsdate = #{fBsdate}</if>
+            <if test="fOriginalbilldate != null ">and f_originalbilldate = #{fOriginalbilldate}</if>
             <if test="fWarehouseLocationid != null ">and f_warehouse_locationid = #{fWarehouseLocationid}</if>
             <if test="fGoodsid != null ">and f_goodsid = #{fGoodsid}</if>
             <if test="fTrademodeid != null ">and f_trademodeid = #{fTrademodeid}</if>