Sfoglia il codice sorgente

仓库业务->修改bug

caifc 3 anni fa
parent
commit
5a3e2a62e0

+ 3 - 6
ruoyi-warehouse/src/main/java/com/ruoyi/approvalFlow/service/impl/AuditPathsServiceImpl.java

@@ -361,7 +361,8 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
                             if (Objects.equals(auditItems.getActId(), 120L)) {
                                 List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(auditItems.getBillId());
                                 // 过滤出明细信息查询是否存在已计算仓储费
-                                List<Long> ids = feesList.stream().map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
+                                List<Long> ids = feesList.stream().filter(li -> !li.getfBilltype().equals(WarehouseTypeEnum.KCZZ.getType()))
+                                        .map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
                                 if (CollectionUtils.isNotEmpty(ids) && tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
                                     throw new WarehouseException("计算费用中存在已计算仓储费信息");
                                 }
@@ -1068,11 +1069,7 @@ public class AuditPathsServiceImpl implements IAuditPathsService {
         } else if (Objects.equals(auditItems.getActId(), WarehouseActIdEnum.FEE_CHANGES.getActId().longValue())) {
             warehousebillsModifyService.withdrawalApprovalById(auditItems.getBillId());
         }
-        int deleteNum = auditItemsMapper.deletePurchaseApproval(auditItems);
-        if (deleteNum == 0) {
-            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
-            return AjaxResult.error("审批撤销失败: 更新审批状态失败");
-        }
+        auditItemsMapper.deletePurchaseApproval(auditItems);
         return AjaxResult.success();
     }
 

+ 0 - 3
ruoyi-warehouse/src/main/java/com/ruoyi/finance/domain/excel/GeneralLedgerExcel.java

