Ver código fonte

科目余额 问题处理

yzc 11 meses atrás
pai
commit
eb0757ff87

+ 6 - 0
hx-form/src/main/java/com/fjhx/form/controller/FinanceReportController.java

@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 @RestController
@@ -30,4 +31,9 @@ public class FinanceReportController {
     Page<RemitDetailVo> getRemitDetailPage(@RequestBody RemitDetailSelectDto dto) {
         return financeReportService.getRemitDetailPage(dto);
     }
+
+    @PostMapping("/remitDetailExcelExport")
+    void remitDetailExcelExport(@RequestBody RemitDetailSelectDto dto, HttpServletResponse httpServletResponse) {
+        financeReportService.remitDetailExcelExport(dto, httpServletResponse);
+    }
 }

+ 29 - 4
hx-form/src/main/java/com/fjhx/form/entity/RemitDetailVo.java

@@ -2,6 +2,7 @@ package com.fjhx.form.entity;
 
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,52 +13,76 @@ import java.util.Date;
 @Setter
 @ExcelIgnoreUnannotated
 public class RemitDetailVo {
+    @ColumnWidth(15)
     @ExcelProperty("交易时间")
     private Date transactionTime;
+    @ColumnWidth(15)
     @ExcelProperty("银行卡")
     private String accountAliasName;
+    @ColumnWidth(15)
     @ExcelProperty("备注")
     private String remark;
-    @ExcelProperty("对方科目-输入")
+    @ColumnWidth(20)
+    @ExcelProperty("对方科目")//输入
     private String oppositeSubjectName1;
-    @ExcelProperty("销售组费用类别-输入")
+    @ColumnWidth(30)
+    @ExcelProperty("销售组费用类别")//输入
     private String saleGroupExpenseCategory;
+    @ColumnWidth(15)
     @ExcelProperty("收入")
     private BigDecimal incomeAmount;
+    @ColumnWidth(15)
     @ExcelProperty("支出")
     private BigDecimal expenditureAmount;
+    @ColumnWidth(15)
     @ExcelProperty("余额")
     private BigDecimal balanceAmount;
+    @ColumnWidth(15)
     @ExcelProperty("供应商")
     private String supplierName;
+    @ColumnWidth(15)
     @ExcelProperty("客户简称")
     private String customerShortName;
+    @ColumnWidth(15)
     @ExcelProperty("合同单号")
     private String contractCode;
+    @ColumnWidth(15)
     @ExcelProperty("科目名称")
     private String subjectName;
+    @ColumnWidth(15)
     @ExcelProperty("核算项目1")
     private String calculateItemType1;
+    @ColumnWidth(15)
     @ExcelProperty("核算项目2")
     private String calculateItemType2;
-    @ExcelProperty("核算项目1名称-可修改")
+    @ColumnWidth(30)
+    @ExcelProperty("核算项目1名称")//可修改
     private String calculateItemName1;
-    @ExcelProperty("核算项目2名称-可修改")
+    @ColumnWidth(30)
+    @ExcelProperty("核算项目2名称")//可修改
     private String calculateItemName2;
+    @ColumnWidth(15)
     @ExcelProperty("对方科目")
     private String oppositeSubjectCode;
+    @ColumnWidth(20)
     @ExcelProperty("对方科目名称")
     private String oppositeSubjectName;
+    @ColumnWidth(25)
     @ExcelProperty("核算项目数据导入")
     private String calculateItemStr;
+    @ColumnWidth(20)
     @ExcelProperty("银行科目代码")
     private String bankSubjectCode;
+    @ColumnWidth(20)
     @ExcelProperty("银行科目名称")
     private String bankSubjectName;
+    @ColumnWidth(25)
     @ExcelProperty("合并科目核算项目名称")
     private String subjectCalculateItemStr;
+    @ColumnWidth(15)
     @ExcelProperty("记账凭证号")
     private String voucherNo;
+    @ColumnWidth(15)
     @ExcelProperty("订单性质")//1归属工厂、2归属业务
     private String belongType;
 }

