Browse Source

Merge remote-tracking branch 'origin/master'

caozj 1 year ago
parent
commit
66fab1c124

+ 5 - 0
hx-account/src/main/java/com/fjhx/account/entity/account/dto/AccountRequestFundsSelectDto.java

@@ -130,4 +130,9 @@ public class AccountRequestFundsSelectDto extends BaseSelectDto {
     }
     }
 
 
 
 
+    /**
+     * 对方账户过滤
+     */
+    private String oppositeAccountName;
+
 }
 }

+ 3 - 0
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountPaymentServiceImpl.java

@@ -96,6 +96,9 @@ public class AccountPaymentServiceImpl extends ServiceImpl<AccountPaymentMapper,
 
 
         wrapper.orderByDesc("ap.status", "ap.payment_time", "ap.create_time");
         wrapper.orderByDesc("ap.status", "ap.payment_time", "ap.create_time");
 
 
+        //对方账户过滤
+        wrapper.like(ObjectUtil.isNotEmpty(dto.getOppositeAccountName()), "ap.name", dto.getOppositeAccountName());
+
         Page<AccountPaymentVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         Page<AccountPaymentVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         List<AccountPaymentVo> records = page.getRecords();
         List<AccountPaymentVo> records = page.getRecords();
         if (records.size() == 0) {
         if (records.size() == 0) {

+ 22 - 2
hx-account/src/main/java/com/fjhx/account/service/account/impl/AccountRequestFundsServiceImpl.java

@@ -27,6 +27,7 @@ import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysRoleService;
 import com.ruoyi.system.utils.UserUtil;
 import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
@@ -34,6 +35,7 @@ import org.springframework.stereotype.Service;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Collectors;
 
 
 
 
@@ -62,6 +64,8 @@ public class AccountRequestFundsServiceImpl extends ServiceImpl<AccountRequestFu
 
 
     @Autowired
     @Autowired
     private AccountManagementService accountManagementService;
     private AccountManagementService accountManagementService;
+    @Autowired
+    private ISysRoleService sysRoleService;
 
 
     /**
     /**
      * 查询请款列表
      * 查询请款列表
@@ -83,8 +87,20 @@ public class AccountRequestFundsServiceImpl extends ServiceImpl<AccountRequestFu
         wrapper.orderByAsc("case arf.status when 10 then 1 when 30 then 2 else 3 END");
         wrapper.orderByAsc("case arf.status when 10 then 1 when 30 then 2 else 3 END");
         // 同状态按发起时间倒序排序
         // 同状态按发起时间倒序排序
         wrapper.orderByDesc("arf.create_time");
         wrapper.orderByDesc("arf.create_time");
-        // 添加权限自己看自己
-        wrapper.eq("arf.create_user", SecurityUtils.getUserId());
+        //-----------------------------------------------------------------------
+        //添加权限过滤
+        DynamicDataSourceContextHolder.push(SourceConstant.BASE);
+        Set<String> permissionList = sysRoleService.selectRolePermissionByUserId(SecurityUtils.getUserId());
+        DynamicDataSourceContextHolder.poll();
+        if (ObjectUtil.isNotEmpty(permissionList)) {
+            //if in[总经理、财务主管、出纳]可查看所有数据else只能看自己的
+            if (!permissionList.contains("ceo") && !permissionList.contains("financeOfficer") && !permissionList.contains("cashier")) {
+                // 添加权限自己看自己
+                wrapper.eq("arf.create_user", SecurityUtils.getUserId());
+            }
+        }
+        //-----------------------------------------------------------------------
+
 
 
         // 归属公司
         // 归属公司
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getCorporationId()), "arf.corporation_id", dto.getCorporationId());
         wrapper.eq(ObjectUtil.isNotEmpty(dto.getCorporationId()), "arf.corporation_id", dto.getCorporationId());
@@ -105,6 +121,10 @@ public class AccountRequestFundsServiceImpl extends ServiceImpl<AccountRequestFu
         // 付款方式
         // 付款方式
         wrapper.like(ObjectUtil.isNotEmpty(dto.getPaymentMethod()), "arf.payment_method", dto.getPaymentMethod());
         wrapper.like(ObjectUtil.isNotEmpty(dto.getPaymentMethod()), "arf.payment_method", dto.getPaymentMethod());
 
 
+        //对方账户过滤
+        wrapper.like(ObjectUtil.isNotEmpty(dto.getOppositeAccountName()), "arf.name", dto.getOppositeAccountName());
+
+
         Page<AccountRequestFundsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
         Page<AccountRequestFundsVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
 
 
         List<AccountRequestFundsVo> records = page.getRecords();
         List<AccountRequestFundsVo> records = page.getRecords();

+ 29 - 68
hx-account/src/main/java/com/fjhx/account/service/account/impl/StatementServiceImpl.java

@@ -147,83 +147,44 @@ public class StatementServiceImpl implements StatementService {
 
 
     @Override
     @Override
     public List<Map<String, Object>> getTotalList(CapitalDailyDto dto) {
     public List<Map<String, Object>> getTotalList(CapitalDailyDto dto) {
-        Date beginDate, endDate;
-
-        Date date = new Date();
-        try {
-            Date parse = DateUtil.parse(dto.getDateBetween(), "yyyy-MM");
-            if (parse.after(DateUtil.endOfMonth(date))) {
-                throw new ServiceException("统计日期不能大于本月");
-            }
-
-            boolean sameMonth = DateUtil.isSameMonth(parse, date);
-
-            beginDate = DateUtil.beginOfMonth(parse);
-            endDate = sameMonth ? DateUtil.endOfDay(date) : DateUtil.endOfMonth(parse);
-        } catch (DateException dateException) {
-            throw new ServiceException("范围期间日期格式错误,应为 'yyyy-MM' 格式");
-        }
-
-        // 获取归属公司
-        List<Corporation> corporationList = getCorporationList(dto.getCorporationId());
-        if (corporationList.size() == 0) {
-            return new ArrayList<>();
-        }
-
-        // 获取账户
-        List<AccountManagement> managementList = getManagementList(dto.getManagementId(), corporationList);
-        if (managementList.size() == 0) {
-            return new ArrayList<>();
-        }
-
-        // 查询流水记录
-        List<AccountRunningWater> runningWaterList = getRunningWaterList(beginDate, managementList);
-
         List<CapitalDailyBo> capitalDailyBoList = getCapitalDailyBoList(dto);
         List<CapitalDailyBo> capitalDailyBoList = getCapitalDailyBoList(dto);
 
 
+        List<Map<String, Object>> data = new ArrayList<>();
+        Map<String, List<CapitalDailyBo>> capitalDailyBoMap = capitalDailyBoList.stream().collect(Collectors.groupingBy(CapitalDailyBo::getCurrencyType));
+        //遍历币种
+        for (Map.Entry<String, List<CapitalDailyBo>> entry : capitalDailyBoMap.entrySet()) {
+            BigDecimal income = BigDecimal.ZERO;
+            BigDecimal expenditure = BigDecimal.ZERO;
+            BigDecimal balance = BigDecimal.ZERO;
 
 
-        Map<String, Map<String, Object>> totalMap = new HashMap<>();
-
-        Map<String, BigDecimal> balanceMap = new HashMap<>();
-        for (CapitalDailyBo capitalDailyBo : capitalDailyBoList) {
-            BigDecimal balance = balanceMap.getOrDefault(capitalDailyBo.getCurrencyType(), BigDecimal.ZERO);
-            balanceMap.put(capitalDailyBo.getCurrencyType(), balance.add(capitalDailyBo.getRemainder()));
-
-
-            List<AccountRunningWater> itemRunningWaterList = runningWaterList.stream().filter(item -> Objects.equals(item.getCurrency(), capitalDailyBo.getCurrencyType())).collect(Collectors.toList());
+            //遍历该币种的所有账户数据
+            List<CapitalDailyBo> value = entry.getValue();
+            List<Map<String, Object>> flowingWaterList = new ArrayList<>();
+            value.forEach(item -> flowingWaterList.addAll(item.getFlowingWaterList()));
 
 
+            //获取该币种开始时间余额
+            for (CapitalDailyBo capitalDailyBo : value) {
+                balance = balance.add(capitalDailyBo.getRemainder());
+            }
 
 
-            //收入
-            BigDecimal income = itemRunningWaterList.stream()
-                    .filter(item -> item.getTransactionTime().before(endDate))
-                    .filter(item -> Objects.equals(item.getStatus(), "10"))
-                    .map(AccountRunningWater::getAmount)
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            //根据历史获取收入支出统计
+            for (Map<String, Object> stringObjectMap : flowingWaterList) {
+                income = income.add((BigDecimal) stringObjectMap.getOrDefault("income", BigDecimal.ZERO));
+                expenditure = expenditure.add((BigDecimal) stringObjectMap.getOrDefault("expenditure", BigDecimal.ZERO));
+            }
 
 
-            //支出
-            BigDecimal expenditure = itemRunningWaterList.stream()
-                    .filter(item -> item.getTransactionTime().before(endDate))
-                    .filter(item -> Objects.equals(item.getStatus(), "20"))
-                    .map(AccountRunningWater::getAmount)
-                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            balance = balance.add(income).subtract(expenditure);
 
 
+            //整理每个币种的 收入 支出 余额
+            Map<String, Object> map1 = new HashMap<>();
+            map1.put("balance", balance);
+            map1.put("income", income);
+            map1.put("expenditure", expenditure);
+            map1.put("currency", entry.getKey());
 
 
-            //统计成map
-            Map<String, Object> map1 = totalMap.getOrDefault( capitalDailyBo.getCurrencyType(),new HashMap<>());
-            BigDecimal balance1 = (BigDecimal) map1.getOrDefault("balance", BigDecimal.ZERO);
-            balance1 = balance1.add(balanceMap.getOrDefault(capitalDailyBo.getCurrencyType(), BigDecimal.ZERO).add(income).subtract(expenditure));
-            map1.put("balance", balance1);
-            BigDecimal income1 = (BigDecimal) map1.getOrDefault("income", BigDecimal.ZERO);
-            income1 = income1.add(income);
-            map1.put("income", income1);
-            BigDecimal expenditure1 = (BigDecimal) map1.getOrDefault("expenditure", BigDecimal.ZERO);
-            expenditure1 = expenditure1.add(expenditure);
-            map1.put("expenditure", expenditure1);
-            map1.put("currency", capitalDailyBo.getCurrencyType());
-
-            totalMap.put(capitalDailyBo.getCurrencyType(),map1);
+            data.add(map1);
         }
         }
-        return totalMap.values().stream().collect(Collectors.toList());
+        return data;
     }
     }
 
 
     /**
     /**

+ 3 - 1
hx-common/src/main/java/com/fjhx/common/entity/documentary/eums/DocumentaryTypeEnum.java

@@ -15,7 +15,9 @@ public enum DocumentaryTypeEnum {
 
 
     sales(1, "销售跟单", "contractServiceImpl"),
     sales(1, "销售跟单", "contractServiceImpl"),
 
 
-    purchase(2, "采购跟单", "purchaseServiceImpl");
+//    purchase(2, "采购跟单", "purchaseServiceImpl");
+    purchase(2, "采购跟单", "ehsdPurchaseServiceImpl");
+
 
 
     /**
     /**
      * 跟单类型
      * 跟单类型

+ 6 - 2
hx-common/src/main/java/com/fjhx/common/service/documentary/impl/DocumentaryRecordServiceImpl.java

@@ -88,7 +88,9 @@ public class DocumentaryRecordServiceImpl extends ServiceImpl<DocumentaryRecordM
                         // 排除业务id
                         // 排除业务id
                         excludeBusinessId = listObject(DocumentaryRecord::getBusinessId,
                         excludeBusinessId = listObject(DocumentaryRecord::getBusinessId,
                                 q -> q.eq(DocumentaryRecord::getDocumentaryId, noRecordDocumentaryId)
                                 q -> q.eq(DocumentaryRecord::getDocumentaryId, noRecordDocumentaryId)
-                                        .isNotNull(DocumentaryRecord::getBusinessId));
+                                        .isNotNull(DocumentaryRecord::getBusinessId)
+                                        .isNotNull(DocumentaryRecord::getDocumentaryId)
+                        );
                     }
                     }
 
 
                     Page<? extends DocumentaryData> page = bean.getDocumentaryPage(dto.getCondition(), dto, excludeBusinessId);
                     Page<? extends DocumentaryData> page = bean.getDocumentaryPage(dto.getCondition(), dto, excludeBusinessId);
@@ -210,7 +212,9 @@ public class DocumentaryRecordServiceImpl extends ServiceImpl<DocumentaryRecordM
         List<Long> businessIdList = records.stream().map(DocumentaryData::getId).collect(Collectors.toList());
         List<Long> businessIdList = records.stream().map(DocumentaryData::getId).collect(Collectors.toList());
 
 
         // 根据业务id查询跟单记录
         // 根据业务id查询跟单记录
-        List<DocumentaryRecord> list = list(q -> q.in(DocumentaryRecord::getBusinessId, businessIdList));
+        List<DocumentaryRecord> list = list(q -> q.in(DocumentaryRecord::getBusinessId, businessIdList)
+                .isNotNull(DocumentaryRecord::getDocumentaryId)
+        );
 
 
         // 查询跟单记录文件
         // 查询跟单记录文件
         List<Long> documentaryRecordList = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());
         List<Long> documentaryRecordList = list.stream().map(BaseIdPo::getId).collect(Collectors.toList());

+ 27 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/purchase/vo/EhsdPurchaseDocumentaryVo.java

@@ -0,0 +1,27 @@
+package com.fjhx.sale.entity.purchase.vo;
+
+import com.fjhx.common.entity.documentary.bo.DocumentaryData;
+import com.fjhx.common.entity.documentary.vo.DocumentaryRecordVo;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+@Getter
+@Setter
+public class EhsdPurchaseDocumentaryVo extends EhsdPurchase implements DocumentaryData {
+
+    /**
+     * 供应商名称
+     */
+    private String supplyName;
+
+    /**
+     * 跟单记录
+     */
+    private Map<Long, List<DocumentaryRecordVo>> documentaryRecord;
+
+}

+ 38 - 1
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.sale.service.purchase.impl;
 package com.fjhx.sale.service.purchase.impl;
 
 
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -9,12 +10,17 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.entity.corporation.po.Corporation;
+import com.fjhx.common.entity.documentary.bo.DocumentaryData;
 import com.fjhx.common.service.corporation.CorporationService;
 import com.fjhx.common.service.corporation.CorporationService;
+import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.flow.service.flow.FlowExampleService;
 import com.fjhx.flow.service.flow.FlowExampleService;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
 import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
+import com.fjhx.purchase.entity.purchase.bo.PurchaseDocumentaryBo;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
+import com.fjhx.purchase.entity.purchase.po.Purchase;
+import com.fjhx.purchase.entity.purchase.vo.PurchaseDocumentaryVo;
 import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
 import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.sale.entity.pack.po.PackDetail;
 import com.fjhx.sale.entity.pack.po.PackDetail;
@@ -23,6 +29,7 @@ import com.fjhx.sale.entity.pack.vo.PackDetailProductVo;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseDto;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseDto;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseSelectDto;
 import com.fjhx.sale.entity.purchase.dto.EhsdPurchaseSelectDto;
 import com.fjhx.sale.entity.purchase.po.*;
 import com.fjhx.sale.entity.purchase.po.*;
+import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseDocumentaryVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
 import com.fjhx.sale.mapper.purchase.EhsdPurchaseMapper;
 import com.fjhx.sale.mapper.purchase.EhsdPurchaseMapper;
@@ -31,7 +38,9 @@ import com.fjhx.sale.service.pack.PackDetailService;
 import com.fjhx.sale.service.purchase.*;
 import com.fjhx.sale.service.purchase.*;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
+import com.ruoyi.common.core.domain.BaseSelectDto;
 import com.ruoyi.common.exception.ServiceException;
 import com.ruoyi.common.exception.ServiceException;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import com.ruoyi.common.utils.wrapper.SqlField;
 import com.ruoyi.common.utils.wrapper.SqlField;
@@ -56,7 +65,7 @@ import java.util.stream.Collectors;
  */
  */
 @Service
 @Service
 @DS(SourceConstant.SALE)
 @DS(SourceConstant.SALE)
-public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, EhsdPurchase> implements EhsdPurchaseService {
+public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, EhsdPurchase> implements EhsdPurchaseService , GetDocumentaryBusinessTemplate {
 
 
     @Autowired
     @Autowired
     private EhsdPurchaseProductService ehsdPurchaseProductService;
     private EhsdPurchaseProductService ehsdPurchaseProductService;
@@ -254,4 +263,32 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
         return ehsdPurchases;
         return ehsdPurchases;
     }
     }
 
 
+    @Override
+    public Page<? extends DocumentaryData> getDocumentaryPage(JSONObject selectData, BaseSelectDto
+            dto, List<Long> excludeBusinessId) {
+        PurchaseDocumentaryBo bo = selectData.toJavaObject(PurchaseDocumentaryBo.class);
+
+        IWrapper<EhsdPurchase> wrapper = IWrapper.getWrapper();
+        wrapper.like(EhsdPurchase::getCode, bo.getCode());
+        wrapper.eq(EhsdPurchase::getCreateUser, bo.getUserId());
+        wrapper.eq(EhsdPurchase::getStatus, 30);
+        wrapper.notIn(EhsdPurchase::getId, excludeBusinessId);
+        wrapper.orderByDesc(EhsdPurchase::getId);
+
+        Page<EhsdPurchase> itemPage = page(dto.getPage(), wrapper);
+        Page<EhsdPurchaseDocumentaryVo> page = PageUtils.copyPage(itemPage, EhsdPurchaseDocumentaryVo.class);
+        List<EhsdPurchaseDocumentaryVo> records = page.getRecords();
+
+        if (records.size() == 0) {
+            return page;
+        }
+
+        // 供应商名称
+        supplierInfoService.attributeAssign(records, EhsdPurchase::getSellCorporationId, (item, supplier) -> {
+            item.setSupplyName(supplier.getName());
+        });
+
+        return page;
+    }
+
 }
 }