瀏覽代碼

提交仓储费计算方法,修改仓库模块状态字段 类型为Long

阿伏兔 4 年之前
父節點
當前提交
12dca5d637

+ 27 - 5
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TStorageFeeCalculationController.java

@@ -4,9 +4,14 @@ 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;
 import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.ServletUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.utils.spring.SpringUtils;
+import com.ruoyi.framework.web.service.TokenService;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -70,13 +75,30 @@ public class TStorageFeeCalculationController extends BaseController {
     @Log(title = "详情主表", businessType = BusinessType.INSERT)
     @PostMapping(value = "/add")
     @RepeatSubmit
-    public AjaxResult add(@RequestBody TWarehouseBills tWarehouseBills) {
-        System.out.println(tWarehouseBills.toString());
+    public AjaxResult add(@RequestParam("warehouseBills") String warehouseBills,
+                          @RequestParam("warehouseItems") String warehouseItems,
+                          @RequestParam("warehouseFees") String warehouseFees) {
+        if (StringUtils.isNull(warehouseBills) || "{}".equals(warehouseBills)) {
+            return AjaxResult.error("找不到主表信息");
+        }
         String billsType = "CCF";
         // 获取当前的用户
-//        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-//        return itWarehouseBillsService.insertStorageFeeCalculation(tWarehouseBills, loginUser, billsType);
-        return null;
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.insertStorageFee(warehouseBills, warehouseItems, warehouseFees, loginUser, billsType);
+    }
+
+    /**
+     * 库存费计算
+     */
+    @PreAuthorize("@ss.hasPermi('warehouseBusiness:storageFeeCalculation:add')")
+    @Log(title = "详情主表", businessType = BusinessType.INSERT)
+    @PostMapping(value = "/calculateFees")
+    @RepeatSubmit
+    public AjaxResult calculateFees(@RequestBody TWarehouseBills tWarehouseBills) {
+        String billsType = "CCF";
+        // 获取当前的用户
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        return itWarehouseBillsService.calculateStorageFees(tWarehouseBills, loginUser, billsType);
     }
 
     /**

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

@@ -155,10 +155,10 @@ public class TWarehouseInStockController extends BaseController {
     public AjaxResult waitWarehousing(@RequestParam("warehouseBills") String warehouseBills,
                                 @RequestParam("warehousebillsitems") String warehousebillsitems
                                 ) {
-        String billsType = "20";
+        Long billsType = 20L;
         // 获取当前的用户
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
-        return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType,"20");
+        return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType, "20");
     }
 
 
@@ -173,7 +173,7 @@ public class TWarehouseInStockController extends BaseController {
     @RepeatSubmit
     public AjaxResult ischargeCargo(@RequestParam("warehouseBills") String warehouseBills,
                                       @RequestParam("warehousebillsitems") String warehousebillsitems ) {
-        String billsType = "30";
+        Long billsType = 30L;
         // 获取当前的用户
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType,"1");

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

@@ -170,7 +170,7 @@ public class TWarehouseOutStockController extends BaseController {
     @RepeatSubmit
     public AjaxResult waitWarehousing(@RequestParam("warehouseBills") String warehouseBills,
                                       @RequestParam("warehousebillsitems") String warehousebillsitems) {
-        String billsType = "20";
+        Long billsType = 20L;
         // 获取当前的用户
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType , "70");
@@ -187,7 +187,7 @@ public class TWarehouseOutStockController extends BaseController {
     @RepeatSubmit
     public AjaxResult ischargeCargo(@RequestParam("warehouseBills") String warehouseBills,
                                     @RequestParam("warehousebillsitems") String warehousebillsitems ) {
-        String billsType = "30";
+        Long billsType = 30L;
         // 获取当前的用户
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.waitWarehousing(warehouseBills, warehousebillsitems,  loginUser, billsType,"1");

+ 8 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/mapper/TWhgenlegMapper.java

@@ -2,6 +2,7 @@ package com.ruoyi.reportManagement.mapper;
 
 
 import com.ruoyi.reportManagement.domain.TWhgenleg;
+import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -91,4 +92,11 @@ public interface TWhgenlegMapper {
     List<Map<String, Object>> selectCorpsListWhouse(Long fId);
 
     List<Map<String, Object>> selectDateFQtyblcListList(@Param("map") Map<String, Object> map);
+
+    /**
+     *  查询库存总账计算仓储费
+     * @param tWarehouseBills
+     * @return
+     */
+    List<TWhgenleg> selectStorageFeeItemList(@Param("warehouse") TWarehouseBills tWarehouseBills);
 }

+ 6 - 6
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehouseBills.java

@@ -258,13 +258,13 @@ public class TWarehouseBills extends BaseEntity {
      * 状态(数据字典),N 入(出)库中,T入(出)库完成,状态为完成不能删除,状态变化,用邮件、微信通知客户。
      */
     @Excel(name = "状态(数据字典),N 入", readConverterExp = "出=")
-    private String fBillstatus;
+    private Long fBillstatus;
 
     /**
      *  库存明细 1 未入账  2 未完成所有入账  6  已入账
      */
     @Excel(name = "库存明细状态")
-    private String fItemsStatus;
+    private Long fItemsStatus;
 
     /**
      *  仓储费计费截至日期
@@ -612,11 +612,11 @@ public class TWarehouseBills extends BaseEntity {
         return fBilltype;
     }
 
-    public void setfBillstatus(String fBillstatus) {
+    public void setfBillstatus(Long fBillstatus) {
         this.fBillstatus = fBillstatus;
     }
 
-    public String getfBillstatus() {
+    public Long getfBillstatus() {
         return fBillstatus;
     }
 
@@ -628,11 +628,11 @@ public class TWarehouseBills extends BaseEntity {
         return delFlag;
     }
 
-    public String getfItemsStatus() {
+    public Long getfItemsStatus() {
         return fItemsStatus;
     }
 
-    public void setfItemsStatus(String fItemsStatus) {
+    public void setfItemsStatus(Long fItemsStatus) {
         this.fItemsStatus = fItemsStatus;
     }
 

+ 3 - 3
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsLog.java

@@ -32,7 +32,7 @@ public class TWarehousebillsLog extends BaseEntity
 
     /** 0正常 、1 删除 */
     @Excel(name = "0正常 、1 删除")
-    private String fBillstatus;
+    private Long fBillstatus;
 
     public void setfId(Long fId) 
     {
@@ -70,12 +70,12 @@ public class TWarehousebillsLog extends BaseEntity
     {
         return fItmestatus;
     }
-    public void setfBillstatus(String fBillstatus) 
+    public void setfBillstatus(Long fBillstatus)
     {
         this.fBillstatus = fBillstatus;
     }
 
-    public String getfBillstatus() 
+    public Long getfBillstatus()
     {
         return fBillstatus;
     }

+ 22 - 22
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsfees.java

@@ -51,7 +51,7 @@ public class TWarehousebillsfees extends BaseEntity {
      * 计价单位(数据字典),对应,t_unitfees f_id,如果选择为毛重,数量(f_qty)取主表的毛重,如果选择净重,取主表的净重,如果为箱量,取主表的箱量
      */
     @Excel(name = "计价单位(数据字典),对应,t_unitfees f_id,如果选择为毛重,数量", readConverterExp = "f=_qty")
-    private Long fFeeunitid;
+    private Long fFeeUnitid;
 
     /**
      * 数量
@@ -69,7 +69,7 @@ public class TWarehousebillsfees extends BaseEntity {
      * 金额,2位小数f_qty* f_amount
      */
     @Excel(name = "金额,2位小数f_qty* f_amount")
-    private Long fAmount;
+    private BigDecimal fAmount;
 
     /**
      * 币别
@@ -99,13 +99,13 @@ public class TWarehousebillsfees extends BaseEntity {
      * 状态,N 录入,F审核中,T审核通过,只有录入状态的数据可以修改
      */
     @Excel(name = "状态,N 录入,F审核中,T审核通过,只有录入状态的数据可以修改")
-    private String fBillstatus;
+    private Long fBillstatus;
 
     /**
      * 对账金额
      */
     @Excel(name = "对账金额")
-    private Long fAccamount;
+    private BigDecimal fAccamount;
 
     /**
      * 对账单号
@@ -117,7 +117,7 @@ public class TWarehousebillsfees extends BaseEntity {
      * 结算金额
      */
     @Excel(name = "结算金额")
-    private Long fStlamount;
+    private BigDecimal fStlamount;
 
     /**
      * 发票号
@@ -136,7 +136,7 @@ public class TWarehousebillsfees extends BaseEntity {
      * 开票金额
      */
     @Excel(name = "开票金额")
-    private Long fInvamount;
+    private BigDecimal fInvamount;
 
     /**
      * 结算单号
@@ -148,7 +148,7 @@ public class TWarehousebillsfees extends BaseEntity {
      * 申请金额
      */
     @Excel(name = "申请金额")
-    private Long fAskamount;
+    private BigDecimal fAskamount;
 
     /**
      * 结算日期
@@ -208,12 +208,12 @@ public class TWarehousebillsfees extends BaseEntity {
         return fFeeid;
     }
 
-    public void setfFeeunitid(Long fFeeunitid) {
-        this.fFeeunitid = fFeeunitid;
+    public void setfFeeunitid(Long fFeeUnitid) {
+        this.fFeeUnitid = fFeeUnitid;
     }
 
     public Long getfFeeunitid() {
-        return fFeeunitid;
+        return fFeeUnitid;
     }
 
     public void setfQty(BigDecimal fQty) {
@@ -232,11 +232,11 @@ public class TWarehousebillsfees extends BaseEntity {
         return fUnitprice;
     }
 
-    public void setfAmount(Long fAmount) {
+    public void setfAmount(BigDecimal fAmount) {
         this.fAmount = fAmount;
     }
 
-    public Long getfAmount() {
+    public BigDecimal getfAmount() {
         return fAmount;
     }
 
@@ -272,19 +272,19 @@ public class TWarehousebillsfees extends BaseEntity {
         return fDc;
     }
 
-    public void setfBillstatus(String fBillstatus) {
+    public void setfBillstatus(Long fBillstatus) {
         this.fBillstatus = fBillstatus;
     }
 
-    public String getfBillstatus() {
+    public Long getfBillstatus() {
         return fBillstatus;
     }
 
-    public void setfAccamount(Long fAccamount) {
+    public void setfAccamount(BigDecimal fAccamount) {
         this.fAccamount = fAccamount;
     }
 
-    public Long getfAccamount() {
+    public BigDecimal getfAccamount() {
         return fAccamount;
     }
 
@@ -296,11 +296,11 @@ public class TWarehousebillsfees extends BaseEntity {
         return fStatementNo;
     }
 
-    public void setfStlamount(Long fStlamount) {
+    public void setfStlamount(BigDecimal fStlamount) {
         this.fStlamount = fStlamount;
     }
 
-    public Long getfStlamount() {
+    public BigDecimal getfStlamount() {
         return fStlamount;
     }
 
@@ -320,11 +320,11 @@ public class TWarehousebillsfees extends BaseEntity {
         return fAccamountDate;
     }
 
-    public void setfInvamount(Long fInvamount) {
+    public void setfInvamount(BigDecimal fInvamount) {
         this.fInvamount = fInvamount;
     }
 
-    public Long getfInvamount() {
+    public BigDecimal getfInvamount() {
         return fInvamount;
     }
 
@@ -336,11 +336,11 @@ public class TWarehousebillsfees extends BaseEntity {
         return fStlamountNo;
     }
 
-    public void setfAskamount(Long fAskamount) {
+    public void setfAskamount(BigDecimal fAskamount) {
         this.fAskamount = fAskamount;
     }
 
-    public Long getfAskamount() {
+    public BigDecimal getfAskamount() {
         return fAskamount;
     }
 

+ 3 - 3
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsitems.java

@@ -185,7 +185,7 @@ public class TWarehousebillsitems extends BaseEntity {
      * 状态,N 入(出)库中,T入(出)库完成,状态为完成不能删除,状态变化,用邮件、微信通知客户。
      */
     @Excel(name = "状态,N 入", readConverterExp = "出=")
-    private String fBillstatus;
+    private Long fBillstatus;
 
     /**
      * 删除状态
@@ -481,11 +481,11 @@ public class TWarehousebillsitems extends BaseEntity {
         return fTruckno;
     }
 
-    public void setfBillstatus(String fBillstatus) {
+    public void setfBillstatus(Long fBillstatus) {
         this.fBillstatus = fBillstatus;
     }
 
-    public String getfBillstatus() {
+    public Long getfBillstatus() {
         return fBillstatus;
     }
 

+ 9 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehousebillsitemsMapper.java

@@ -2,7 +2,9 @@ package com.ruoyi.warehouseBusiness.mapper;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsitems;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -65,4 +67,11 @@ public interface TWarehousebillsitemsMapper extends BaseMapper<TWarehousebillsit
     int deleteByFPid(Long fId);
 
     List<Map<String, Object>> selectGoodsTransferitemsList(TWarehousebillsitems tWarehousebillsitems);
+
+    /**
+     * 新增库存费计算
+     * @param tWarehouseBills 查询条件
+     * @return  结果
+     */
+    List<TWarehousebillsitems> selectStorageFeeItemList(@Param("warehouse") TWarehouseBills tWarehouseBills);
 }

+ 21 - 2
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java

@@ -92,7 +92,6 @@ public interface ITWarehouseBillsService {
 
     AjaxResult addCredit(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String billsType);
 
-
     /**
      *   出库 、调拨、 货转 确认
      * @param warehouseBills
@@ -111,5 +110,25 @@ public interface ITWarehouseBillsService {
      * @param status
      * @return
      */
-    AjaxResult waitWarehousing(String warehouseBills, String warehousebillsitems,  LoginUser loginUser , String status ,String billtystatus );
+    AjaxResult waitWarehousing(String warehouseBills, String warehousebillsitems,  LoginUser loginUser , Long status, String billtystatus);
+
+    /**
+     *  计算仓储费
+     * @param tWarehouseBills
+     * @param loginUser
+     * @param billsType
+     * @return
+     */
+    AjaxResult calculateStorageFees(TWarehouseBills tWarehouseBills, LoginUser loginUser, String billsType);
+
+    /**
+     *  仓储费计算提交以及暂存
+     * @param warehouseBills
+     * @param warehouseItems
+     * @param warehouseFees
+     * @param loginUser
+     * @param billsType
+     * @return
+     */
+    AjaxResult insertStorageFee(String warehouseBills, String warehouseItems, String warehouseFees, LoginUser loginUser, String billsType);
 }

+ 4 - 5
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseAgreementServiceImpl.java

@@ -260,7 +260,7 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
                                                Long fGoodsid,
                                                Long days,
                                                Long feeUnitid,
-                                               Long itemNums,
+                                               BigDecimal itemNums,
                                                Long earlySumDays) {
         Map<String, Object> map = new HashMap<>();
         if (null == fCorpid ||
@@ -293,7 +293,7 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
                 days = days - dayLength;
             } else {
                 feeId = tWarehouseAgreementitems.getfFeeid();
-                money = money.add(this.getCalculate(itemNums,feeUnitid,days));
+                money = money.add(this.getCalculate(itemNums,tWarehouseAgreementitems.getfPrice(),days));
             }
         }
         map.put("amt", money);
@@ -304,14 +304,13 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
 
     /**
      * 数量 * 单价 * 天数
-     * @param itemNums 数量
+     * @param itemNumsBig 数量
      * @param unitPrice 单价
      * @param dateLength  天数
      * @return
      */
-    public BigDecimal getCalculate (Long itemNums,Long unitPrice,Long dateLength) {
+    public BigDecimal getCalculate (BigDecimal itemNumsBig,Long unitPrice,Long dateLength) {
         BigDecimal money = new BigDecimal(0);
-        BigDecimal itemNumsBig = new BigDecimal(itemNums);
         BigDecimal unitPriceBig = new BigDecimal(unitPrice);
         BigDecimal bigDaysBig = new BigDecimal(dateLength);
         money = itemNumsBig.multiply(unitPriceBig).multiply(bigDaysBig);

+ 316 - 15
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.ruoyi.basicData.domain.*;
 import com.ruoyi.basicData.mapper.*;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.utils.DateUtils;
@@ -13,6 +14,7 @@ import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.reportManagement.domain.TWhgenleg;
 import com.ruoyi.reportManagement.mapper.TWhgenlegMapper;
 import com.ruoyi.system.mapper.SysDeptMapper;
+import com.ruoyi.system.mapper.SysDictDataMapper;
 import com.ruoyi.system.mapper.SysUserMapper;
 import com.ruoyi.warehouseBusiness.domain.*;
 import com.ruoyi.warehouseBusiness.mapper.*;
@@ -59,6 +61,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     private TWarehouseMapper tWarehouseMapper;
 
     @Autowired
+    private SysDictDataMapper sysDictDataMapper;
+
+    @Autowired
     private TWarehouseAreaMapper tWarehouseAreaMapper;
 
     @Autowired
@@ -406,11 +411,11 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     wbItem.setfPid(fPid);
                     wbItem.setCreateBy(loginUser.getUser().getUserName());
                     wbItem.setCreateTime(new Date());
-                    wbItem.setfBillstatus("10");
+                    wbItem.setfBillstatus(10L);
                     tWarehousebillsitemsMapper.insertTWarehousebillsitems(wbItem);
                     if(!billsType.equals("HQZY")){
                         // 添加状态log
-                        insertTWarehousebillsLog(wbItem, 10l,loginUser);
+                        insertTWarehousebillsLog(wbItem, 10L,loginUser);
                     }
                 }
                 tWarehousebillsitemsList.add(wbItem);
@@ -514,12 +519,12 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
             int num = 0;
             if (StringUtils.isNotNull(item.getfId())) {
-                item.setfBillstatus("40");
+                item.setfBillstatus(40L);
                 item.setUpdateBy(loginUser.getUser().getUserName());
                 item.setUpdateTime(new Date());
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
                 // 添加状态log
-                insertTWarehousebillsLog(item,40l,loginUser);
+                insertTWarehousebillsLog(item,40L,loginUser);
             }
             if (num <= 0) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -661,14 +666,14 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             i++;
             int num = 0;
             if (StringUtils.isNotNull(wbItem.getfId())) {
-                wbItem.setfBillstatus("40");
+                wbItem.setfBillstatus(40L);
                 wbItem.setfBsdate(tWarehouseBills.getfBsdate());
                 wbItem.setUpdateBy(loginUser.getUser().getUserName());
                 wbItem.setUpdateTime(new Date());
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
                 if("SJCK".equals(billsType)){
                     // 添加状态log
-                    insertTWarehousebillsLog(wbItem,40l,loginUser);
+                    insertTWarehousebillsLog(wbItem,40L,loginUser);
                 }
             }
             if (num <= 0) {
@@ -687,7 +692,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
 
 
     @Override
-    public AjaxResult waitWarehousing(String warehouseBills, String warehousebillsitems, LoginUser loginUser, String status,String billtystatus) {
+    public AjaxResult waitWarehousing(String warehouseBills, String warehousebillsitems, LoginUser loginUser, Long status,String billtystatus) {
         Map<String, Object> map = new HashMap<>();
         if (StringUtils.isNull(warehouseBills) || "[]".equals(warehouseBills)) {
             return AjaxResult.error("未找到主表信息");
@@ -722,7 +727,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 item.setUpdateBy(loginUser.getUser().getUserName());
                 num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(item);
                 // 添加状态log
-                insertTWarehousebillsLog(item,Long.parseLong(status),loginUser);
+                insertTWarehousebillsLog(item,status,loginUser);
             } else {
                 item.setfPid(tWarehouseBills.getfId());
                 item.setfBillno(tWarehouseBills.getfBillno());
@@ -732,7 +737,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 num = tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
                 // 添加状态log
                 insertTWarehousebillsLog(item,10L,loginUser);
-                insertTWarehousebillsLog(item,Long.parseLong(status),loginUser);
+                insertTWarehousebillsLog(item,status,loginUser);
             }
             if (num <= 0) {
                 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -745,6 +750,302 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         return AjaxResult.success("成功", map);
     }
 
+    /**
+     * 新增库存费计算
+     * @param tWarehouseBills   主表的查询条件
+     * @param loginUser         登录用户
+     * @param billsType         状态
+     * @return  结果
+     */
+    @Override
+    @Transactional
+    public AjaxResult calculateStorageFees(TWarehouseBills tWarehouseBills, LoginUser loginUser, String billsType) {
+        if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
+            return AjaxResult.error("请选择客户信息");
+        }
+        long fPid = 0L;
+        if (StringUtils.isNull(tWarehouseBills.getfId())) {
+            tWarehouseBills.setfBilltype(billsType);
+            tWarehouseBills.setfBillstatus(6L);
+            tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
+            tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
+            tWarehouseBills.setCreateTime(new Date());
+            tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
+            fPid = tWarehouseBills.getfId();
+        } else {
+            fPid = tWarehouseBills.getfId();
+            tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
+            tWarehouseBills.setUpdateTime(new Date());
+            tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
+            tWarehousebillsfeesMapper.deleteByFPid(fPid);
+            tWarehousebillsitemsMapper.deleteByFPid(fPid);
+        }
+        // 应收费用明细
+        List<TWarehousebillsfees> warehousebillsfeesList = new ArrayList<>();
+        // 计划物资明细
+        List<TWarehousebillsitems> itemsList = new ArrayList<>();
+        BigDecimal bigDecimal = new BigDecimal(0);
+        Map<String, Object> map = new HashMap<>();
+        // 库存明细id
+        long itemFeeId = 0;
+        // 库存总账id
+        long whgenlegFeeId = 0;
+        // 计费单位
+        long feeUnitid = 1;
+        // 查询 出库 货转的库存明细
+        List<TWarehousebillsitems> warehousebillsitemsList = tWarehousebillsitemsMapper.selectStorageFeeItemList(tWarehouseBills);
+        if (StringUtils.isNotNull(warehousebillsitemsList)) {
+            // 出库货转的金额总和
+            BigDecimal sumAmt = new BigDecimal(0);
+            long fCorpid = tWarehouseBills.getfCorpid();
+            for (TWarehousebillsitems item : warehousebillsitemsList) {
+                if (StringUtils.isNull(item.getfBillingway())) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("未找到库存总账的计费单位,请确认");
+                }
+                TGoods tGoods = tGoodsMapper.selectTGoodsById(item.getfGoodsid());
+                long fGoodsid = tGoods.getfTypeid();
+                long dateDay = DateUtils.getDateDay(tWarehouseBills.getfBillingDeadline(), item.getfChargedate());
+                long fInventoryDays = DateUtils.getDateDay(tWarehouseBills.getfBillingDeadline(), item.getfOriginalbilldate());
+                Long dictLabel = item.getfBillingway();
+                BigDecimal fQty = this.acquiredQuantity(item, dictLabel);
+                if (fQty.compareTo(bigDecimal) == 0) {
+                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                    return AjaxResult.error("未找到计费单位,请确认");
+                }
+                // 计算仓储费明细
+                Map<String, Object> objectMap = tWarehouseAgreementService.getCarryingCost(fCorpid, fGoodsid, dateDay, dictLabel, fQty , fInventoryDays);
+                itemFeeId = (long)objectMap.get("feeId");
+                BigDecimal amt = (BigDecimal) objectMap.get("amt");
+                sumAmt = sumAmt.add(amt);
+                item.setfAmt(amt);
+                item.setfBillingQty(fQty);
+                item.setfInventoryDays(fInventoryDays);
+                item.setfBillstatus(50L);
+                item.setfChargedate(tWarehouseBills.getfBillingDeadline());
+                item.setfBillingDeadline(tWarehouseBills.getfBillingDeadline());
+                item.setUpdateBy(loginUser.getUser().getUserName());
+                item.setUpdateTime(new Date());
+                item.setfId(null);
+                item.setfPid(fPid);
+                tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
+                itemsList.add(item);
+            }
+            TWarehousebillsfees fees = new TWarehousebillsfees();
+            fees.setfPid(fPid);
+            fees.setfFeeid(itemFeeId);
+            fees.setfCorpid(tWarehouseBills.getfCorpid());
+//            fees.setfFeeUnitid(feeUnitid);
+            fees.setfQty(new BigDecimal(1));
+            fees.setfUnitprice(sumAmt);
+            fees.setfAmount(sumAmt);
+            fees.setfExrate(new BigDecimal(1));
+            fees.setfCurrency("RMB");
+            List<SysDictData> taxRate = sysDictDataMapper.selectDictDataByType("tax_rate");
+            fees.setfDc("D");
+            fees.setfTaxrate(new BigDecimal(taxRate.get(0).getDictValue()));
+            fees.setCreateBy(loginUser.getUser().getUserName());
+            fees.setCreateTime(new Date());
+            tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees);
+            warehousebillsfeesList.add(fees);
+        }
+        List<TWhgenleg> tWhgenlegs = tWhgenlegMapper.selectStorageFeeItemList(tWarehouseBills);
+        if (StringUtils.isNotNull(tWhgenlegs)) {
+            // 出库货转的金额总和
+            BigDecimal sumAmt = new BigDecimal(0);
+            for (TWhgenleg wg : tWhgenlegs) {
+                TGoods tGoods = tGoodsMapper.selectTGoodsById(wg.getfGoodsid());
+                long fGoodsid = tGoods.getfTypeid();
+                long dateDay = DateUtils.getDateDay(tWarehouseBills.getfBillingDeadline(), wg.getfChargedate());
+                long fInventoryDays = DateUtils.getDateDay(tWarehouseBills.getfBillingDeadline(), wg.getfOriginalbilldate());
+                wg.setfChargedate(tWarehouseBills.getfBillingDeadline());
+                long dictLabel = wg.getfBillingway();
+                BigDecimal fQty = this.getInventoryQuantity(wg, dictLabel);
+                if (fQty.compareTo(bigDecimal) == 0) {
+                    return AjaxResult.error("未找到计费单位,请确认");
+                }
+                // 计算仓储费明细
+                Map<String, Object> objectMap = tWarehouseAgreementService.getCarryingCost(wg.getfCorpid(), fGoodsid, dateDay, dictLabel, fQty , fInventoryDays);
+                whgenlegFeeId = (long)objectMap.get("feeId");
+                BigDecimal amt = (BigDecimal) objectMap.get("amt");
+                sumAmt = sumAmt.add(amt);
+                TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
+                tWarehousebillsitems.setfPid(fPid);
+                // 仓库总账
+                tWarehousebillsitems.setfBilltype("CKZZ");
+                tWarehousebillsitems.setfBillno(wg.getfOriginalbillno());
+                tWarehousebillsitems.setfGoodsid(wg.getfGoodsid());
+                tWarehousebillsitems.setfOriginalbilldate(wg.getfOriginalbilldate());
+                tWarehousebillsitems.setfBillingway(wg.getfBillingway());
+                tWarehousebillsitems.setfBillingQty(fQty);
+                tWarehousebillsitems.setfChargedate(wg.getfChargedate());
+                tWarehousebillsitems.setfBillingDeadline(tWarehouseBills.getfBillingDeadline());
+                tWarehousebillsitems.setfBillingDays(dateDay);
+                tWarehousebillsitems.setfAmt(amt);
+                tWarehousebillsitems.setCreateBy(loginUser.getUser().getUserName());
+                tWarehousebillsitems.setCreateTime(new Date());
+                tWarehousebillsitems.setfBillstatus(50L);
+                tWarehousebillsitemsMapper.insertTWarehousebillsitems(tWarehousebillsitems);
+                itemsList.add(tWarehousebillsitems);
+            }
+            TWarehousebillsfees fees = new TWarehousebillsfees();
+            fees.setfPid(fPid);
+            fees.setfFeeid(whgenlegFeeId);
+            fees.setfCorpid(tWarehouseBills.getfCorpid());
+//        fees.setfFeeUnitid(feeUnitid);
+            fees.setfQty(new BigDecimal(1));
+            fees.setfUnitprice(sumAmt);
+            fees.setfAmount(sumAmt);
+            fees.setfExrate(new BigDecimal(1));
+            fees.setfCurrency("RMB");
+            List<SysDictData> taxRate = sysDictDataMapper.selectDictDataByType("tax_rate");
+            fees.setfDc("D");
+            fees.setfTaxrate(new BigDecimal(taxRate.get(0).getDictValue()));
+            fees.setCreateBy(loginUser.getUser().getUserName());
+            fees.setCreateTime(new Date());
+            tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees);
+            warehousebillsfeesList.add(fees);
+        }
+        TGoods tGoods = new TGoods();
+        tGoods.setfStatus("0");
+        tGoods.setDelFlag("0");
+        List<TGoods> goods = tGoodsMapper.selectTGoodsList(tGoods);
+        TFees tFees = new TFees();
+        tFees.setfStatus("0");
+        tFees.setDelFlag("0");
+        List<TFees> feesList = tFeesMapper.selectTFeesList(tFees);
+        map.put("goodsList", goods);
+        map.put("feesList", feesList);
+        map.put("warehouseItemList", itemsList);
+        map.put("warehouseFeesList", warehousebillsfeesList);
+        return AjaxResult.success(map);
+    }
+
+    /**
+     * 仓储费计算提交以及暂存
+     * @param warehouseBills
+     * @param warehouseItems
+     * @param warehouseFees
+     * @param loginUser
+     * @param billsType
+     * @return
+     */
+    @Override
+    @Transactional
+    public AjaxResult insertStorageFee(String warehouseBills, String warehouseItems, String warehouseFees, LoginUser loginUser, String billsType) {
+        TWarehouseBills tWarehousebills = JSONArray.parseObject(warehouseBills, TWarehouseBills.class);
+        long fPid = 0L;
+        Long billstatus = tWarehousebills.getfBillstatus();
+        if (billstatus.equals(6L) && (StringUtils.isNull(warehouseItems) || "[]".equals(warehouseItems))) {
+            return AjaxResult.error("未找到计费物资明细无法提交");
+        }
+        if (billstatus.equals(6L) && (StringUtils.isNull(warehouseFees) || "[]".equals(warehouseFees))) {
+            return AjaxResult.error("未找到应收款明细无法提交");
+        }
+        if (StringUtils.isNotNull(tWarehousebills.getfId())) {
+            fPid = tWarehousebills.getfId();
+            tWarehousebills.setUpdateTime(new Date());
+            tWarehousebills.setUpdateBy(loginUser.getUser().getUserName());
+            tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
+            tWarehousebillsfeesMapper.deleteByFPid(fPid);
+            tWarehousebillsitemsMapper.deleteByFPid(fPid);
+        } else {
+            tWarehousebills.setCreateBy(loginUser.getUser().getUserName());
+            tWarehousebills.setCreateTime(new Date());
+            tWarehousebills.setfBilltype(billsType);
+            tWarehouseBillsMapper.insertTWarehousebills(tWarehousebills);
+            fPid = tWarehousebills.getfId();
+        }
+        if (StringUtils.isNotNull(warehouseItems) && !"[]".equals(warehouseItems)) {
+            JSONArray warehouseJSON = JSONArray.parseArray(warehouseItems);
+            List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
+            for (TWarehousebillsitems item : warehousebillsitemsList) {
+                item.setfId(null);
+                item.setfPid(fPid);
+                item.setfBilltype(billsType);
+                item.setfBillstatus(billstatus);
+                tWarehousebillsitemsMapper.insertTWarehousebillsitems(item);
+            }
+        }
+        if (StringUtils.isNotNull(warehouseFees) && !"[]".equals(warehouseFees)) {
+            JSONArray feesJSON = JSONArray.parseArray(warehouseFees);
+            List<TWarehousebillsfees> warehousebillsfeesList = JSONObject.parseArray(feesJSON.toJSONString(), TWarehousebillsfees.class);
+            for (TWarehousebillsfees fees : warehousebillsfeesList) {
+                fees.setfId(null);
+                fees.setfPid(fPid);
+                fees.setfDc("D");
+                fees.setfBillstatus(billstatus);
+                tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees);
+            }
+        }
+        return AjaxResult.success();
+    }
+
+    /**
+     *  根据不同计费单位获取不同 计算库存明细数量
+     * @param item      库存明细
+     * @param dictLabel 计费单位
+     * @return 结果
+     */
+    public BigDecimal acquiredQuantity (TWarehousebillsitems item, Long dictLabel) {
+        BigDecimal fQty = new BigDecimal(0);
+        // 件数
+        long boxNum = 1;
+        // 毛重
+        long grossWeight = 2;
+        // 净重
+        long netWeight = 3;
+        // 尺码
+        long size = 4;
+        // 尺码
+        long fixed = 5;
+        if (dictLabel.equals(boxNum)) {
+            fQty = new BigDecimal(item.getfQty());
+        } else if (dictLabel.equals(grossWeight)) {
+            fQty = item.getfGrossweight();
+        } else if (dictLabel.equals(netWeight)) {
+            fQty = item.getfNetweight();
+        } else if (dictLabel.equals(size)) {
+            fQty = item.getfVolumn();
+        } else if (dictLabel.equals(fixed)){
+            fQty = new BigDecimal(1);
+        }
+        return fQty;
+    }
+
+    /**
+     *  根据不同计费单位获取不同 计算库存总账数量
+     * @param whegen    库存总账
+     * @param dictLabel 计费单位
+     * @return 结果
+     */
+    public BigDecimal getInventoryQuantity (TWhgenleg whegen, Long dictLabel) {
+        BigDecimal fQty = new BigDecimal(0);
+        // 件数
+        long boxNum = 1;
+        // 毛重
+        long grossWeight = 2;
+        // 净重
+        long netWeight = 3;
+        // 尺码
+        long size = 4;
+        // 尺码
+        long fixed = 5;
+        if (dictLabel.equals(boxNum)) {
+            fQty = new BigDecimal(whegen.getfQtyblc());
+        } else if (dictLabel.equals(grossWeight)) {
+            fQty = whegen.getfGrossweightblc();
+        } else if (dictLabel.equals(netWeight)) {
+            fQty = whegen.getfNetweightc();
+        } else if (dictLabel.equals(size)) {
+            fQty = whegen.getfVolumnblc();
+        } else if (dictLabel.equals(fixed)){
+            fQty = new BigDecimal(1);
+        }
+        return fQty;
+    }
+
+
     // 入库 收费明细 校验
     public Long check(BigDecimal number, BigDecimal unitPrice) {
         BigDecimal result1 = number.multiply(unitPrice);
@@ -818,7 +1119,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         // 修改主表信息
         tWarehousebills.setUpdateBy(loginUser.getUser().getUserName());
         tWarehousebills.setUpdateTime(new Date());
-        tWarehousebills.setfBillstatus("3"); //撤销状态
+        tWarehousebills.setfBillstatus(3L); //撤销状态
         tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
         // 查询库存明细从表数据
         TWarehousebillsitems tWarehousebillsitems = new TWarehousebillsitems();
@@ -968,7 +1269,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     updateTWhgenlegData(wb, tWhgenle2.getfId(), "SJCKRevoke");
                 }
                 i++;
-                wb.setfBillstatus("1");
+                wb.setfBillstatus(1L);
                 wb.setUpdateBy(loginUser.getUser().getUserName());
                 wb.setUpdateTime(new Date());
                 if (tWarehousebillsitemsMapper.updateTWarehousebillsitems(wb) <= 0) {
@@ -992,7 +1293,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         tWarehousebillsitems.setfPid(warehouseBill.getfId());
         List<TWarehousebillsitems> warehousebillsitemsList1 = tWarehousebillsitemsMapper.selectTWarehousebillsitemsList(tWarehousebillsitems);
         for (TWarehousebillsitems item : warehousebillsitemsList1) {
-             if (item.getfBillstatus().equals("40") | item.getfBillstatus().equals("90")) {
+             if (item.getfBillstatus().equals(40L) | item.getfBillstatus().equals(90L)) {
                 Stored++;
             } else {
                 notInStorage++;
@@ -1003,11 +1304,11 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         TWarehouseBills warehouseBill1 = new TWarehouseBills();
         warehouseBill1.setfId(warehouseBill.getfId());
         if (Objects.equals(Stored, 0)) { // 未入库
-            warehouseBill1.setfItemsStatus("1");
+            warehouseBill1.setfItemsStatus(1L);
         } else if (Objects.equals(notInStorage, 0)) { // 已入库
-            warehouseBill1.setfItemsStatus("6");
+            warehouseBill1.setfItemsStatus(6L);
         } else { // 有已入库、有未入库
-            warehouseBill1.setfItemsStatus("2");
+            warehouseBill1.setfItemsStatus(2L);
         }
         tWarehouseBillsMapper.updateTWarehousebills(warehouseBill1);
     }

+ 22 - 11
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -398,23 +398,23 @@
     </select>
     <select id="selectWareHouseListWhouse"  resultType="Map">
         SELECT
-        t.f_warehouseid AS fWarehouseid,
-        w.f_name AS fName,
-        t.f_grossweightD AS fGrossweightD,
-        w.f_totalgross AS fTotalgross
+            t.f_warehouseid AS fWarehouseid,
+            w.f_name AS fName,
+            t.f_grossweightD AS fGrossweightD,
+            w.f_totalgross AS fTotalgross
         FROM
-        t_warehouse w
+            t_warehouse w
         RIGHT JOIN (
         SELECT
-        f_warehouseid AS f_warehouseid,
-        sum( f_grossweightD ) AS f_grossweightD
+            f_warehouseid AS f_warehouseid,
+            sum( f_grossweightD ) AS f_grossweightD
         FROM
-        t_whgenleg
+            t_whgenleg
         GROUP BY
-        f_warehouseid
+            f_warehouseid
         ORDER BY
-        sum( f_grossweightD ) DESC
-        ) t ON w.f_id = t.f_warehouseid
+            sum( f_grossweightD ) DESC
+            ) t ON w.f_id = t.f_warehouseid
         <where>
             <if test="fId != null ">and w.f_id = #{fId}</if>
         </where>
@@ -478,4 +478,15 @@
             t.f_originalbilldate
     </select>
 
+    <select id="selectStorageFeeItemList" parameterType="com.ruoyi.warehouseBusiness.domain.TWarehouseBills"
+            resultMap="TWhgenlegResult">
+        <include refid="selectTWhgenlegVo"/>
+        <where>
+            f_corpid = #{warehouse.fCorpid}
+            and f_chargedate &lt; #{warehouse.fBillingDeadline}
+            <if test="warehouse.fGoodsid != null">and f_goodsid = #{warehouse.fGoodsid}</if>
+            <if test="warehouse.fMblno != null">and f_mblno = #{warehouse.fMblno}</if>
+        </where>
+    </select>
+
 </mapper>