Ver Fonte

仓库出库新增仓储费计算

lazhaoqian há 4 anos atrás
pai
commit
c58b492faf

+ 2 - 2
ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java

@@ -92,10 +92,10 @@ public class CommonController
             // 上传并返回新文件名称
             String fileName = FileUploadUtils.upload(filePath, file);
             String url = serverConfig.getUrl() + fileName;
-            /*if (url.indexOf("http")!= -1){
+            if (url.indexOf("http")!= -1){
                 String replace = url.replace("http", "https");
                 url = replace;
-            }*/
+            }
             ajax.put("fileName", file.getOriginalFilename());
             ajax.put("url", url);
             return ajax;

+ 4 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TStorageFeeCalculationController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.web.controller.warehouse.warehouseBusiness;
 
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ruoyi.common.annotation.DataScope;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
@@ -144,6 +145,9 @@ public class TStorageFeeCalculationController extends BaseController {
     public AjaxResult calculateFeesList(@RequestBody List<TWarehouseBills> tWarehouseBillsList) {
         String billsType = "JSCCF";
         // 获取当前的用户
+        if (CollectionUtils.isEmpty(tWarehouseBillsList)){
+            return AjaxResult.error("请选择条件后再计算仓储费");
+        }
         LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
         return itWarehouseBillsService.calculateStorageFeesList(tWarehouseBillsList, loginUser, billsType);
     }

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

@@ -97,7 +97,7 @@ public class TWarehouseInStockController extends BaseController {
      * 导入【入库明细箱信息】Excel
      * 待完成
      */
-    @Log(title = "导入集装箱动态", businessType = BusinessType.IMPORT)
+    //@Log(title = "导入集装箱动态", businessType = BusinessType.IMPORT)
     @PostMapping(value = "/importInstock")
     public AjaxResult importInstock(@RequestParam("file") MultipartFile file)
     {

+ 0 - 10
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/StorageChargeInsert.java

@@ -13,8 +13,6 @@ public class StorageChargeInsert {
 
     private String warehouseItems;
 
-    private String billsType;
-
     private  String warehouseFees;
 
     public String getWarehouseFees() {
@@ -41,20 +39,12 @@ public class StorageChargeInsert {
         this.warehouseItems = warehouseItems;
     }
 
-    public String getBillsType() {
-        return billsType;
-    }
-
-    public void setBillsType(String billsType) {
-        this.billsType = billsType;
-    }
 
     @Override
     public String toString() {
         return "StorageChargeInsert{" +
                 "warehouseBills='" + warehouseBills + '\'' +
                 ", warehouseItems='" + warehouseItems + '\'' +
-                ", billsType='" + billsType + '\'' +
                 ", warehouseFees='" + warehouseFees + '\'' +
                 '}';
     }

+ 7 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/mapper/TWarehousebillsfeesMapper.java

@@ -128,4 +128,11 @@ public interface TWarehousebillsfeesMapper extends BaseMapper<TWarehousebillsfee
      */
     public List<Map<String,Object>> webVersionDetail(TAccount tAccount);
 
+    /**
+     * 查询来源id
+     * @param fId
+     * @return
+     */
+    public List<Long> selectTWarehousebillsfeesSrcId(Long fId);
+
 }

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

@@ -171,4 +171,19 @@ public interface TWarehousebillsitemsMapper extends BaseMapper<TWarehousebillsit
      */
     public int warehouseItemfItemstatus(@Param("fPid") Long fPid,
                                         @Param("fItemstatus") Long fItemstatus);
+
+    /**
+     * 将出库收费明细里删除的仓储费的来源入库明细的仓储费计算截止日期更新为空
+     * @param fPid
+     * @param fId
+     * @return
+     */
+    public int updatefStorageFeeDeadline(@Param("fPid") Long fPid,
+                                         @Param("fId") List<Long> fId);
+    /**
+     * 将出库收费明细里删除的仓储费的来源入库明细的仓储费计算截止日期更新为空
+     * @param fPid
+     * @return
+     */
+    public int updatefStorageFeeDeadlinefPid(@Param("fPid") Long fPid);
 }

+ 133 - 14
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -587,7 +587,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 Date minDate = warehousebillsitemsList.get(0).getfBsdate();
                 for (int i = 0; i < totalCount; i++) {
                     Date date = warehousebillsitemsList.get(i).getfBsdate();
-                    if (minDate.before(date)) {
+                    if (minDate.after(date)) {
                         minDate = date;
                     }
                 }
@@ -711,6 +711,13 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 tWarehousebillsfeesMapper.insertTWarehousebillsfees(wbCr);
             }
         }
+        //查询删除的仓储费收费信息
+        List<Long> longs = tWarehousebillsfeesMapper.selectTWarehousebillsfeesSrcId(fPid);
+        if (CollectionUtils.isNotEmpty(longs)){
+            int i = tWarehousebillsitemsMapper.updatefStorageFeeDeadline(fPid, longs);
+        }else {
+            int i = tWarehousebillsitemsMapper.updatefStorageFeeDeadlinefPid(fPid);
+        }
         TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
         warehousebillsitems.setfPid(fPid);
         map.put("warehouseBills", tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId()));
@@ -3671,6 +3678,117 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         map.put("itemsList", itemsList);
         return map;
     }
