caifc 3 rokov pred
rodič
commit
0593f5db70
27 zmenil súbory, kde vykonal 842 pridanie a 154 odobranie
  1. 33 14
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/approvalFlow/AuditPathsController.java
  2. 20 6
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseGoodsTransferController.java
  3. 7 0
      ruoyi-shipping/src/main/java/com/ruoyi/shipping/mapper/TCntrMapper.java
  4. 8 0
      ruoyi-shipping/src/main/resources/mapper/shipping/TCntrMapper.xml
  5. 36 0
      ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/domain/dto/AppAuditItemDTO.java
  6. 43 0
      ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/domain/enums/AuditStateEnum.java
  7. 68 0
      ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/domain/vo/AppAuditItemVO.java
  8. 9 0
      ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/mapper/AuditItemsMapper.java
  9. 24 7
      ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/IAuditPathsService.java
  10. 70 8
      ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditPathsServiceImpl.java
  11. 14 4
      ruoyi-warehouse/src/main/java/com/ruoyi/basicData/mapper/TWarehouseMapper.java
  12. 3 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehouseBills.java
  13. 0 2
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/TWarehousebillsfees.java
  14. 1 3
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/CalculateStorageFeesDTO.java
  15. 41 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/StorageFeeRangeDTO.java
  16. 2 4
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehouseBillsFeesModifyDTO.java
  17. 14 1
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseActIdEnum.java
  18. 46 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseTypeEnum.java
  19. 50 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/vo/AppWarehouseInfoVO.java
  20. 11 1
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehouseBillsService.java
  21. 0 7
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehousebillsfeesModifyService.java
  22. 45 61
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseAgreementServiceImpl.java
  23. 237 10
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java
  24. 1 0
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehousebillsModifyServiceImpl.java
  25. 0 26
      ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehousebillsfeesModifyServiceImpl.java
  26. 51 0
      ruoyi-warehouse/src/main/resources/mapper/approvalFlow/AuditItemsMapper.xml
  27. 8 0
      ruoyi-warehouse/src/main/resources/mapper/basicData/TWarehouseMapper.xml

+ 33 - 14
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/approvalFlow/AuditPathsController.java

@@ -1,28 +1,27 @@
 package com.ruoyi.web.controller.warehouse.approvalFlow;
 
-import java.util.List;
-import java.util.Map;
-
-import com.github.pagehelper.PageInfo;
 import com.ruoyi.approvalFlow.domain.AuditItems;
 import com.ruoyi.approvalFlow.domain.AuditPaths;
+import com.ruoyi.approvalFlow.domain.dto.AppAuditItemDTO;
+import com.ruoyi.approvalFlow.domain.vo.AppAuditItemVO;
 import com.ruoyi.approvalFlow.service.IAuditPathsService;