@@ -13,9 +13,6 @@ public class GeneralLedgerExcel implements Serializable {
     @Excel(name = "结算单位")
     private String fFeesName;
 
-    @Excel(name = "提单号")
-    private String fMblno;
-
     @Excel(name = "应付金额")
     private BigDecimal fAmount;
 

+ 0 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/finance/service/impl/TFeeServiceImpl.java

@@ -1281,7 +1281,6 @@ public class TFeeServiceImpl implements ITFeeService {
         List<FeeVO> feeVOList = tFeeMapper.selectFinancialLedgerList(tWareHouseFees);
         feeVOList.forEach(vo -> {
             GeneralLedgerExcel ledgerExcel = new GeneralLedgerExcel();
-            ledgerExcel.setFMblno(vo.getFMblno());
             ledgerExcel.setFAmount(vo.getFAmount());
             ledgerExcel.setFFeesName(vo.getFFeesName());
             ledgerExcel.setNnfinished(vo.getNnfinished());

+ 3 - 0
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/domain/vo/WhgenlegVO.java

@@ -25,6 +25,9 @@ public class WhgenlegVO extends TWhgenleg {
     // 贸易方式
     private String trademodeName;
 
+    // 单据类型
+    private String fBilltype;
+
     // 数量
     private BigDecimal qty;
 

+ 9 - 2
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/mapper/TWhgenlegMapper.java

@@ -145,9 +145,16 @@ public interface TWhgenlegMapper {
     int queryChangedByFchargedate(@Param("ids") List<Long> ids, @Param("time")Date chargedate);
 
     /**
-     *  库存总帐查询来源明细
+     *  库存总帐入库、出库查询来源明细
      * @param tWhgenleg
      * @return
      */
-    List<WhgenlegVO> selectWhgenlegDetailsList(TWhgenleg tWhgenleg);
+    List<WhgenlegVO> selectStockDetailsList(TWhgenleg tWhgenleg);
+
+    /**
+     *  库存总帐货转、调拨、通关查询来源明细
+     * @param tWhgenleg
+     * @return
+     */
+    List<WhgenlegVO> selectOtherDetailsList(TWhgenleg tWhgenleg);
 }

+ 18 - 4
ruoyi-warehouse/src/main/java/com/ruoyi/reportManagement/service/impl/TWhgenlegServiceImpl.java

@@ -22,6 +22,7 @@ import com.ruoyi.reportManagement.excel.Whgenleg;
 import com.ruoyi.reportManagement.mapper.TWhgenlegMapper;
 import com.ruoyi.reportManagement.service.ITWhgenlegService;
 import com.ruoyi.warehouseBusiness.domain.TWarehouseBills;
+import com.ruoyi.warehouseBusiness.domain.enums.WarehouseTypeEnum;
 import com.ruoyi.warehouseBusiness.mapper.TWarehouseBillsMapper;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -118,10 +119,20 @@ public class TWhgenlegServiceImpl implements ITWhgenlegService {
                 tWhgenleg.setfLocation(0L);
             }
         }
-        List<WhgenlegVO> whgenlegVOList = tWhgenlegMapper.selectWhgenlegDetailsList(tWhgenleg);
-        if (CollectionUtils.isNotEmpty(whgenlegVOList)) {
+        List<WhgenlegVO> voList = new ArrayList<>();
+        // 查询入库、出库明细
+        List<WhgenlegVO> stockVOList = tWhgenlegMapper.selectStockDetailsList(tWhgenleg);
+        if (CollectionUtils.isNotEmpty(stockVOList)) {
+            voList = stockVOList;
+        }
+        // 查询货转、调拨、通关数据
+        List<WhgenlegVO> otherVOList = tWhgenlegMapper.selectOtherDetailsList(tWhgenleg);
+        if (CollectionUtils.isNotEmpty(otherVOList)) {
+            voList.addAll(otherVOList);
+        }
+        if (CollectionUtils.isNotEmpty(voList)) {
             List<WhgenlegVO> legVoList = new ArrayList<>();
-            Map<Long, List<WhgenlegVO>> mapById = whgenlegVOList.stream().collect(Collectors.groupingBy(WhgenlegVO::getfId));
+            Map<Long, List<WhgenlegVO>> mapById = voList.stream().collect(Collectors.groupingBy(WhgenlegVO::getfId));
             mapById.forEach((key, value) -> {
                 WhgenlegVO whgenlegVO = new WhgenlegVO();
                 WhgenlegVO vo = value.stream().findFirst().orElseThrow(() -> new WarehouseException("缺少明细信息"));
@@ -134,11 +145,14 @@ public class TWhgenlegServiceImpl implements ITWhgenlegService {
                 whgenlegVO.setNetweight(value.stream().map(WhgenlegVO::getNetweight).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
                 // 毛重
                 whgenlegVO.setGrossweight(value.stream().map(WhgenlegVO::getGrossweight).reduce(BigDecimal::add).orElse(BigDecimal.ZERO));
+                // 业务类型
+                WarehouseTypeEnum storageType = WarehouseTypeEnum.fromTypeAndBusinessType(whgenlegVO.getFBilltype(), "storageType");
+                whgenlegVO.setFBilltype(storageType.getName());
                 legVoList.add(whgenlegVO);
             });
             return AjaxResult.success(legVoList);
         }
-        return AjaxResult.success(whgenlegVOList);
+        return AjaxResult.success(voList);
     }
 
     /**

+ 1 - 1
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/CalculationWarehouseService.java

@@ -14,7 +14,7 @@ public interface CalculationWarehouseService {
      * @param warehouseBills 主表数据
      * @return 状态
      */
-    Long calculationBillStatus(TWarehouseBills warehouseBills);
+    void calculationBillStatus(TWarehouseBills warehouseBills);
 
     /**
      * 仓库计算明细件数、毛重、净重总和

+ 21 - 19
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/component/impl/CalculationWarehouseServiceImpl.java

@@ -33,31 +33,33 @@ public class CalculationWarehouseServiceImpl implements CalculationWarehouseServ
      * @return 状态
      */
     @Override
-    public Long calculationBillStatus(TWarehouseBills warehouseBills) {
+    public void calculationBillStatus(TWarehouseBills warehouseBills) {
 
         List<TWarehousebillsitems> warehousebillsitems = warehousebillsitemsMapper.selectItemsStatusByPid(warehouseBills.getfId());
         // 如果没有明细则是未xxx
         if (CollectionUtils.isEmpty(warehousebillsitems)) {
-            return 1L;
-        }
-        // 代表有明细数据
-        long count;
-        // 判断是否货权转移
-        if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype())) {
-            count = warehousebillsitems.stream().filter(item ->
-                    !Objects.equals(item.getfBillstatus(), 6L)
-            ).count();
+            warehouseBills.setfItemsStatus(1L);
         } else {
-            count = warehousebillsitems.stream().filter(item ->
-                            Objects.equals(item.getfBillstatus(), 40L))
-                    .count();
-        }
-        // 如果明细中不存在已经操作库存总帐的则判定xx中
-        if (Objects.equals(warehousebillsitems.size(), count)) {
-            return 4L;
+            // 代表有明细数据
+            long count;
+            // 判断是否货权转移
+            if (WarehouseTypeEnum.HQZY.getType().equals(warehouseBills.getfBilltype())) {
+                count = warehousebillsitems.stream().filter(item ->
+                        !Objects.equals(item.getfBillstatus(), 6L)
+                ).count();
+            } else {
+                count = warehousebillsitems.stream().filter(item ->
+                                Objects.equals(item.getfBillstatus(), 40L))
+                        .count();
+            }
+            // 如果明细中不存在已经操作库存总帐的则判定xx中
+            if (Objects.equals((long) warehousebillsitems.size(), count)) {
+                warehouseBills.setfItemsStatus(4L);
+            } else {
+                // 最终判定 已经xxx
+                warehouseBills.setfItemsStatus(2L);
+            }
         }
-        // 最终判定 已经xxx
-        return 2L;
     }
 
     /**

+ 11 - 12
ruoyi-warehouse/src/main/java/com/ruoyi/warehouseBusiness/service/impl/TWarehouseBillsServiceImpl.java

@@ -624,7 +624,6 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         if (StringUtils.isNull(warehouseBills.getfId())) {
             // 如果是新数据
             warehouseBills.setfBillstatus(2L);
-            warehouseBills.setfItemsStatus(1L);
             warehouseBills.setCreateBy(loginUser.getUser().getUserName());
             warehouseBills.setfBilltype(billsType);
             warehouseBills.setfBsdeptid(loginUser.getUser().getDeptId());
@@ -657,10 +656,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             deleteBillsitems(fPid, tWarehousebillsitems);
         }
         // 库存明细添加
-        if (StringUtils.isNull(tWarehousebillsitems) || "[]".equals(tWarehousebillsitems)) {
-            warehouseBills.setfItemsStatus(1L);
-            tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
-        } else {
+        if (StringUtils.isNotNull(tWarehousebillsitems) && !"[]".equals(tWarehousebillsitems)) {
             JSONArray warehouseJSON = JSONArray.parseArray(tWarehousebillsitems);
             List<TWarehousebillsitems> warehousebillsitemsList = JSONObject.parseArray(warehouseJSON.toJSONString(), TWarehousebillsitems.class);
             Date mixDate = new Date();
@@ -799,6 +795,8 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         } else {
             tWarehousebillsitemsMapper.updatefStorageFeeDeadlinefPid(fPid);
         }
+        calculationWarehouseService.calculationBillStatus(warehouseBills);
+        tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
         TWarehousebillsitems warehousebillsitems = new TWarehousebillsitems();
         warehousebillsitems.setfPid(fPid);
         map.put("warehouseBills", tWarehouseBillsMapper.selectTWarehousebillsById(warehouseBills.getfId()));
@@ -4523,7 +4521,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         // 取出明细id进行查询是否存在已计算仓储费的地方
         List<Long> ids = tWarehouseBillsList.stream().map(TWarehouseBills::getfId).distinct().collect(toList());
         // 判断是否存在仓库明细已被计算仓储费
-        if (tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIdsOrType(ids, WarehouseTypeEnum.CALCULATE.getType()) > 0) {
+        if (CollectionUtils.isNotEmpty(ids) && tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIdsOrType(ids, WarehouseTypeEnum.CALCULATE.getType()) > 0) {
             throw new WarehouseException("该出库已被计算仓储费");
         }
         List<TWarehousebillsfees> list = new ArrayList<>();
@@ -4644,7 +4642,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
             }
         }
         // 计算仓库状态
-        tWarehousebills.setfItemsStatus(calculationWarehouseService.calculationBillStatus(tWarehousebills));
+        calculationWarehouseService.calculationBillStatus(tWarehousebills);
         tWarehouseBillsMapper.updateTWarehousebills(tWarehousebills);
         if (billstatus) {
             String key = "warehouse.storageFeeCalculation.ApprovalFlow";
@@ -4705,11 +4703,12 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         }
         List<TWarehousebillsfees> feesList = tWarehousebillsfeesMapper.selectWarehousebillsfeesByPId(warehouseBills.getfId());
         if (CollectionUtils.isEmpty(feesList)) {
-            throw new WarehouseException("未找到需要新的费用信息");
+            throw new WarehouseException("未找到需要新的费用信息");
         }
         // 过滤出明细信息查询是否存在已计算仓储费
-        List<Long> ids = feesList.stream().map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
-        if (tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
+        List<Long> ids = feesList.stream().filter(li -> !li.getfBilltype().equals(WarehouseTypeEnum.KCZZ.getType()))
+                .map(TWarehousebillsfees::getSrcId).distinct().collect(toList());
+        if (CollectionUtils.isNotEmpty(ids) && tWarehousebillsitemsMapper.selectIsCalculateStorageFeesByIds(ids) > 0) {
             throw new WarehouseException("计算费用中存在已计算仓储费信息");
         }
         for (TWarehousebillsfees fees : feesList) {
@@ -7063,7 +7062,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         }
         // 计算明细数据件数、毛重、净重总和数量
         calculationWarehouseService.calculationWarehouseQuantity(warehouseBills);
-        warehouseBills.setfItemsStatus(calculationWarehouseService.calculationBillStatus(warehouseBills));
+        calculationWarehouseService.calculationBillStatus(warehouseBills);
         tWarehouseBillsMapper.updateTWarehousebills(warehouseBills);
         // 遍历费用信息
         if (CollectionUtils.isNotEmpty(warehousebillsDTO.getWarehousebillsfeesList())) {
@@ -7110,7 +7109,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
         }
         // 计算明细数据件数、毛重、净重总和数量
         calculationWarehouseService.calculationWarehouseQuantity(warehousebillsDTO);
-        warehousebillsDTO.setfItemsStatus(calculationWarehouseService.calculationBillStatus(warehousebillsDTO));
+        calculationWarehouseService.calculationBillStatus(warehousebillsDTO);
         tWarehouseBillsMapper.updateTWarehousebills(warehousebillsDTO);
         // 遍历费用信息
         if (CollectionUtils.isNotEmpty(warehousebillsDTO.getWarehousebillsfeesList())) {

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

@@ -76,7 +76,7 @@
 
     <select id="lazyList" parameterType="TWarehouse" resultMap="TWarehouseResult">
         select
-            ware.f_id, ware.parent_id, ware.order_num,ware.f_no, ware.f_name,ware.f_totalgross, ware.f_location,
+            ware.f_id, ware.parent_id, ware.ancestors, ware.order_num,ware.f_no, ware.f_name,ware.f_totalgross, ware.f_location,
                ware.f_addr,ware.f_contacts,ware.f_tel,ware.f_charg,ware.f_is_bonded,ware.remark,ware.f_status,
             (
             SELECT

+ 38 - 15
ruoyi-warehouse/src/main/resources/mapper/reportManagement/TWhgenlegMapper.xml

@@ -81,6 +81,7 @@
         <result property="fMarks" column="f_marks"/>
         <result property="fBsdate" column="f_bsdate"/>
         <result property="fTrademodeid" column="f_trademodeid"/>
+        <result property="fBilltype" column="f_billtype"/>
         <result property="qty" column="f_qty"/>
         <result property="grossweight" column="f_netweight"/>
         <result property="netweight" column="f_grossweight"/>
@@ -1016,25 +1017,47 @@
         </foreach>
     </select>
 
-    <select id="selectWhgenlegDetailsList" resultMap="WhgenlegInfoResult">
+    <select id="selectStockDetailsList" resultMap="WhgenlegInfoResult">
         SELECT
-            w.f_id,
-            c.f_name corp_name,
-            item.f_mblno,
-            item.f_business_type,
-            item.f_marks,
-            item.f_bsdate,
-            w.f_trademodeid,
-            item.f_qty,
-            item.f_grossweight,
-            item.f_netweight
+            w.f_id, c.f_name, wh.f_mblno, t.f_business_type, t.f_marks, t.f_billtype, w.f_trademodeid,
+               t.f_qty, t.f_grossweight, t.f_netweight
         FROM
-            t_warehousebills w
-                LEFT JOIN t_warehousebillsitems item ON item.f_pid = w.f_id
-                LEFT JOIN t_corps c ON c.f_id = w.f_corpid
+            t_whgenleg wh
+                RIGHT JOIN t_corps c ON c.f_id = wh.f_corpid
+                RIGHT JOIN t_warehousebills w ON w.f_corpid = wh.f_corpid
+                AND w.f_trademodeid = wh.f_trademodeid
+                RIGHT JOIN t_warehousebillsitems t ON t.f_pid = w.f_id AND t.f_mblno = wh.f_mblno
+                AND t.f_business_type = wh.f_business_type
+                AND t.f_marks = wh.f_marks
+                AND t.f_goodsid = wh.f_goodsid
+                AND t.f_warehouselocid = wh.f_warehouse_locationid
+                AND IF(w.f_billtype = 'SJRK',  t.f_originalbilldate = wh.f_bsdate, t.f_src_bsdate = wh.f_bsdate)
         WHERE
-            item.f_srcid = #{fId}
+            wh.f_id = #{fId}
+          and w.f_billtype in ('SJRK', 'SJCK')
+        GROUP BY t.f_id
     </select>
 
+    <select id="selectOtherDetailsList" resultMap="WhgenlegInfoResult">
+        SELECT
+            w.f_id, c.f_name, wh.f_mblno, t.f_business_type, t.f_marks, t.f_bsdate, t.f_billtype,
+               w.f_trademodeid, t.f_qty, t.f_grossweight, t.f_netweight
+        FROM
+            t_whgenleg wh
+                RIGHT JOIN t_corps c ON c.f_id = wh.f_corpid
+                RIGHT JOIN t_warehousebills w ON w.f_corpid = wh.f_corpid
+                AND IF ( w.f_billtype = 'HWTG', wh.f_trademodeid IN ( w.f_trademodeid, w.f_new_trademodeid ), w.f_trademodeid = wh.f_trademodeid )
+                RIGHT JOIN t_warehousebillsitems t ON t.f_pid = w.f_id
+                AND t.f_mblno = wh.f_mblno
+                AND t.f_business_type = wh.f_business_type
+                AND t.f_marks = wh.f_marks
+                AND t.f_goodsid = wh.f_goodsid
+                AND wh.f_warehouse_locationid IN ( t.f_warehouselocid, t.f_transfer_warehouselocid )
+                AND wh.f_bsdate IN ( t.f_src_bsdate, t.f_bsdate )
+        WHERE
+            wh.f_id = #{fId}
+          AND w.f_billtype IN ('CKDB','HWTG','HQZY')
+        GROUP BY t.f_id
+    </select>
 
 </mapper>