+    /**
+     * 批量生成计算仓储费信息
+     *
+     * @param warehouseBills
+     * @param mapItem
+     * @param loginUser
+     * @return
+     */
+    public Map<String, Object> getWarehouseItemsList(TWarehouseBills warehouseBills, List<Map<String, Object>> mapItem, LoginUser loginUser) {
+        Map<String, Object> map = new HashMap<>();
+        long feeId = 0L;
+        BigDecimal sumAmt = new BigDecimal(0);
+        List<TWarehousebillsfees> itemsList = new ArrayList<>();
+        List<SysDictData> taxRate = sysDictDataMapper.selectDictDataByType("tax_rate");
+        for (Map<String, Object> item : mapItem) {
+            if (StringUtils.isNull(item.get("fBillingway"))) {
+                map.put("error", "单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到库存总账的计费单位,请确认");
+                return map;
+            }
+            Date fBsdate = (Date) item.get("fBsdate");
+            long fCorpid = warehouseBills.getfCorpid();
+            String fBilltype = (String) item.get("fBilltype");
+            long fGoodsid = Long.parseLong((String) item.get("fTypeid"));
+            long fId = Long.valueOf(String.valueOf(item.get("fId"))).longValue();
+            // 累计计费天数
+            long accumulatedDays = DateUtils.getDateDay((Date) item.get("fChargedate"), (Date) item.get("fOriginalbilldate"));
+            // 库存天数
+            long fInventoryDays = 0L;
+            // 要计费天数
+            long fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fOriginalbilldate"));
+            if ("SJCK".equals(fBilltype)) {
+                fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fOriginalbilldate"));
+                fBillingDays = fInventoryDays;
+            } else if ("HQZY".equals(fBilltype)) {
+                fInventoryDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), fBsdate);
+            } else {
+                fBillingDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fChargedate"));
+                fInventoryDays = DateUtils.getDateDay(warehouseBills.getfBillingDeadline(), (Date) item.get("fOriginalbilldate"));
+            }
+            /*if ("KCZZ".equals(fBilltype)) {
+            } else {
+                fInventoryDays = Long.valueOf(String.valueOf(item.get("fBillingDays")));
+            }*/
+            Long dictLabel = Long.valueOf(String.valueOf(item.get("fBillingway")));
+            BigDecimal fQty = acquiredQuantity(item, dictLabel);
+            if (fQty.equals(BigDecimal.ZERO)) {
+                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+                return AjaxResult.error("单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到计费单位,请确认");
+            }
+            // 计算仓储费明细
+            Map<String, Object> objectMap = tWarehouseAgreementService.getCarryingCost(fCorpid, fGoodsid, fBillingDays, dictLabel, fQty, accumulatedDays);
+            if (StringUtils.isNull(objectMap)) {
+                map.put("error", "单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到仓储费协议,请确认");
+                return map;
+            }
+            String mblno = "";
+            if (StringUtils.isNotNull(item.get("fMblno"))) {
+                mblno = item.get("fMblno").toString();
+            }
+            String remark = objectMap.get("remark").toString();
+            feeId = Long.valueOf(String.valueOf(objectMap.get("feeId"))).longValue();
+            BigDecimal amt = (BigDecimal) objectMap.get("amt");
+            map.put("feeId", feeId);
+            map.put("itemFeeId", objectMap.get("feeId"));
+            sumAmt = sumAmt.add(amt).setScale(2, BigDecimal.ROUND_HALF_UP);
+            TWarehousebillsfees fees = new TWarehousebillsfees();
+            fees.setfFeeid(feeId);
+            fees.setfDc("D");
+            fees.setfAmt(amt);
+            fees.setSrcId(fId);
+            fees.setfMblno(mblno);
+            fees.setRemark(remark);
+            fees.setfFeeunitid(2L);
+            fees.setfAmount(sumAmt);
+            fees.setfBillstatus(2L);
+            fees.setfCurrency("RMB");
+            fees.setfBsdate(fBsdate);
+            fees.setfBillingQty(fQty);
+            fees.setfUnitprice(sumAmt);
+            fees.setfBilltype(fBilltype);
+            fees.setfBillingDays(fBillingDays);
+            fees.setCreateTime(new Date());
+            fees.setfQty(new BigDecimal(1));
+            fees.setfPid(warehouseBills.getfId());
+            fees.setfInventoryDays(fInventoryDays);
+            fees.setfExrate(new BigDecimal(1));
+            fees.setfCorpid(warehouseBills.getfCorpid());
+            fees.setfMarks(item.get("fMarks").toString());
+            fees.setSrcBillNo((String) item.get("fBillno"));
+            fees.setfChargedate((Date) item.get("fChargedate"));
+            fees.setCreateBy(loginUser.getUser().getUserName());
+            fees.setfProductName(item.get("fGoodsids").toString());
+            if ("SJCK".equals(fBilltype)) {
+                fees.setfBillingDeadline(fBsdate);
+            } else {
+                fees.setfBillingDeadline(warehouseBills.getfBillingDeadline());
+            }
+            fees.setfTaxrate(new BigDecimal(taxRate.get(0).getDictValue()));
+            fees.setfOriginalbilldate((Date) item.get("fOriginalbilldate"));
+            fees.setfBillingway(Long.valueOf(String.valueOf(item.get("fBillingway"))).longValue());
+            //tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees);
+            itemsList.add(fees);
+            TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
+            /*warehousebillsitems.setfId(fId);
+            warehousebillsitems.setfStorageFeeDeadline(fBsdate);
+            int i = tWarehousebillsitemsMapper.updateTWarehousebillsitems(warehousebillsitems);*/
+        }
+        map.put("sumAmt", sumAmt);
+        map.put("itemsList", itemsList);
+        return map;
+    }
 
     /**
      * 新增库存费计算
@@ -3755,6 +3873,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     }
 
     @Override
+    @Transactional
     public AjaxResult calculateStorageFeesList(List<TWarehouseBills> tWarehouseBillsList, LoginUser loginUser, String billsType) {
         if (CollectionUtils.isEmpty(tWarehouseBillsList)){
             return AjaxResult.error("请输入筛选条件,再计算仓储费");
@@ -3765,7 +3884,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 return AjaxResult.error("请选择客户信息");
             }
             long fPid = 0L;
-            if (StringUtils.isNull(tWarehouseBills.getfId())) {
+            /*if (StringUtils.isNull(tWarehouseBills.getfId())) {
                 // 生成流水号
                 Date time = new Date();
                 String billNo = billnoSerialServiceImpl.getSerialNumber("JSCCF", time);
@@ -3777,16 +3896,16 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 tWarehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
                 tWarehouseBills.setCreateBy(loginUser.getUser().getUserName());
                 tWarehouseBills.setCreateTime(new Date());
-                tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
-                fPid = tWarehouseBills.getfId();
+                //tWarehouseBillsMapper.insertTWarehousebills(tWarehouseBills);
+                //fPid = tWarehouseBills.getfId();
             } else {
-                tWarehousebillsfeesMapper.deleteByFPid(tWarehouseBills.getfId());
-                tWarehousebillsitemsMapper.deleteByFPid(tWarehouseBills.getfId());
+                //tWarehousebillsfeesMapper.deleteByFPid(tWarehouseBills.getfId());
+                //tWarehousebillsitemsMapper.deleteByFPid(tWarehouseBills.getfId());
                 tWarehouseBills.setUpdateBy(loginUser.getUser().getUserName());
                 tWarehouseBills.setUpdateTime(new Date());
-                tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
-                fPid = tWarehouseBills.getfId();
-            }
+                //tWarehouseBillsMapper.updateTWarehousebills(tWarehouseBills);
+                //fPid = tWarehouseBills.getfId();
+            }*/
             // 计划物资明细
             List<TWarehousebillsfees> itemsList = new ArrayList<>();
             BigDecimal bigDecimal = new BigDecimal(0);