+import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.annotation.RepeatSubmit;
-import com.ruoyi.common.constant.HttpStatus;
+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 org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
+
+import java.util.List;
 
 /**
  * 审批流配置主Controller
@@ -156,7 +155,9 @@ public class AuditPathsController extends BaseController {
         return AjaxResult.success(auditPathsService.selectAllAuditItems(auditItems));
     }
 
-    /** 审批条件查询 */
+    /**
+     * 审批条件查询
+     */
     @GetMapping(value = "/selectAuditItems")
     public TableDataInfo selectAuditItems(AuditItems auditItems) {
         startPage();
@@ -165,7 +166,9 @@ public class AuditPathsController extends BaseController {
         return getDataTable(auditPathsService.selectAllAuditItems(auditItems));
     }
 
-    /** 审批查询条件条数*/
+    /**
+     * 审批查询条件条数
+     */
     @GetMapping(value = "/selectCountAuditItems")
     public AjaxResult selectCountAuditItems() {
         int count = auditPathsService.selectCountAuditItems();
@@ -209,4 +212,20 @@ public class AuditPathsController extends BaseController {
     public AjaxResult remove(@PathVariable Long[] ids) {
         return auditPathsService.deleteAuditPathsByIds(ids);
     }
+
+    /**
+     * app查看订单审批流
+     *
+     * @param auditItems
+     * @return
+     */
+    @GetMapping(value = "/selectOrderAuditItems")
+    public TableDataInfo selectOrderAuditItems(AppAuditItemDTO auditItems) {
+        startPage();
+        LoginUser loginUser = SpringUtils.getBean(TokenService.class).getLoginUser(ServletUtils.getRequest());
+        auditItems.setAuditUserId(loginUser.getUser().getUserId());
+        List<AppAuditItemVO> list = auditPathsService.selectOrderAuditItems(auditItems);
+        return getDataTable(list);
+    }
+
 }

+ 20 - 6
ruoyi-admin/src/main/java/com/ruoyi/web/controller/warehouse/warehouseBusiness/TWarehouseGoodsTransferController.java

@@ -14,11 +14,11 @@ 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.domain.enums.WarehouseTypeEnum;
 import com.ruoyi.warehouseBusiness.excel.GoodsTransfer;
 import com.ruoyi.warehouseBusiness.service.ITWarehouseBillsService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.interceptor.TransactionAspectSupport;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
@@ -200,11 +200,11 @@ public class TWarehouseGoodsTransferController extends BaseController {
     public AjaxResult withdrawById(@PathVariable("fId") Long fId) {
         // 查询是否对账、收费、付费
         int result = itWarehouseBillsService.derecognition(fId);
-        if(result == 1){
+        if (result == 1) {
             return AjaxResult.error("撤销请核失败,财务已对账");
-        } else if (result == 2){
+        } else if (result == 2) {
             return AjaxResult.error("撤销请核失败,财务已收费");
-        } else if (result == 3){
+        } else if (result == 3) {
             return AjaxResult.error("撤销请核失败,财务已付费");
         }
         String billsType = "HQZYRevoke";
@@ -234,7 +234,8 @@ public class TWarehouseGoodsTransferController extends BaseController {
     }
 
     /**
-     *  根据id更新费用审核状态
+     * 根据id更新费用审核状态
+     *
      * @param id
      * @return
      */
@@ -245,7 +246,8 @@ public class TWarehouseGoodsTransferController extends BaseController {
     }
 
     /**
-     *  根据id撤销已费用审核状态
+     * 根据id撤销已费用审核状态
+     *
      * @param id
      * @return
      */
@@ -255,4 +257,16 @@ public class TWarehouseGoodsTransferController extends BaseController {
         return itWarehouseBillsService.revokefeeReview(id);
     }
 
+    /**
+     * app查货转详情
+     *
+     * @param id
+     * @return
+     */
+    @GetMapping(value = "/app")
+    @RepeatSubmit
+    public AjaxResult appQueryInit(@RequestParam("id") Long id) {
+        return itWarehouseBillsService.appQueryInit(id, WarehouseTypeEnum.HQZY.getType());
+    }
+
 }

+ 7 - 0
ruoyi-shipping/src/main/java/com/ruoyi/shipping/mapper/TCntrMapper.java

@@ -93,4 +93,11 @@ public interface TCntrMapper
      * @return
      */
     public TCntr selectTcnrFName(@Param("fName") String fType);
+
+    /**
+     *  根据id集合查询集装箱信息
+     * @param cntrIds
+     * @return
+     */
+    List<TCntr> selectByIds(@Param("ids") List<Long> cntrIds);
 }

+ 8 - 0
ruoyi-shipping/src/main/resources/mapper/shipping/TCntrMapper.xml

@@ -202,4 +202,12 @@
         f_name = #{fName}
     </select>
 
+    <select id="selectByIds" resultMap="TCntrResult">
+        SELECT f_id, f_no, f_name FROM t_cntr
+        WHERE f_id in
+        <foreach collection="ids" item="id" index="index" open="(" separator="," close=")" >
+            #{id}
+        </foreach>
+    </select>
+
 </mapper>

+ 36 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/domain/dto/AppAuditItemDTO.java

@@ -0,0 +1,36 @@
+package com.ruoyi.approvalFlow.domain.dto;
+
+import com.ruoyi.approvalFlow.domain.AuditItems;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * app获取待审核数据返回类
+ *
+ * @author caifc
+ * @date 2021-11-04 11:17
+ */
+@Data
+public class AppAuditItemDTO extends AuditItems {
+    private static final long serialVersionUID = 1L;
+
+    // 客户id
+    private Long corpId;
+
+    // 提单号
+    private String fMblno;
+
+    // 状态
+    private String auditStatus;
+
+    // 业务类型区间
+    private List<String> billTypeList;
+
+    // 请核日期区间
+    private String sendTimeInterval;
+
+    // 请核日期区间
+    private List<String> sendList;
+
+}

+ 43 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/domain/enums/AuditStateEnum.java

@@ -0,0 +1,43 @@
+package com.ruoyi.approvalFlow.domain.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Objects;
+
+/**
+ * @author caifc
+ * @date 2021-10-22 17:19
+ */
+@Getter
+@AllArgsConstructor
+public enum AuditStateEnum {
+
+    // 状态
+
+    SUBMIT("O", "提交"),
+
+    UNKNOWN("N", "未知"),
+
+    PENDING("S", "待审"),
+
+    REVIEW_REJECTED("B", "审核退回"),
+
+    APPROVED("A", "审核通过"),
+
+    ;
+
+    private final String status;
+    private final String name;
+
+    public static AuditStateEnum fromType(String tp) {
+        for (AuditStateEnum type : AuditStateEnum.values()) {
+            if (Objects.equals(type.getStatus(), tp)) {
+                return type;
+            }
+        }
+        throw new IllegalArgumentException("audit status not exist");
+    }
+
+
+}

+ 68 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/domain/vo/AppAuditItemVO.java

@@ -0,0 +1,68 @@
+package com.ruoyi.approvalFlow.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * app获取待审核数据返回类
+ *
+ * @author caifc
+ * @date 2021-11-04 11:17
+ */
+@Data
+public class AppAuditItemVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // 审核id
+    private Long id;
+
+    // 活动号
+    private Long actId;
+
+    // 仓库id
+    private Long billId;
+
+    // 活动类型
+    private String actName;
+
+    // 仓库业务日期
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private Date fBsdate;
+
+    // 类型,有值代表是仓储
+    private String type;
+
+    // 提单号
+    private String fMblno;
+
+    // 贸易方式
+    private Long fTrademodeid;
+
+    // 贸易方式
+    private String fTrademodeName;
+
+    // 数量
+    private BigDecimal fQty;
+
+    // 商品名称
+    private String goodsName;
+
+    // 仓库名称
+    private String warehouseName;
+
+    // 状态
+    private String auditState;
+
+    // 状态
+    private String audit;
+
+    // 业务类型
+    private String refno4;
+
+}

+ 9 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/mapper/AuditItemsMapper.java

@@ -3,6 +3,8 @@ package com.ruoyi.approvalFlow.mapper;
 import com.ruoyi.approvalFlow.domain.AuditItems;
 import com.ruoyi.approvalFlow.domain.AuditPaths;
 import com.ruoyi.approvalFlow.domain.AuditPathsLevels;
+import com.ruoyi.approvalFlow.domain.dto.AppAuditItemDTO;
+import com.ruoyi.approvalFlow.domain.vo.AppAuditItemVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -120,4 +122,11 @@ public interface AuditItemsMapper {
      * @return
      */
     List<String> selectListByRefno1AndActId(@Param("id") Long id, @Param("actId") List<Integer> actIds);
+
+    /**
+     *  app查询当前用户待审核数据
+     * @param auditItems
+     * @return
+     */
+    List<AppAuditItemVO> selectOrderAuditItems(@Param("audit") AppAuditItemDTO auditItems);
 }

+ 24 - 7
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/IAuditPathsService.java

@@ -3,6 +3,8 @@ package com.ruoyi.approvalFlow.service;
 
 import com.ruoyi.approvalFlow.domain.AuditItems;
 import com.ruoyi.approvalFlow.domain.AuditPaths;
+import com.ruoyi.approvalFlow.domain.dto.AppAuditItemDTO;
+import com.ruoyi.approvalFlow.domain.vo.AppAuditItemVO;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
 
@@ -67,42 +69,57 @@ public interface IAuditPathsService {
 
     /**
      * 查询条数审批流配置主信息
+     *
      * @return 结果
      */
     public int selectCountAuditItems();
 
     /**
-     *  根据id、actId 查询审批流
+     * 根据id、actId 查询审批流
+     *
      * @param auditItems 条件
      * @return 结果
      */
     AjaxResult projectEndQueryPendingVal(AuditItems auditItems);
 
     /**
-     *  查询首页待审人员
-     * @param auditItems  查询条件
-     * @return  结果
+     * 查询首页待审人员
+     *
+     * @param auditItems 查询条件
+     * @return 结果
      */
     List<Map<String, Object>> selectAllAuditItems(AuditItems auditItems);
 
     /**
-     *  审批通过
+     * 审批通过
+     *
      * @param auditItems 审核人、单据信息
      * @return 结果
      */
     AjaxResult approved(AuditItems auditItems);
 
     /**
-     *  审批驳回
+     * 审批驳回
+     *
      * @param auditItems 审核人、单据信息
      * @return 结果
      */
     AjaxResult approvalRejected(AuditItems auditItems);
 
     /**
-     *  审批撤销
+     * 审批撤销
+     *
      * @param auditItems 审核人、单据信息
      * @return 结果
      */
     AjaxResult revoke(AuditItems auditItems);
+
+    /**
+     * 仓库APP查看订单审批流
+     *
+     * @param auditItems 条件
+     * @return 结果
+     */
+    List<AppAuditItemVO> selectOrderAuditItems(AppAuditItemDTO auditItems);
+
 }

+ 70 - 8
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditPathsServiceImpl.java

@@ -4,6 +4,9 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.ruoyi.approvalFlow.domain.*;
+import com.ruoyi.approvalFlow.domain.dto.AppAuditItemDTO;
+import com.ruoyi.approvalFlow.domain.enums.AuditStateEnum;
+import com.ruoyi.approvalFlow.domain.vo.AppAuditItemVO;
 import com.ruoyi.approvalFlow.mapper.*;
 import com.ruoyi.approvalFlow.service.IAuditPathsService;
 import com.ruoyi.basicData.domain.TFees;
@@ -12,6 +15,7 @@ import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.WarehouseException;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DictUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.finance.domain.TFee;
 import com.ruoyi.finance.mapper.TFeeMapper;
@@ -31,6 +35,7 @@ import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsitemsMapper;
 import com.ruoyi.warehouseBusiness.service.impl.TWarehouseAgreementServiceImpl;
 import com.ruoyi.warehouseBusiness.service.impl.TWarehouseBillsServiceImpl;
 import com.ruoyi.warehouseBusiness.service.impl.TWarehousebillsModifyServiceImpl;
+import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -381,19 +386,15 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                                     throw new WarehouseException("计算费用中存在已计算仓储费信息");
                                 }
                                 for (TWarehousebillsfees fees : feesList) {
-                                    if ("KCZZ".equals(fees.getfBilltype())) {
+                                    // 如果是库存总帐
+                                    if (WarehouseTypeEnum.KCZZ.getType().equals(fees.getfBilltype())) {
                                         TWhgenleg whgenleg = new TWhgenleg();
                                         whgenleg.setfId(fees.getSrcId());
                                         whgenleg.setfChargedate(DateUtils.dateAdd(fees.getfBillingDeadline(), 1));
                                         tWhgenlegMapper.updateTWhgenleg(whgenleg);
                                     } else {
                                         TWarehousebillsitems billsItem = new TWarehousebillsitems();
-                                        billsItem.setfId(fees.getSrcId());
-                                        billsItem.setfChargedate(DateUtils.dateAdd(fees.getfBillingDeadline(), 1));
-                                        if ("SJCK".equals(fees.getfBilltype())) {
-                                            billsItem.setfStorageFeeDeadline(fees.getfBillingDeadline());
-                                            billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.CALCULATE.getType());
-                                        }
+                                        storageFeeUpdateItem(fees, billsItem);
                                         tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
                                     }
                                 }
@@ -677,6 +678,24 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
     }
 
     /**
+     * 计算仓储费计算更新出库货转信息
+     *
+     * @param fees      仓储费信息
+     * @param billsItem 仓储费明细信息
+     */
+    private void storageFeeUpdateItem(TWarehousebillsfees fees, TWarehousebillsitems billsItem) {
+        billsItem.setfId(fees.getSrcId());
+        billsItem.setfChargedate(DateUtils.dateAdd(fees.getfBillingDeadline(), 1));
+        if ("SJCK".equals(fees.getfBilltype())) {
+            billsItem.setfStorageFeeDeadline(fees.getfBillingDeadline());
+            // 如果计算之前信息
+            if (!fees.getfBillingDeadline().after(new Date())) {
+                billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.CALCULATE.getType());
+            }
+        }
+    }
+
+    /**
      * 审批驳回
      *
      * @param auditItems 审核人、单据信息
@@ -694,7 +713,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                 tWarehouseBillsMapper.warehouseApprovalUpdate(auditItems, fettle);
             }
             tWarehousebillsfeesMapper.warehouseFeesFollowUpdate(auditItems.getBillId(), fettle, auditItems.getAuditItem());
-            if (Objects.equals(auditItems.getActId(), 150)) {
+            if (Objects.equals(auditItems.getActId(), 150L)) {
                 List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
                 for (TWarehousebillsfees wareItem : feesList) {
                     if (StringUtils.isNull(wareItem.getSrcId())) {
@@ -717,6 +736,10 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                             billsItem.setfChargedate(wareItem.getfBillingDeadline());
                             tWarehousebillsitemsMapper.updateTWarehousebillsitems(billsItem);
                         } else {
+                            // 如果计算之前信息
+                            if (!wareItem.getfBillingDeadline().after(new Date())) {
+                                billsItem.setIsCalculateStorageFees(WarehouseTypeEnum.NOT_CALCULATE.getType());
+                            }
                             billsItem.setfChargedate(wareItem.getfChargedate());
                         }
                         tWarehousebillsitemsMapper.agreementApprovalRejected(billsItem);
@@ -1097,4 +1120,43 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
         return AjaxResult.success();
     }
 
+    /**
+     * 仓库APP查看订单审批流
+     *
+     * @param auditItems 条件
+     * @return 结果
+     */
+    @Override
+    public List<AppAuditItemVO> selectOrderAuditItems(AppAuditItemDTO auditItems) {
+        // 赋值仓库类型
+        auditItems.setBillTypeList(WarehouseTypeEnum.getWarehousingType());
+        if (StringUtils.isNotEmpty(auditItems.getSendTimeInterval())) {
+            String[] split = auditItems.getSendTimeInterval().split(",");
+            List<String> list = Lists.newArrayList();
+            list.add(split[0] + " 00:00:00");
+            list.add(split[1] + " 23:59:59");
+            auditItems.setSendList(list);
+        }
+        // 查询
+        List<AppAuditItemVO> appAuditItemVOList = auditItemsMapper.selectOrderAuditItems(auditItems);
+        // 贸易方式
+        String type = "data_trademodes";
+        if (CollectionUtils.isNotEmpty(appAuditItemVOList)) {
+            appAuditItemVOList.forEach(vo -> {
+                if (StringUtils.isNotNull(vo.getFTrademodeid())) {
+                    // 转换贸易方式
+                    String dictLabel = DictUtils.getDictLabel(type, vo.getFTrademodeid().toString());
+                    if (StringUtils.isNotEmpty(dictLabel)) {
+                        vo.setFTrademodeName(dictLabel);
+                    }
+                }
+                // 转换状态
+                vo.setAudit(AuditStateEnum.fromType(vo.getAuditState()).getName());
+                // 转换活动号
+                vo.setActName(WarehouseActIdEnum.fromActId(vo.getActId().intValue()).getName());
+            });
+        }
+        return appAuditItemVOList;
+    }
+
 }