+ 8 - 1
hx-form/src/main/java/com/fjhx/form/flow/CostControlFlow.java

@@ -5,8 +5,10 @@ import com.alibaba.fastjson.JSONObject;
 import com.fjhx.account.entity.account.enums.PaymentStatusEnum;
 import com.fjhx.account.entity.account.po.AccountPayment;
 import com.fjhx.account.entity.account.po.AccountRunningWater;
+import com.fjhx.account.entity.payment.po.PaymentType;
 import com.fjhx.account.service.account.AccountPaymentService;
 import com.fjhx.account.service.account.AccountRunningWaterService;
+import com.fjhx.account.service.payment.PaymentTypeService;
 import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.enums.FlowStatusEnum1;
 import com.fjhx.common.service.coding.CodingRuleService;
@@ -59,6 +61,8 @@ public class CostControlFlow extends FlowDelegate {
     private AccountRunningWaterService accountRunningWaterService;
     @Autowired
     private ISysDeptService sysDeptService;
+    @Autowired
+    private PaymentTypeService paymentTypeService;
 
     @Override
     public String getFlowKey() {
@@ -80,8 +84,11 @@ public class CostControlFlow extends FlowDelegate {
         costControlService.addOrEdit(costControlDto);
 
         //回传数据给流程引擎
+        PaymentType paymentType = paymentTypeService.getById(costControlDto.getCostType());
         submitData.put("code", costControlDto.getCode());
         submitData.put("amount", costControlDto.getAmount());
+        submitData.put("applyUserName", UserUtil.getNickNameById(costControlDto.getApplyUserId()));
+        submitData.put("costTypeName", ObjectUtil.isNotEmpty(paymentType) ? paymentType.getName() : "");
 
         return costControlDto.getId();
     }
@@ -112,7 +119,7 @@ public class CostControlFlow extends FlowDelegate {
             }
         }
 
-        //如果是属于付款类型的,需要自动生成一条打款数据
+        //如果是属于 支出 付款类型的,需要自动生成一条打款数据
         if (ObjectUtil.equals(costControl.getTradeType(), 20)) {
             // 添加一条付款流水
             AccountPayment payment = new AccountPayment();

+ 2 - 0
hx-form/src/main/java/com/fjhx/form/mapper/FinanceReportMapper.java

@@ -17,4 +17,6 @@ public interface FinanceReportMapper {
 
     Page<RemitDetailVo> getRemitDetailPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<Object> wrapper);
 
+    List<RemitDetailVo> getRemitDetailPage(@Param("ew") IWrapper<Object> wrapper);
+
 }

+ 3 - 0
hx-form/src/main/java/com/fjhx/form/service/FinanceReportService.java

@@ -6,6 +6,7 @@ import com.fjhx.form.entity.RemitDetailVo;
 import com.fjhx.form.entity.SubjectBalanceBo;
 import com.fjhx.form.entity.SubjectBalanceSelectDto;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 public interface FinanceReportService {
@@ -15,4 +16,6 @@ public interface FinanceReportService {
      * 汇款明细
      */
     Page<RemitDetailVo> getRemitDetailPage(RemitDetailSelectDto dto);
+
+    void remitDetailExcelExport(RemitDetailSelectDto dto, HttpServletResponse httpServletResponse);
 }

+ 24 - 4
hx-form/src/main/java/com/fjhx/form/service/impl/FinanceReportServiceImpl.java

@@ -9,6 +9,7 @@ import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.utils.Assert;
+import com.fjhx.common.utils.excel.util.ExcelUtil;
 import com.fjhx.form.entity.RemitDetailSelectDto;
 import com.fjhx.form.entity.RemitDetailVo;
 import com.fjhx.form.entity.SubjectBalanceBo;
@@ -24,6 +25,7 @@ import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
@@ -135,10 +137,7 @@ public class FinanceReportServiceImpl implements FinanceReportService {
         DynamicDataSourceContextHolder.clear();
     }
 
-    @Override
-    public Page<RemitDetailVo> getRemitDetailPage(RemitDetailSelectDto dto) {
-        IWrapper<Object> wrapper = IWrapper.getWrapper();
-
+    private void setRemitDetailPageWrapper(RemitDetailSelectDto dto, IWrapper wrapper) {
         wrapper.keyword(dto.getKeyword(),
                 new SqlField("t1.contract_codes"),
                 new SqlField("t2.subject_name"),
@@ -154,7 +153,28 @@ public class FinanceReportServiceImpl implements FinanceReportService {
         wrapper.le("arw.transaction_time", dto.getEndTime());
 
         wrapper.orderByDesc("arw.transaction_time");
+    }
+
+    @Override
+    public Page<RemitDetailVo> getRemitDetailPage(RemitDetailSelectDto dto) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+
+        //设置查询条件
+        setRemitDetailPageWrapper(dto, wrapper);
+
         Page<RemitDetailVo> page = financeReportMapper.getRemitDetailPage(dto.getPage(), wrapper);
         return page;
     }
+
+    @Override
+    public void remitDetailExcelExport(RemitDetailSelectDto dto, HttpServletResponse httpServletResponse) {
+        IWrapper<Object> wrapper = IWrapper.getWrapper();
+
+        //设置查询条件
+        setRemitDetailPageWrapper(dto, wrapper);
+
+        List<RemitDetailVo> records = financeReportMapper.getRemitDetailPage(wrapper);
+        //导出Excel
+        ExcelUtil.export(httpServletResponse, records, RemitDetailVo.class);
+    }
 }

+ 14 - 8
hx-form/src/main/resources/mapper/FinanceReportMapper.xml

@@ -4,8 +4,8 @@
     <select id="subjectBalance" resultType="com.fjhx.form.entity.SubjectBalanceBo">
         SELECT t1.id,
                t1.account_subjects_id                                     as subjects_id,
-               asj.subjects_code,
-               asj.subjects_name,
+               t1.subjects_code,
+               t1.subjects_name,
                t1.calculate_item_str,
                sum(t1.tradeAmount)                                        AS trade_amount,
                sum(IF(MONTH ( t1.expenses_time )= 1, t1.tradeAmount, 0))  AS month1_amount,
@@ -22,16 +22,22 @@
                sum(IF(MONTH ( t1.expenses_time )= 12, t1.tradeAmount, 0)) AS month12_amount
         FROM (SELECT ccd.id,
                      ccd.account_subjects_id,
-                     IF(cc.trade_type = 20, cc.apply_time, ap.expenses_time)                AS expenses_time,
-                     IF(cc.trade_type = 20, ccd.money, IF(ap.`status` != 20, ap.amount, 0)) AS tradeAmount,
-                     ccd.calculate_item_str
+                     IF(cc.trade_type = 10, cc.apply_time, ap.expenses_time)                                   AS expenses_time,
+                     IF(cc.trade_type = 10, ccd.money, IF(ap.`status` != 20, ap.amount, 0))                    AS tradeAmount,
+                     asj.subjects_code,
+                     asj.subjects_name,
+                     CONCAT(asj.subjects_name, ' - ', IFNULL(ccd.calculate_item_name1, ''),
+                            IF(ccd.calculate_item_name2 is null, '',
+                               CONCAT(' - ', ccd.calculate_item_name2)))                                       as calculate_item_str
               FROM cost_control cc
                        JOIN cost_control_detail ccd ON ccd.cost_control_id = cc.id
-                       LEFT JOIN account_payment ap ON ap.business_id = cc.id) t1
-                 LEFT JOIN account_subjects asj ON t1.account_subjects_id = asj.id
+                       LEFT JOIN account_payment ap ON ap.business_id = cc.id
+                       LEFT JOIN account_subjects asj ON ccd.account_subjects_id = asj.id
+              WHERE ap.`status` = 10
+              ORDER BY asj.sort ASC) t1
             ${ew.customSqlSegment}
         GROUP BY
-            CONCAT( calculate_item_str )
+            calculate_item_str
     </select>
     <select id="getRemitDetailPage" resultType="com.fjhx.form.entity.RemitDetailVo">
         SELECT arw.transaction_time                 AS transactionTime,