@@ -3798,14 +3917,14 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             // 查询 出库 货转的库存明细
             List<Map<String, Object>> warehousebillsitemsList = tWarehousebillsitemsMapper.selectStorageFeeItemList(tWarehouseBills);
             if (warehousebillsitemsList.size() != 0) {
-                Map<String, Object> mapItem = getWarehouseItems(tWarehouseBills, warehousebillsitemsList, loginUser);
+                Map<String, Object> mapItem = getWarehouseItemsList(tWarehouseBills, warehousebillsitemsList, loginUser);
                 if (mapItem.containsKey("error")) {
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return AjaxResult.error((String) mapItem.get("error"));
                 }
                 itemsList = (List<TWarehousebillsfees>) mapItem.get("itemsList");
             }
-            List<Map<String, Object>> tWhgenlegs = tWhgenlegMapper.selectStorageFeeItemList(tWarehouseBills);
+            /*List<Map<String, Object>> tWhgenlegs = tWhgenlegMapper.selectStorageFeeItemList(tWarehouseBills);
             if (tWhgenlegs.size() != 0) {
                 Map<String, Object> mapItem = getWarehouseItems(tWarehouseBills, tWhgenlegs, loginUser);
                 if (mapItem.containsKey("error")) {
@@ -3818,7 +3937,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                         itemsList.add(ite);
                     }
                 }
-            }
+            }*/
             TFees tFees = new TFees();
             tFees.setfStatus("2");
             tFees.setDelFlag("0");