+ 14 - 4
ruoyi-warehouse/src/main/java/com/ruoyi/basicData/mapper/TWarehouseMapper.java

@@ -1,8 +1,6 @@
 package com.ruoyi.basicData.mapper;
 
 
-import com.ruoyi.basicData.domain.TWarehouseArea;
-import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.TWarehouse;
 import org.apache.ibatis.annotations.Param;
 
@@ -67,14 +65,16 @@ public interface TWarehouseMapper {
     public int deleteTWarehouseByIds(Long[] fIds);
 
     /**
-     *  检验编号唯一
+     * 检验编号唯一
+     *
      * @param fNo
      * @return
      */
     public TWarehouse checkFNoUnique(String fNo);
 
     /**
-     *  检验名称
+     * 检验名称
+     *
      * @param fNname
      * @return
      */
@@ -82,6 +82,7 @@ public interface TWarehouseMapper {
 
     /**
      * 检验地址
+     *
      * @param fAaddr
      * @return
      */
@@ -150,5 +151,14 @@ public interface TWarehouseMapper {
      * @return 结果
      */
     public int checkDeptExistarehouse(Long fId);
+
     public int checkDeptExistWarehouseItems(Long fId);
+
+    /**
+     * 根据ids查询仓库信息
+     *
+     * @param ids
+     * @return
+     */
+    List<TWarehouse> selectByIds(@Param("ids") List<Long> ids);
 }

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

@@ -7,6 +7,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
 import com.ruoyi.shipping.domain.TVoyage;
 import com.ruoyi.shipping.domain.TWarehousebillsCntr;
 import com.ruoyi.shipping.domain.TWarehousebillsCntritems;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.math.BigDecimal;
 import java.util.Date;
@@ -116,6 +117,8 @@ public class TWarehouseBills extends BaseEntity {
     /**
      * 入(出)库日期
      */
+    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "入", readConverterExp = "出=")
     private Date fBsdate;
 

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

@@ -4,8 +4,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.BaseEntity;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
 
 import java.math.BigDecimal;
 import java.util.Date;

+ 1 - 3
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/CalculateStorageFeesDto.java → ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/CalculateStorageFeesDTO.java

@@ -1,7 +1,5 @@
 package com.ruoyi.warehouseBusiness.domain.dto;
 
-import lombok.Data;
-
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -10,7 +8,7 @@ import java.util.Date;
  * @author caifc
  * @date 2021-10-22 9:43
  */
-public class CalculateStorageFeesDto implements Serializable {
+public class CalculateStorageFeesDTO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     //提单号

+ 41 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/StorageFeeRangeDTO.java

@@ -0,0 +1,41 @@
+package com.ruoyi.warehouseBusiness.domain.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 计算仓储费 金额阶层区间
+ *
+ * @author caifc
+ * @date 2021-11-05 8:43
+ */
+@Data
+@Builder
+@AllArgsConstructor
+public class StorageFeeRangeDTO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    // 开始时间
+    private Date startTime;
+
+    // 推进天数
+    private Long dayNum;
+
+    // 单价
+    private BigDecimal price = BigDecimal.ZERO;
+
+    // 计费数量
+    private BigDecimal qty = BigDecimal.ZERO;
+
+    // 金额
+    private BigDecimal amt = BigDecimal.ZERO;
+
+    // 计费单位
+    private Long unit;
+
+}

+ 2 - 4
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehouseBillsFeesModifyDto.java → ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/dto/WarehouseBillsFeesModifyDTO.java

@@ -1,9 +1,7 @@
 package com.ruoyi.warehouseBusiness.domain.dto;
 
 import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfeesModify;
-import lombok.Data;
 
-import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.List;
@@ -12,7 +10,7 @@ import java.util.List;
  * @author ruoyi
  * @date 2021-10-27
  */
-public class WarehouseBillsFeesModifyDto implements Serializable {
+public class WarehouseBillsFeesModifyDTO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -22,7 +20,7 @@ public class WarehouseBillsFeesModifyDto implements Serializable {
     private Long warehouseId;
 
     /**
-     *  追加费用信息
+     * 追加费用信息
      */
 //    @Min(1)
     private List<TWarehousebillsfeesModify> modifyList;

+ 14 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseActIdEnum.java

@@ -23,7 +23,11 @@ public enum WarehouseActIdEnum {
     TRANSFER(140, "CKDB", "调拨"),
     CALCULATE_COST(150, "JSCCF", "计算仓储费"),
     CLEARANCE(160, "HWTG", "货物通关"),
-    DIRECT_LOADING(170, "CDZZ", "场地直装"),
+    DIRECT_LOADING(190, "CDZZ", "场地直装"),
+    INSTOCK_ITEM(170, "RKMX", "入库明细审核"),
+    OUTSTOCK_ITEM(180, "RKMX", "入库明细审核"),
+
+
     FEE_CHANGES(1000, "", "费用变更"),
 
     //财务审批活动号
@@ -59,6 +63,15 @@ public enum WarehouseActIdEnum {
         throw new IllegalArgumentException("warehouse actId type not exist");
     }
 
+    public static WarehouseActIdEnum fromActId(Integer act) {
+        for (WarehouseActIdEnum type : WarehouseActIdEnum.values()) {
+            if (Objects.equals(type.getActId(), act)) {
+                return type;
+            }
+        }
+        throw new IllegalArgumentException("warehouse actId type not exist, {}");
+    }
+
     /**
      * 获取仓储业务活动号集合
      *

+ 46 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/enums/WarehouseTypeEnum.java

@@ -3,6 +3,8 @@ package com.ruoyi.warehouseBusiness.domain.enums;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -56,6 +58,18 @@ public enum WarehouseTypeEnum {
 
     FYBG_NO("FYBG", "费用变更"),
 
+
+    // 件数
+    BOX_NUM("1", "件"),
+    // 毛重
+    GROSS_WEIGHT("2", "吨"),
+    // 净重
+    NET_WEIGHT("3", "吨"),
+    // 尺码
+    MEASURE("4", "吨"),
+    // 统一
+    FIXED("5", "吨"),
+
     ;
 
     private final String type;
@@ -70,4 +84,36 @@ public enum WarehouseTypeEnum {
         throw new IllegalArgumentException("warehouse type not exist");
     }
 
+    // 获取业务类型集合
+    public static List<String> getWarehousingType() {
+        List<String> typList = new ArrayList<>();
+        typList.add(SJRK.type);
+        typList.add(SJCK.type);
+        typList.add(HQZY.type);
+        typList.add(CKDB.type);
+        typList.add(HWTG.type);
+        return typList;
+    }
+
+    /**
+     * 获取计费单位信息
+     *
+     * @param unit
+     * @return
+     */
+    public static String getUnitCharging(Long unit) {
+        if (Objects.equals(Long.parseLong(BOX_NUM.type), unit)) {
+            return BOX_NUM.name;
+        } else if (Objects.equals(Long.parseLong(GROSS_WEIGHT.type), unit)) {
+            return GROSS_WEIGHT.name;
+        } else if (Objects.equals(Long.parseLong(NET_WEIGHT.type), unit)) {
+            return NET_WEIGHT.name;
+        } else if (Objects.equals(Long.parseLong(MEASURE.type), unit)) {
+            return MEASURE.name;
+        } else if (Objects.equals(Long.parseLong(FIXED.type), unit)) {
+            return FIXED.name;
+        }
+        throw new IllegalArgumentException("warehouse Billing unit does not exist");
+    }
+
 }

+ 50 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/domain/vo/AppWarehouseInfoVO.java

@@ -0,0 +1,50 @@
+package com.ruoyi.warehouseBusiness.domain.vo;
+
+import com.ruoyi.shipping.domain.TWarehousebillsCntr;
+import com.ruoyi.warehouseBusiness.domain.TEnclosure;
+import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * app查询待审仓库明细数据
+ *
+ * @author caifc
+ * @date 2021-11-04 17:25
+ */
+@Data
+public class AppWarehouseInfoVO extends TWarehouseBills {
+    private static final long serialVersionUID = 1L;
+
+    // 货转客户名称
+    private String toCorpName;
+
+    // 商品名称
+    private String goodsName;
+
+    // 仓库名称
+    private String warehouseName;
+
+    // 调入仓库名称
+    private String inWarehouseName;
+
+    // 结算方式名称
+    private String stltypeName;
+
+    // 贸易方式名称
+    private String newTrademodeName;
+
+    // 计费单位名称
+    private String feetunitName;
+
+    // 计费单位名称
+    private String businessTypeName;
+
+    // 入库的箱型箱量
+    private List<TWarehousebillsCntr> cntrsList;
+
+    // 附件结合
+    private List<TEnclosure> enclosureList;
+
+}

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

@@ -652,9 +652,19 @@ public interface ITWarehouseBillsService {
     AjaxResult feeReviewSubmit(Long id);
 
     /**
-     *  根据id撤销已费用审核状态
+     * 根据id撤销已费用审核状态
+     *
      * @param id
      * @return
      */
     AjaxResult revokefeeReview(Long id);
+
+    /**
+     * app根据id查询详情
+     *
+     * @param id       主表id
+     * @param typeEnum 类型
+     * @return
+     */
+    AjaxResult appQueryInit(Long id, String typeEnum);
 }

+ 0 - 7
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/ITWarehousebillsfeesModifyService.java

@@ -1,12 +1,5 @@
 package com.ruoyi.warehouseBusiness.service;
 
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfeesModify;
-import com.ruoyi.warehouseBusiness.domain.dto.WarehouseBillsFeesModifyDto;
-import com.ruoyi.warehouseBusiness.domain.vo.WarehouseBillsFeesModifyVO;
-
-import java.util.List;
-
 /**
  * 仓库费变更明细Service接口
  *

+ 45 - 61
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseAgreementServiceImpl.java

@@ -23,7 +23,9 @@ import com.ruoyi.system.mapper.SysDeptMapper;
 import com.ruoyi.warehouseBusiness.domain.BillnoDel;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseAgreement;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseAgreementitems;
-import com.ruoyi.warehouseBusiness.domain.dto.CalculateStorageFeesDto;
+import com.ruoyi.warehouseBusiness.domain.dto.CalculateStorageFeesDTO;
+import com.ruoyi.warehouseBusiness.domain.dto.StorageFeeRangeDTO;
+import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
 import com.ruoyi.warehouseBusiness.domain.vo.StorageFeeCalculationResultVO;
 import com.ruoyi.warehouseBusiness.mapper.BillnoDelMapper;
 import com.ruoyi.warehouseBusiness.mapper.TWarehouseAgreementMapper;
@@ -439,7 +441,7 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
      * @return 结果
      * @author shanxin
      */
-    public StorageFeeCalculationResultVO getCarryingCost(CalculateStorageFeesDto storageFeesDto) {
+    public StorageFeeCalculationResultVO getCarryingCost(CalculateStorageFeesDTO storageFeesDto) {
         if (null == storageFeesDto.getfCorpid() ||
                 null == storageFeesDto.getfGoodsid() ||
                 null == storageFeesDto.getDays() ||
@@ -487,9 +489,6 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
                 continue; //将已算账的天数 与 计费规则的 最后一天作比较如果 已算10天 > 规则结束  不算帐
             }
 
-            String details;
-            String interval;
-
             if (storageFeesDto.getDays() >= dayLength) {
                 feeId = tWarehouseAgreementitems.getfFeeid();
                 BigDecimal calculate = this.getCalculate(qty, tWarehouseAgreementitems.getfPrice(), dayLength);
@@ -497,41 +496,37 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
 
                 storageFeesDto.setDays(storageFeesDto.getDays() - dayLength);
                 // 计算费用明细
-                details = assemblyBillingDetails(dayLength, tWarehouseAgreementitems.getfPrice(), qty, calculate);
+                String details = assemblyBillingDetails(StorageFeeRangeDTO.builder()
+                        .dayNum(dayLength).price(tWarehouseAgreementitems.getfPrice()).qty(qty).amt(calculate)
+                        .build());
+                remark = StringUtils.isEmpty(remark) ? details : remark + "," + details;
                 // 计算区间费用信息
-                interval = assemblyBillingInterval(storageFeesDto.getStartTime(), dayLength.intValue(), tWarehouseAgreementitems.getfPrice());
-                if (StringUtils.isEmpty(remark)) {
-                    remark = details;
-                } else {
-                    remark = remark + "," + details;
-                }
-                if (StringUtils.isEmpty(billingInterval)) {
-                    billingInterval = interval;
-                } else {
-                    billingInterval = billingInterval + "," + interval;
-                }
+                String costRange = assemblyBillingInterval(StorageFeeRangeDTO.builder()
+                        .startTime(storageFeesDto.getStartTime()).dayNum(dayLength).price(tWarehouseAgreementitems.getfPrice())
+                        .qty(qty).unit(agreementitems.getfFeeunitid())
+                        .build());
+                billingInterval = StringUtils.isEmpty(billingInterval) ? costRange : billingInterval + "," + costRange;
+
+                storageFeesDto.setStartTime(DateUtils.dateAdd(storageFeesDto.getStartTime(), dayLength.intValue()));
             } else {
                 feeId = tWarehouseAgreementitems.getfFeeid();
                 BigDecimal calculate = this.getCalculate(qty, tWarehouseAgreementitems.getfPrice(), storageFeesDto.getDays());
                 money = money.add(calculate);
                 // 计算费用明细
-                details = assemblyBillingDetails(storageFeesDto.getDays(), tWarehouseAgreementitems.getfPrice(), qty, calculate);
+                String details = assemblyBillingDetails(StorageFeeRangeDTO.builder()
+                        .dayNum(storageFeesDto.getDays()).price(tWarehouseAgreementitems.getfPrice()).qty(qty).amt(calculate)
+                        .build());
+                remark = StringUtils.isEmpty(remark) ? details : remark + "," + details;
                 // 计算区间费用信息
-                interval = assemblyBillingInterval(storageFeesDto.getStartTime(), storageFeesDto.getDays().intValue(), tWarehouseAgreementitems.getfPrice());
-                if (StringUtils.isEmpty(remark)) {
-                    remark = details;
-                } else {
-                    remark = remark + "," + details;
-                }
-                if (StringUtils.isEmpty(billingInterval)) {
-                    billingInterval = interval;
-                } else {
-                    billingInterval = billingInterval + "," + interval;
-                }
+                String interval = assemblyBillingInterval(StorageFeeRangeDTO.builder()
+                        .startTime(storageFeesDto.getStartTime()).dayNum(storageFeesDto.getDays())
+                        .price(tWarehouseAgreementitems.getfPrice())
+                        .qty(qty).unit(agreementitems.getfFeeunitid())
+                        .build());
+                billingInterval = StringUtils.isEmpty(billingInterval) ? interval : billingInterval + "," + interval;
                 break;
             }
         }
-
         return StorageFeeCalculationResultVO.builder()
                 .qty(qty)
                 .amt(money)
@@ -550,57 +545,47 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
      * @param unit           计费单位
      * @return 结果
      */
-    public BigDecimal acquiredQuantity(CalculateStorageFeesDto storageFeesDto, Long unit) {
+    public BigDecimal acquiredQuantity(CalculateStorageFeesDTO storageFeesDto, Long unit) {
         BigDecimal fQty = new BigDecimal(0);
-        // 件数
-        long boxNum = 1;
-        // 毛重
-        long grossWeight = 2;
-        // 净重
-        long netWeight = 3;
-        // 尺码
-        long size = 4;
-        // 统一
-        long fixed = 5;
-        if (unit.equals(boxNum)) {
+        if (unit.equals(Long.parseLong(WarehouseTypeEnum.BOX_NUM.getType()))) {
             return storageFeesDto.getfQty().setScale(2, RoundingMode.HALF_UP);
-        } else if (unit.equals(grossWeight)) {
+        } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.GROSS_WEIGHT.getType()))) {
             fQty = storageFeesDto.getfGrossweight();
-        } else if (unit.equals(netWeight)) {
+        } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.NET_WEIGHT.getType()))) {
             fQty = storageFeesDto.getfNetweight();
-        } else if (unit.equals(size)) {
+        } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.MEASURE.getType()))) {
             fQty = storageFeesDto.getfVolumn();
-        } else if (unit.equals(fixed)) {
+        } else if (unit.equals(Long.parseLong(WarehouseTypeEnum.FIXED.getType()))) {
             fQty = BigDecimal.ONE;
         }
         // 结果值除以1000 保留两位
         BigDecimal divisor = new BigDecimal("1000");
-        return fQty.divide(divisor, 2, BigDecimal.ROUND_HALF_UP);
+        return fQty.divide(divisor, 2, RoundingMode.HALF_UP);
     }
 
     /**
      * 组装运费明细记录
      *
-     * @param dayLength 天数
-     * @param price     单价
-     * @param itemNums  数量
-     * @param calculate 金额
+     * @param rangeDto 金额
+     * @return
      */
-    private String assemblyBillingDetails(Long dayLength, BigDecimal price, BigDecimal itemNums, BigDecimal calculate) {
-        return dayLength + "天*" + price + "元*" + itemNums + " = " + calculate + "元";
+    private String assemblyBillingDetails(StorageFeeRangeDTO rangeDto) {
+        return rangeDto.getDayNum() + "天*" + rangeDto.getPrice() + "元*" + rangeDto.getQty() + " = " + rangeDto.getAmt() + "元";
     }
 
     /**
      * 计算计费区间
      *
-     * @param startTime 开始时间
-     * @param days      推进天数
-     * @param price     单价
+     * @param feeRangeDto
      * @return 计算计费区间
      */
-    private String assemblyBillingInterval(Date startTime, int days, BigDecimal price) {
-        return DateUtils.dateTime(startTime) + "->" + DateUtils.dateTime(DateUtils.dateAdd(startTime, days)) +
-                "*" + price + "元";
+    private String assemblyBillingInterval(StorageFeeRangeDTO feeRangeDto) {
+        // 求总金额
+        BigDecimal bigDecimal = feeRangeDto.getPrice().multiply(feeRangeDto.getQty()).multiply(new BigDecimal(feeRangeDto.getDayNum()));
+
+        return DateUtils.dateTime(feeRangeDto.getStartTime()) + "至" + DateUtils.dateTime(DateUtils.dateAdd(feeRangeDto.getStartTime(), (feeRangeDto.getDayNum().intValue() - 1))) +
+                "*" + feeRangeDto.getPrice() + "元 " + feeRangeDto.getDayNum() + "天" + feeRangeDto.getQty() + WarehouseTypeEnum.getUnitCharging(feeRangeDto.getUnit())
+                + " " + bigDecimal + "元";
     }
 
     /**
@@ -612,11 +597,10 @@ public class TWarehouseAgreementServiceImpl implements ITWarehouseAgreementServi
      * @return
      */
     public BigDecimal getCalculate(BigDecimal itemNumsBig, BigDecimal unitPrice, Long dateLength) {
-        BigDecimal money = new BigDecimal(0);
+        BigDecimal money;
         BigDecimal bigDaysBig = new BigDecimal(dateLength);
         money = itemNumsBig.multiply(unitPrice).multiply(bigDaysBig);
         return money;
     }
 
-
 }

+ 237 - 10
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -24,6 +24,7 @@ import com.ruoyi.common.core.domain.entity.TWarehouse;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.exception.WarehouseException;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.DictUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.ip.AddressUtils;
@@ -44,10 +45,11 @@ import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.impl.SysConfigServiceImpl;
 import com.ruoyi.warehouseBusiness.domain.*;
-import com.ruoyi.warehouseBusiness.domain.dto.CalculateStorageFeesDto;
+import com.ruoyi.warehouseBusiness.domain.dto.CalculateStorageFeesDTO;
 import com.ruoyi.warehouseBusiness.domain.enums.FeesTypeEnum;
 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseActIdEnum;
 import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
+import com.ruoyi.warehouseBusiness.domain.vo.AppWarehouseInfoVO;
 import com.ruoyi.warehouseBusiness.domain.vo.StorageFeeCalculationResultVO;
 import com.ruoyi.warehouseBusiness.excel.*;
 import com.ruoyi.warehouseBusiness.mapper.*;
@@ -3997,7 +3999,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             if (StringUtils.isNull(item.get("fBillingway"))) {
                 throw new WarehouseException("单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到库存总账的计费单位,请确认");
             }
-            CalculateStorageFeesDto storageFeesDto = new CalculateStorageFeesDto();
+            CalculateStorageFeesDTO storageFeesDto = new CalculateStorageFeesDTO();
             storageFeesDto.setfCorpid(warehouseBills.getfCorpid());
             storageFeesDto.setCangKey(cangKey);
             storageFeesDto.setWarehouseId(Long.parseLong(String.valueOf(item.get("warehouse"))));
@@ -4022,12 +4024,12 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             // 要计费天数
             long fBillingDays;
             if (WarehouseTypeEnum.SJCK.getType().equals(fBilltype)) {
-                fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fOriginalbilldate"));
+                fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fChargedate"));
                 fBillingDays = fInventoryDays;
                 storageFeesDto.setStartTime((Date) item.get("fOriginalbilldate"));
                 storageFeesDto.setEndTime(fBsdate);
             } else if (WarehouseTypeEnum.HQZY.getType().equals(fBilltype)) {
-                fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fOriginalbilldate")) ;
+                fInventoryDays = DateUtils.getDateDay(fBsdate, (Date) item.get("fOriginalbilldate"));
                 fBillingDays = fInventoryDays;
                 storageFeesDto.setStartTime(fBsdate);
                 storageFeesDto.setEndTime((Date) item.get("fOriginalbilldate"));
@@ -4094,7 +4096,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
             fees.setfTaxrate(new BigDecimal(taxRate.get(0).getDictValue()));
             fees.setfOriginalbilldate((Date) item.get("fOriginalbilldate"));
-            fees.setfBillingway(Long.parseLong(String.valueOf(item.get("fBillingway"))));
+
+            fees.setfBillingway(feeCalculationResultVO.getUnit());
+
             tWarehousebillsfeesMapper.insertTWarehousebillsfees(fees);
             itemsList.add(fees);
         }
@@ -4291,8 +4295,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 BigDecimal netweightcBlc = whgenleg.getfNetweightblc().add(item.getfNetweight());
                 whgenleg.setfNetweightc(netweightcBlc);
                 return whgenleg;
-           } else
-                 // 调拨
+            } else
+                // 调拨
                 if (WarehouseTypeEnum.CKDB.getType().equals(item.getfBilltype())) {
                     BigDecimal netweightcBlc;
                     BigDecimal grossweightblc;
@@ -4374,7 +4378,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
                 map.put("error", "单号:" + item.get("fBillno") + ",业务日期:" + item.get("fBsdate") + "未找到库存总账的计费单位,请确认");
                 return map;
             }