@@ -4014,7 +4133,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 tWarehousebills.setfBsdeptid(loginUser.getUser().getDeptId());
                 tWarehousebills.setCreateBy(loginUser.getUser().getUserName());
                 tWarehousebills.setCreateTime(new Date());
-                tWarehousebills.setfBilltype(chargeInsert.getBillsType());
+                tWarehousebills.setfBilltype(billsType);
                 tWarehouseBillsMapper.insertTWarehousebills(tWarehousebills);
                 fPid = tWarehousebills.getfId();
             }
@@ -4057,7 +4176,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                     // 存储委托方(货权方)
                     auditItems.setRefno1(tWarehousebills.getfCorpid() + "");
                     // 存储业务类型(业务类型)
-                    auditItems.setRefno2(tWarehousebills.getfBilltype());
+                    auditItems.setRefno2(billsType);
                     // 存储提单号(提单号)
                     auditItems.setRefno3(tWarehousebills.getfMblno());
                     auditItems.setSendUserId(loginUser.getUser().getUserId());

+ 4 - 3
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -43,13 +43,14 @@
         <result property="fBusinessType" column="f_business_type"/>
         <result property="fOriginalbilldate" column="f_originalbilldate"/>
         <result property="fLocalcntrno" column="f_localcntrno"/>