-            CalculateStorageFeesDto storageFeesDto = new CalculateStorageFeesDto();
+            CalculateStorageFeesDTO storageFeesDto = new CalculateStorageFeesDTO();
             storageFeesDto.setfCorpid(warehouseBills.getfCorpid());
             storageFeesDto.setCangKey(warehouse);
             storageFeesDto.setWarehouseId(Long.parseLong(String.valueOf(item.get("warehouse"))));
@@ -6171,7 +6175,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         } else if (WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
             actId = 160L;
         } else if ("CDZZ".equals(billsType)) {
-            actId = 170L;
+            actId = 190L;
         }
         return actId;
     }
@@ -6767,7 +6771,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
     }
 
     /**
-     *  根据id撤销已费用审核状态
+     * 根据id撤销已费用审核状态
+     *
      * @param id
      * @return
      */
@@ -6784,4 +6789,226 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         return AjaxResult.success(tWarehousebillsfeesMapper.selectTWarehousebillsfeesById(id));
     }
 
+    /**
+     * app根据id查询详情
+     *
+     * @param id       主表id
+     * @param typeEnum 类型
+     * @return
+     */
+    @Override
+    public AjaxResult appQueryInit(Long id, String typeEnum) {
+        if (Objects.isNull(id)) {
+            return AjaxResult.error("无效id");
+        }
+        TWarehouseBills warehouseBills = tWarehouseBillsMapper.selectTWarehousebillsById(id);
+        if (Objects.isNull(warehouseBills)) {
+            return AjaxResult.error("仓库信息无效");
+        }
+        AppWarehouseInfoVO infoVO = new AppWarehouseInfoVO();
+
+        BeanUtils.copyProperties(warehouseBills, infoVO);
+        // 如果是入库
+        if (infoVO.getfBilltype().equals(WarehouseTypeEnum.SJRK.getType())) {
+            isInStock(infoVO);
+        }
+        // 如果是入库
+        if (infoVO.getfBilltype().equals(WarehouseTypeEnum.SJCK.getType())) {
+            isOutStock(infoVO);
+        }
+        // 如果是货权转移
+        if (warehouseBills.getfBilltype().equals(WarehouseTypeEnum.HQZY.getType())) {
+            isGoodsForwarding(infoVO);
+        }
+        // 如果是调拨
+        if (warehouseBills.getfBilltype().equals(WarehouseTypeEnum.CKDB.getType())) {
+            isTransfer(infoVO);
+        }
+        // 查询订单附件
+        List<TEnclosure> tEnclosureList = tEnclosureMapper.selectTEnclosureByPId(infoVO.getfId());
+        if (CollectionUtils.isNotEmpty(tEnclosureList)) {
+            infoVO.setEnclosureList(tEnclosureList);
+        }
+        return AjaxResult.success(infoVO);
+    }
+
+    /**
+     * 如果是入库
+     *
+     * @param infoVO
+     * @return
+     */
+    private void isInStock(AppWarehouseInfoVO infoVO) {
+        if (StringUtils.isNotNull(infoVO.getfCorpid())) {
+            TCorps corps = tCorpsMapper.selectTCorpsById(infoVO.getfCorpid());
+            // 赋值客户id
+            infoVO.setCorpName(corps.getfName());
+        }
+        // 计费单位
+        if (StringUtils.isNotNull(infoVO.getfFeetunit())) {
+            String type = "data_unitfees";
+            String dictLabel = DictUtils.getDictLabel(type, infoVO.getfFeetunit().toString());
+            if (StringUtils.isNotEmpty(dictLabel)) {
+                infoVO.setFeetunitName(dictLabel);
+            }
+        }
+        // 商品信息
+        if (StringUtils.isNotNull(infoVO.getfGoodsid())) {
+            // 添加商品信息
+            TGoods tGoods = tGoodsMapper.selectTGoodsById(infoVO.getfGoodsid());
+            if (Objects.nonNull(tGoods)) {
+                infoVO.setGoodsName(tGoods.getfName());
+            }
+        }
+        // 查询仓库信息
+        TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(infoVO.getfWarehouseid());
+        if (Objects.nonNull(tWarehouse)) {
+            infoVO.setWarehouseName(tWarehouse.getfName());
+        }
+        // 入库查询箱型箱量
+        TWarehousebillsCntr warehousebillsCntr = new TWarehousebillsCntr();
+        warehousebillsCntr.setfPid(infoVO.getfId());
+        List<TWarehousebillsCntr> cntrsList = tWarehousebillsCntrMapper.selectTWarehousebillsCntrList(warehousebillsCntr);
+        if (CollectionUtils.isNotEmpty(cntrsList)) {
+            List<Long> cntrIds = cntrsList.stream().map(TWarehousebillsCntr::getfCntrid).distinct().collect(toList());
+            if (CollectionUtils.isNotEmpty(cntrIds)) {
+                List<TCntr> cntrList = tCntrMapper.selectByIds(cntrIds);
+
+                cntrsList.forEach(li -> {
+                    TCntr cntr = cntrList.stream().filter(c -> Objects.equals(c.getfId(), li.getfCntrid())).findFirst()
+                            .orElseThrow(() -> new WarehouseException("找不到集装箱信息"));
+                    li.setCntrName(cntr.getfName());
+                });
+            }
+            infoVO.setCntrsList(cntrsList);
+        }
+    }
+
+    /**
+     * 如果是出库
+     *
+     * @param infoVO
+     * @return
+     */
+    private void isOutStock(AppWarehouseInfoVO infoVO) {
+        if (StringUtils.isNotNull(infoVO.getfCorpid())) {
+            TCorps corps = tCorpsMapper.selectTCorpsById(infoVO.getfCorpid());
+            // 赋值客户id
+            infoVO.setCorpName(corps.getfName());
+        }
+        // 结算方式
+        if (StringUtils.isNotNull(infoVO.getfStltypeid())) {
+            // 定义结算方式
+            String fStltypeid = "data_stltype_type";
+            String dictLabel = DictUtils.getDictLabel(fStltypeid, infoVO.getfStltypeid().toString());
+            infoVO.setStltypeName(dictLabel);
+        }
+        // 查询仓库信息
+        TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(infoVO.getfWarehouseid());
+        if (Objects.nonNull(tWarehouse)) {
+            infoVO.setWarehouseName(tWarehouse.getfName());
+        }
+    }
+
+    /**
+     * 如果是货转
+     *
+     * @param infoVO
+     * @return
+     */
+    private void isGoodsForwarding(AppWarehouseInfoVO infoVO) {
+        // 查询客户信息
+        List<Long> corpIds = new ArrayList<>();
+        // 如果是货转客户那么也要查询
+        if (StringUtils.isNotNull(infoVO.getfTocorpid())) {
+            corpIds.add(infoVO.getfTocorpid());
+        }
+        corpIds.add(infoVO.getfCorpid());
+        List<TCorps> corpsList = tCorpsMapper.selectByIds(corpIds);
+        // 赋值客户id
+        TCorps corps = corpsList.stream().filter(li -> Objects.equals(li.getfId(), infoVO.getfCorpid())).findFirst()
+                .orElseThrow(() -> new WarehouseException("客户不存在"));
+        infoVO.setCorpName(corps.getfName());
+        // 赋值货转客户id
+        TCorps toCorp = corpsList.stream().filter(li -> Objects.equals(li.getfId(), infoVO.getfTocorpid())).findFirst()
+                .orElseThrow(() -> new WarehouseException("客户不存在"));
+        infoVO.setToCorpName(toCorp.getfName());
+        // 查询仓库信息
+        TWarehouse tWarehouse = tWarehouseMapper.selectTWarehouseById(infoVO.getfWarehouseid());
+        if (Objects.nonNull(tWarehouse)) {
+            infoVO.setWarehouseName(tWarehouse.getfName());
+        }
+        // 结算方式
+        if (StringUtils.isNotNull(infoVO.getfStltypeid())) {
+            // 定义结算方式
+            String fStltypeid = "data_stltype_type";
+            String dictLabel = DictUtils.getDictLabel(fStltypeid, infoVO.getfStltypeid().toString());
+            infoVO.setStltypeName(dictLabel);
+        }
+        // 贸易方式
+        if (StringUtils.isNotNull(infoVO.getfNewTrademodeid())) {
+            String type = "data_trademodes";
+            // 转换贸易方式
+            String dictLabel = DictUtils.getDictLabel(type, infoVO.getfNewTrademodeid().toString());
+            if (StringUtils.isNotEmpty(dictLabel)) {
+                infoVO.setNewTrademodeName(dictLabel);
+            }
+        }
+        // 计费单位
+        if (StringUtils.isNotNull(infoVO.getfFeetunit())) {
+            String type = "data_unitfees";
+            String dictLabel = DictUtils.getDictLabel(type, infoVO.getfFeetunit().toString());
+            if (StringUtils.isNotEmpty(dictLabel)) {
+                infoVO.setFeetunitName(dictLabel);
+            }
+        }
+        // 商品信息
+        if (StringUtils.isNotNull(infoVO.getfGoodsid())) {
+            // 添加商品信息
+            TGoods tGoods = tGoodsMapper.selectTGoodsById(infoVO.getfGoodsid());
+            if (Objects.nonNull(tGoods)) {
+                infoVO.setGoodsName(tGoods.getfName());
+            }
+        }
+    }
+
+    /**
+     * 如果是调拨
+     *
+     * @param infoVO
+     * @return
+     */
+    private void isTransfer(AppWarehouseInfoVO infoVO) {
+        if (StringUtils.isNotNull(infoVO.getfCorpid())) {
+            TCorps corps = tCorpsMapper.selectTCorpsById(infoVO.getfCorpid());
+            // 赋值客户id
+            infoVO.setCorpName(corps.getfName());
+        }
+        // 作业类型
+        if (StringUtils.isNotNull(infoVO.getfBusinessType())) {
+            String type = "st_trans_type";
+            String dictLabel = DictUtils.getDictLabel(type, infoVO.getfBusinessType().toString());
+            if (StringUtils.isNotEmpty(dictLabel)) {
+                infoVO.setBusinessTypeName(dictLabel);
+            }
+        }
+        // 仓库id集合
+        List<Long> warehouseIds = new ArrayList<>();
+        if (StringUtils.isNotNull(infoVO.getfInwarehouseid())) {
+            warehouseIds.add(infoVO.getfInwarehouseid());
+        }
+        warehouseIds.add(infoVO.getfWarehouseid());
+        // 查询仓库信息
+        List<TWarehouse> tWarehouseList = tWarehouseMapper.selectByIds(warehouseIds);
+
+        TWarehouse tWarehouse = tWarehouseList.stream().filter(li -> Objects.equals(li.getfId(), infoVO.getfWarehouseid())).findFirst()
+                .orElseThrow(() -> new WarehouseException("仓库不存在"));
+        infoVO.setWarehouseName(tWarehouse.getfName());
+        // 调入仓库
+        TWarehouse inWarehouse = tWarehouseList.stream().filter(li -> Objects.equals(li.getfId(), infoVO.getfInwarehouseid())).findFirst()
+                .orElseThrow(() -> new WarehouseException("仓库不存在"));
+        infoVO.setInWarehouseName(inWarehouse.getfName());
+    }
+
+
 }

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

@@ -282,6 +282,7 @@ public class TWarehousebillsModifyServiceImpl implements ITWarehousebillsModifyS
         feesList.forEach(li -> {
             // 更新明细表状态
             li.setUpdateTime(new Date());
+            li.setfReviewDate(new Date());
             li.setUpdateBy(SecurityUtils.getUsername());
             li.setfStatus(Long.parseLong(typeEnum.getType()));
             li.setfBillstatus(Long.parseLong(typeEnum.getType()));

+ 0 - 26
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehousebillsfeesModifyServiceImpl.java

@@ -1,33 +1,7 @@
 package com.ruoyi.warehouseBusiness.service.impl;
 
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.ruoyi.basicData.domain.TCorps;
-import com.ruoyi.basicData.domain.TFees;
-import com.ruoyi.basicData.domain.TGoods;
-import com.ruoyi.basicData.mapper.TCorpsMapper;
-import com.ruoyi.basicData.mapper.TFeesMapper;
-import com.ruoyi.basicData.mapper.TGoodsMapper;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.exception.WarehouseException;
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
-import com.ruoyi.warehouseBusiness.domain.TWarehousebillsfeesModify;
-import com.ruoyi.warehouseBusiness.domain.dto.WarehouseBillsFeesModifyDto;
-import com.ruoyi.warehouseBusiness.domain.enums.FeesTypeEnum;
-import com.ruoyi.warehouseBusiness.domain.vo.WarehouseBillsFeesModifyVO;
-import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
-import com.ruoyi.warehouseBusiness.mapper.TWarehousebillsfeesModifyMapper;
 import com.ruoyi.warehouseBusiness.service.ITWarehousebillsfeesModifyService;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Arrays;
-import java.util.Date;
-import java.util.List;
-import java.util.Objects;
 
 import static com.ruoyi.common.core.text.Convert.toLongArray;
 

+ 51 - 0
ruoyi-warehouse/src/main/resources/mapper/approvalFlow/AuditItemsMapper.xml

@@ -30,6 +30,19 @@
         <result property="times"    column="times"    />
     </resultMap>
 
+    <resultMap type="com.ruoyi.approvalFlow.domain.vo.AppAuditItemVO" id="AppQueryResult">
+        <result property="id"    column="id"    />
+        <result property="actId"    column="act_id"    />
+        <result property="billId"    column="f_id"    />
+        <result property="type"    column="type"    />
+        <result property="fMblno"    column="f_mblno"    />
+        <result property="fTrademodeid"    column="f_trademodeid"    />
+        <result property="fQty"    column="f_qty"    />
+        <result property="fBsdate"    column="f_bsdate"    />
+        <result property="refno4"    column="f_billtype"    />
+        <result property="auditState"    column="audit_status"    />
+    </resultMap>
+
     <sql id="selectAuditItemsVo">
         select id, act_id, bill_id, bill_no, refno1, refno2, refno3, path_id, level_id, iffinal_item, branch_id, send_user_id, send_name,
          send_time, send_msg, audit_user_id, audit_item, audit_op_time, audit_msg, audit_status, bill_time, fid_status, times from audit_items
@@ -350,4 +363,42 @@
         AND it.fid_status = #{fidStatus}
     </update>
 
+    <select id="selectOrderAuditItems" resultMap="AppQueryResult">
+        SELECT
+            a.id,
+            w.f_bsdate,
+            w.f_id,
+            w.f_billtype,
+            a.act_id,
+            a.audit_status,
+            '仓库' type,
+            w.f_mblno,
+            w.f_trademodeid,
+            w.f_qty,
+            g.f_name goodsName,
+            ware.f_name warehouseName
+        FROM
+            audit_items a
+            LEFT JOIN t_warehousebills w ON w.f_id = a.bill_id
+            LEFT JOIN t_corps t ON t.f_id = w.f_corpid
+            LEFT JOIN t_goods g ON g.f_id = w.f_goodsid
+            LEFT JOIN t_warehouse ware ON ware.f_id = IF ( w.f_billtype = 'CKDB', w.f_inwarehouseid, w.f_warehouseid )
+        <where>
+            w.f_billtype in
+            <foreach collection="audit.billTypeList" item="type" index="index" open="(" close=")" separator=",">
+                #{type}
+            </foreach>
+            and a.audit_user_id = #{audit.auditUserId}
+            <if test='audit.auditStatus != null and audit.auditStatus!= ""'>
+                and a.audit_status = #{audit.auditStatus}
+            </if>
+            <if test='audit.corpId != null and audit.corpId!= ""'>
+                and w.f_corpid = #{audit.corpId}
+            </if>
+            <if test='audit.sendList != null and audit.sendList[1]!= ""'>
+                and a.send_time BETWEEN #{audit.sendList[0]} AND #{audit.sendList[1]}
+            </if>
+        </where>
+    </select>
+
 </mapper>

+ 8 - 0
ruoyi-warehouse/src/main/resources/mapper/basicData/TWarehouseMapper.xml

@@ -268,4 +268,12 @@
         where f_warehouselocid = #{fId}
           and del_flag = '0'
     </select>
+
+    <select id="selectByIds" resultMap="TWarehouseResult">
+        <include refid="selectTWarehouseVo"/>
+          where f_id in
+        <foreach item="id" collection="ids" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </select>
 </mapper>