+        <result property="fCustomno" column="f_customno"/>
     </resultMap>
 
     <sql id="selectTWhgenlegVo">
         select f_id, f_accyear, f_accmonth, f_corpid, f_mblno, f_originalbillno, f_warehouse_locationid, f_goodsid, f_trademodeid, f_preqty,
          f_pregrossweight, f_warehouseid, f_prenetweight, f_chargedate, f_volumnD, f_qtyD, f_billingway, f_grossweightD, f_netweightD, f_volumnC,
           f_qtyC, f_grossweightC, f_qtyblc, f_grossweightblc, f_netweightC, f_netweightblc, f_cntrno, f_status, del_flag, f_marks, create_by,
-           create_time, update_by, f_volumnblc, update_time, remark, f_business_type, f_originalbilldate, f_localcntrno from t_whgenleg
+           create_time, update_by, f_volumnblc, update_time, remark, f_business_type, f_originalbilldate, f_localcntrno,f_customno from t_whgenleg
     </sql>
 
     <select id="selectTWhgenlegList" parameterType="TWhgenleg" resultMap="TWhgenlegResult">
@@ -247,10 +248,10 @@
                 f_grossweightD = f_grossweightD + #{map.warehousebillsitems.fGrossweight},
                 f_qtyblc = f_qtyblc + #{map.warehousebillsitems.fQty}
                 <if test="map.warehousebillsitems.fCustomno != null  and map.warehousebillsitems.fCustomno != ''">
-                    f_customno = f_customno + #{map.warehousebillsitems.fCustomno}
+                    ,f_customno = #{map.warehousebillsitems.fCustomno}
                 </if>
                 <if test="map.warehousebillsitems.remark != null  and map.warehousebillsitems.remark != ''">
-                    remark = remark + #{map.warehousebillsitems.remark}
+                    ,remark = #{map.warehousebillsitems.remark}
                 </if>
             </if>
             /*判断是否撤销入库*/

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

@@ -108,7 +108,7 @@
             agreement.f_corpid = #{fCorpid}
             AND agreement.t_packages = #{fGoodsid}
             AND items.f_feeUnitid = #{feeUnitid}
-            AND agreement.f_status = '1'
+            AND agreement.f_status = '0'
             AND agreement.del_flag = '0'
             AND agreement.f_feetypeid = '0'
             AND items.del_flag = '0'

+ 7 - 0
ruoyi-warehouse/src/main/resources/mapper/warehouseBusiness/TWarehousebillsfeesMapper.xml

@@ -777,4 +777,11 @@
         <if test="accountBillno != null  and accountBillno != ''">and te.f_billno = #{accountBillno}</if>
         ORDER BY tf.f_id desc
     </select>
+    <select id="selectTWarehousebillsfeesSrcId" parameterType="Long" resultType="long">
+        select src_id
+        FROM
+          t_warehousebillsfees
+        where f_pid = #{fId}
+          AND src_id IS NOT NULL
+    </select>
 </mapper>

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

@@ -464,7 +464,7 @@
             and wa.f_charg = 1
             and item.f_billstatus = 40
             and item.f_storage_fee_deadline IS NULL
-            and item.f_chargedate &lt; #{warehouse.fBillingDeadline}
+            and item.f_chargedate &lt;= #{warehouse.fBillingDeadline}
             <if test="warehouse.fGoodsid != null">and item.f_goodsid = #{warehouse.fGoodsid}</if>
             <if test="warehouse.fMblno != null">and ware.f_mblno = #{warehouse.fMblno}</if>
         </where>
@@ -727,5 +727,23 @@
         where
             f_pid = #{fPid}
     </update>
+    <update id="updatefStorageFeeDeadline" parameterType="TWarehousebillsitems">
+        UPDATE
+            t_warehousebillsitems
+        SET f_storage_fee_deadline = null
+        WHERE
+            f_pid = #{fPid}
+            and f_id not in
+        <foreach item="fId" collection="fId" open="(" separator="," close=")">
+            #{fId}
+        </foreach>
+    </update>
+    <update id="updatefStorageFeeDeadlinefPid" parameterType="TWarehousebillsitems">
+        UPDATE
+        t_warehousebillsitems
+        SET f_storage_fee_deadline = null
+        WHERE
+        f_pid = #{fPid}
+    </update>
 
 </mapper>