From 67106e4511b4b152cfadc2f8ce76ffa22fec9d86 Mon Sep 17 00:00:00 2001 From: lijianlin Date: Wed, 8 Oct 2025 09:46:54 +0800 Subject: [PATCH] =?UTF-8?q?10-08-=E6=94=B6=E6=AC=BE=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=EF=BC=8C=E6=94=B6=E6=AC=BE=E6=92=A4=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 16 ++ .../demo/config/FlowableDataSourceConfig.java | 3 + .../demo/config/Mysql1DataSourceConfig.java | 2 +- .../controller/cash/CashCollectionController.java | 50 ++++- .../demo/domain/vo/cash/CashCollection.java | 220 ++------------------- .../java/com/example/demo/domain/vo/coin/Page.java | 2 + .../demo/mapper/cash/CashCollectionMapper.java | 18 ++ .../demo/service/cash/CashCollectionService.java | 8 + .../cash/CashCollectionServiceImpl.java | 91 ++++++++- src/main/resources/application.yml | 2 + .../resources/cashMapper/CashCollectionMapper.xml | 105 +++++++++- 11 files changed, 302 insertions(+), 215 deletions(-) diff --git a/pom.xml b/pom.xml index 27623e8..215085e 100644 --- a/pom.xml +++ b/pom.xml @@ -209,6 +209,22 @@ src/main/resources true + + + src/main/resources + + **/*.xml + **/*.yml + **/*.properties + + + + + src/main/java + + **/*.xml + + diff --git a/src/main/java/com/example/demo/config/FlowableDataSourceConfig.java b/src/main/java/com/example/demo/config/FlowableDataSourceConfig.java index 1fe189b..4183be8 100644 --- a/src/main/java/com/example/demo/config/FlowableDataSourceConfig.java +++ b/src/main/java/com/example/demo/config/FlowableDataSourceConfig.java @@ -7,6 +7,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframework.transaction.PlatformTransactionManager; @@ -16,6 +17,7 @@ import javax.sql.DataSource; public class FlowableDataSourceConfig { @Bean(name = "flowableDataSource") + @Primary @ConfigurationProperties(prefix = "spring.datasource.flowable") public DataSource flowableDataSource() { HikariDataSource ds = DataSourceBuilder @@ -27,6 +29,7 @@ public class FlowableDataSourceConfig { } @Bean(name = "flowableTransactionManager") + @Primary public PlatformTransactionManager flowableTransactionManager( @Qualifier("flowableDataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); diff --git a/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java b/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java index 9253a9b..717a28b 100644 --- a/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java +++ b/src/main/java/com/example/demo/config/Mysql1DataSourceConfig.java @@ -48,7 +48,7 @@ public DataSource mysql1DataSource() { @Qualifier("globalConfiguration1") org.apache.ibatis.session.Configuration globalConfiguration1) throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); - sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/*.xml")); + sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:{mapper,cashMapper}/*.xml")); sessionFactory.setConfiguration(globalConfiguration1); return sessionFactory.getObject(); } diff --git a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java index b1adbad..4ba119f 100644 --- a/src/main/java/com/example/demo/controller/cash/CashCollectionController.java +++ b/src/main/java/com/example/demo/controller/cash/CashCollectionController.java @@ -1,12 +1,23 @@ package com.example.demo.controller.cash; +import com.example.demo.Util.JWTUtil; +import com.example.demo.domain.entity.Admin; +import com.example.demo.domain.entity.CashRecord; import com.example.demo.domain.vo.cash.CashCollection; +import com.example.demo.domain.vo.coin.Page; import com.example.demo.domain.vo.coin.Result; import com.example.demo.service.cash.CashCollectionService; +import com.github.pagehelper.PageInfo; +import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.util.Arrays; +import java.util.List; /** * @program: gold-java @@ -25,12 +36,49 @@ public class CashCollectionController { @Autowired private CashCollectionService cashCollectionService; + //新增收款订单 @PostMapping("/add") public Result add(@RequestBody CashCollection cashCollection) { try { return cashCollectionService.add(cashCollection); } catch (Exception e) { - return Result.error("请检查数据的格式"); + return Result.error(e.getMessage()); + } + } + //撤回未审核的收款订单 + @PostMapping("/cancel") + public Result cancel(@RequestBody CashRecord cashRecord) { + try { + return cashCollectionService.cancel(cashRecord.getOrderCode()); + }catch (Exception e){ + return Result.error(e.getMessage()); + } + } + //重新提交审核的收款订单 + @PostMapping("/reSubmit") + public Result reSubmit(@RequestBody CashRecord cashRecord) { + try { + return cashCollectionService.reSubmit(cashRecord); + }catch (Exception e){ + return Result.error(e.getMessage()); + } + } + //多条件查询收款订单列表----客服版 + @PostMapping("/selectCollection1") + public PageInfo selectCollection1( + @RequestBody Page page) throws Exception{ + Integer pageNum = page.getPageNum(); + Integer pageSize = page.getPageSize(); + CashCollection cashCollection = page.getCashCollection(); + //解token权限 + HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + String token = request.getHeader("token"); + Admin admin = (Admin) JWTUtil.getUserDetailsList(String.valueOf(token), Admin.class); + if (admin != null) { + List list = Arrays.asList(admin.getMarkets().split(",")); + cashCollection.setMarkets(list); + } + return cashCollectionService.selectCollection1(pageNum, pageSize, cashCollection); } } diff --git a/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java b/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java index 57a73ac..8787f46 100644 --- a/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java +++ b/src/main/java/com/example/demo/domain/vo/cash/CashCollection.java @@ -8,6 +8,7 @@ import lombok.NoArgsConstructor; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.List; /** * @program: gold-java @@ -33,7 +34,7 @@ public class CashCollection implements Serializable { private String orderCode; // 金币订单号 private String bankCode; // 银行流水订单号 private String goodsName; // 商品名称 - private Integer goodsNum; // 商品数量 + private Integer goodNum; // 商品数量 //金额信息 private String paymentCurrency; // 付款币种 private BigDecimal paymentAmount; // 付款金额 @@ -43,11 +44,14 @@ public class CashCollection implements Serializable { private String receivedMarket; //到账地区 // 支付信息 private String payType; // 支付方式 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private LocalDateTime payTime; // 付款日期(秒级) + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private LocalDateTime receivedTime; // 到账日期(秒级) //状态 操作人 private Integer status; // 订单状态 private Integer submitterId; // 提交人 id + private String submitterName; // 提交人 姓名 private String voucher; // 转账凭证 private String remark; // 备注 private String rejectReason; // 驳回理由 @@ -56,211 +60,13 @@ public class CashCollection implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") private LocalDateTime updateTime; - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public Integer getOrderType() { - return orderType; - } - - public void setOrderType(Integer orderType) { - this.orderType = orderType; - } - - public Integer getJwcode() { - return jwcode; - } - - public void setJwcode(Integer jwcode) { - this.jwcode = jwcode; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getMarket() { - return market; - } - - public void setMarket(String market) { - this.market = market; - } - - public String getActivity() { - return activity; - } - - public void setActivity(String activity) { - this.activity = activity; - } - - public String getOrderCode() { - return orderCode; - } - - public void setOrderCode(String orderCode) { - this.orderCode = orderCode; - } - - public String getBankCode() { - return bankCode; - } - - public void setBankCode(String bankCode) { - this.bankCode = bankCode; - } - - public String getGoodsName() { - return goodsName; - } - - public void setGoodsName(String goodsName) { - this.goodsName = goodsName; - } - - public Integer getGoodsNum() { - return goodsNum; - } - - public void setGoodsNum(Integer goodsNum) { - this.goodsNum = goodsNum; - } - - public String getPaymentCurrency() { - return paymentCurrency; - } - - public void setPaymentCurrency(String paymentCurrency) { - this.paymentCurrency = paymentCurrency; - } - - public BigDecimal getPaymentAmount() { - return paymentAmount; - } - - public void setPaymentAmount(BigDecimal paymentAmount) { - this.paymentAmount = paymentAmount; - } - - public String getReceivedCurrency() { - return receivedCurrency; - } - - public void setReceivedCurrency(String receivedCurrency) { - this.receivedCurrency = receivedCurrency; - } - - public BigDecimal getReceivedAmount() { - return receivedAmount; - } - - public void setReceivedAmount(BigDecimal receivedAmount) { - this.receivedAmount = receivedAmount; - } - - public BigDecimal getHandlingCharge() { - return handlingCharge; - } - - public void setHandlingCharge(BigDecimal handlingCharge) { - this.handlingCharge = handlingCharge; - } - - public String getReceivedMarket() { - return receivedMarket; - } - - public void setReceivedMarket(String receivedMarket) { - this.receivedMarket = receivedMarket; - } - - public String getPayType() { - return payType; - } - - public void setPayType(String payType) { - this.payType = payType; - } - - public LocalDateTime getPayTime() { - return payTime; - } - - public void setPayTime(LocalDateTime payTime) { - this.payTime = payTime; - } - - public LocalDateTime getReceivedTime() { - return receivedTime; - } - - public void setReceivedTime(LocalDateTime receivedTime) { - this.receivedTime = receivedTime; - } - - public Integer getStatus() { - return status; - } - - public void setStatus(Integer status) { - this.status = status; - } - - public Integer getSubmitterId() { - return submitterId; - } - - public void setSubmitterId(Integer submitterId) { - this.submitterId = submitterId; - } - - public String getVoucher() { - return voucher; - } - - public void setVoucher(String voucher) { - this.voucher = voucher; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public String getRejectReason() { - return rejectReason; - } - - public void setRejectReason(String rejectReason) { - this.rejectReason = rejectReason; - } - - public LocalDateTime getCreateTime() { - return createTime; - } - - public void setCreateTime(LocalDateTime createTime) { - this.createTime = createTime; - } - - public LocalDateTime getUpdateTime() { - return updateTime; - } + //搜索筛条件 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private LocalDateTime startTime; // 付款时间起 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai") + private LocalDateTime endTime; // 付款时间止 + private String sortField; //排序字段 + private String sortOrder; //排序顺序 + private List markets; // 所属地区列表 - public void setUpdateTime(LocalDateTime updateTime) { - this.updateTime = updateTime; } -} diff --git a/src/main/java/com/example/demo/domain/vo/coin/Page.java b/src/main/java/com/example/demo/domain/vo/coin/Page.java index 1fd6576..6b2a982 100644 --- a/src/main/java/com/example/demo/domain/vo/coin/Page.java +++ b/src/main/java/com/example/demo/domain/vo/coin/Page.java @@ -2,6 +2,7 @@ package com.example.demo.domain.vo.coin; import com.example.demo.domain.entity.User; import com.example.demo.domain.vo.bean.*; +import com.example.demo.domain.vo.cash.CashCollection; import lombok.Data; import lombok.NoArgsConstructor; @@ -40,4 +41,5 @@ public class Page { private BeanUserCard beanUserCard; //客户金豆卡片 private BeanAuditInfo beanAuditInfo; //金豆审核信息 private HistoryRecord historyRecord; //历史记录 + private CashCollection cashCollection; //现金收款 } diff --git a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java index 786d4d2..4fcd777 100644 --- a/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java +++ b/src/main/java/com/example/demo/mapper/cash/CashCollectionMapper.java @@ -1,7 +1,11 @@ package com.example.demo.mapper.cash; import com.example.demo.domain.entity.CashRecord; +import com.example.demo.domain.vo.cash.CashCollection; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @program: gold-java @@ -14,6 +18,20 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface CashCollectionMapper { + //根据jwcode获取所属地区 + String getMarketByJwcode(@Param("jwcode") Integer jwcode); //新增收款订单 void add(CashRecord cashRecord); + //根据订单号获取订单id,状态 + CashRecord selectByOrderCode(@Param("orderCode") String orderCode); + //更新订单状态 + int updateStatus(@Param("orderCode") String orderCode, + @Param("status") Integer status); + //编辑订单 + // 编辑订单(状态=5)后重新提交 + int updateByOrderCode(@Param("cashRecord") CashRecord cashRecord); + //多条件查询收款订单列表 + List selectCollection1(@Param("pageNum") Integer pageNum, + @Param("pageSize") Integer pageSize, + @Param("cashCollection") CashCollection cashCollection); } diff --git a/src/main/java/com/example/demo/service/cash/CashCollectionService.java b/src/main/java/com/example/demo/service/cash/CashCollectionService.java index a944b37..ce136a1 100644 --- a/src/main/java/com/example/demo/service/cash/CashCollectionService.java +++ b/src/main/java/com/example/demo/service/cash/CashCollectionService.java @@ -1,7 +1,9 @@ package com.example.demo.service.cash; +import com.example.demo.domain.entity.CashRecord; import com.example.demo.domain.vo.cash.CashCollection; import com.example.demo.domain.vo.coin.Result; +import com.github.pagehelper.PageInfo; /** * @program: gold-java @@ -15,4 +17,10 @@ import com.example.demo.domain.vo.coin.Result; public interface CashCollectionService { //新增收款订单 Result add(CashCollection cashCollection); + //撤回未审核的收款订单 + Result cancel(String orderCode); + //编辑并重新提交收款订单 + Result reSubmit(CashRecord cashRecord); + //多条件查询收款订单列表 + PageInfo selectCollection1(Integer pageNum, Integer pageSize, CashCollection cashCollection); } diff --git a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java index 9511e79..2e01654 100644 --- a/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java @@ -4,10 +4,14 @@ import com.example.demo.domain.entity.CashRecord; import com.example.demo.domain.vo.cash.CashCollection; import com.example.demo.domain.vo.coin.Result; import com.example.demo.mapper.cash.CashCollectionMapper; +import com.example.demo.mapper.coin.MarketMapper; import com.example.demo.service.cash.CashCollectionService; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; import java.util.UUID; /** @@ -23,6 +27,8 @@ public class CashCollectionServiceImpl implements CashCollectionService { @Autowired private CashCollectionMapper cashCollectionMapper; + @Autowired + private MarketMapper marketMapper; //新增收款订单 @Override @@ -42,7 +48,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { if(cashCollection.getGoodsName()== null){ return Result.error("商品名不能为空"); } - if(cashCollection.getGoodsNum()== null){ + if(cashCollection.getGoodNum()== null){ return Result.error("商品数量不能为空"); } if(cashCollection.getPaymentCurrency()== null){ @@ -75,7 +81,7 @@ public class CashCollectionServiceImpl implements CashCollectionService { cashRecord.setName(cashCollection.getName()); //客户姓名 cashRecord.setActivity(cashCollection.getActivity()); // 活动 cashRecord.setGoodsName(cashCollection.getGoodsName()); //商品名称 - cashRecord.setGoodNum(cashCollection.getGoodsNum()); //商品数量 + cashRecord.setGoodNum(cashCollection.getGoodNum()); //商品数量 cashRecord.setPaymentCurrency(cashCollection.getPaymentCurrency()); //付款币种 cashRecord.setPaymentAmount(cashCollection.getPaymentAmount()); //付款金额 cashRecord.setReceivedMarket(cashCollection.getReceivedMarket()); //到账地区 @@ -86,9 +92,90 @@ public class CashCollectionServiceImpl implements CashCollectionService { cashRecord.setStatus(0); //订单状态:付款线下财务待审核 cashRecord.setSubmitterId(cashCollection.getSubmitterId()); //提交人ID cashRecord.setOrderType(1); //订单类型:1-收款 + //地区,根据jwcode插入 + cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(cashRecord.getJwcode())); //插入新收款订单 cashCollectionMapper.add(cashRecord); return Result.success("添加成功"); } + //撤回未审核的订单 + @Override + public Result cancel(String orderCode) { + CashRecord cashRecord = cashCollectionMapper.selectByOrderCode(orderCode); + if (cashRecord == null) { + return Result.error("订单不存在"); + } + if (cashRecord.getStatus() != 0){ + return Result.error("订单状态不符合条件"); + } + //修改订单状态 + int rows = cashCollectionMapper.updateStatus(orderCode, 5); + return rows > 0 ? Result.success("撤回成功") : Result.error("撤回失败"); + } + + //编辑并重新提交收款订单 + @Override + public Result reSubmit(CashRecord cashRecord) { + if (cashRecord.getJwcode()==null){ + return Result.error("精网号不能为空"); + } + if(cashRecord.getJwcode()<10000000||cashRecord.getJwcode()>99999999){ + return Result.error("精网号必须为8位"); + } + if(cashRecord.getName()== null){ + return Result.error("客户姓名不能为空"); + } + if(cashRecord.getActivity()== null){ + return Result.error("活动不能为空"); + } + if(cashRecord.getGoodsName()== null){ + return Result.error("商品名不能为空"); + } + if(cashRecord.getGoodNum()== null){ + return Result.error("商品数量不能为空"); + } + if(cashRecord.getPaymentCurrency()== null){ + return Result.error("支付币种不能为空"); + } + if(cashRecord.getPaymentAmount()== null){ + return Result.error("支付金额不能为空"); + } + if (cashRecord.getPayType()== null){ + return Result.error("支付方式不能为空"); + } + if (cashRecord.getReceivedMarket()== null){ + return Result.error("到账地区不能为空"); + } + if(cashRecord.getPayTime()== null){ + return Result.error("付款时间不能为空"); + } + if (cashRecord.getVoucher()== null){ + return Result.error("转账凭证不能为空"); + } + if (cashRecord.getRemark()==null){ + return Result.error("备注不能为空"); + } + CashRecord status=cashCollectionMapper.selectByOrderCode(cashRecord.getOrderCode()); + if (!status.getStatus().equals(5)){ + return Result.error("只允许编辑已撤回订单"); + } + //地区,根据jwcode插入 + cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(cashRecord.getJwcode())); + int rows = cashCollectionMapper.updateByOrderCode(cashRecord); + return rows > 0 ? Result.success("重新提交成功") : Result.error("重新提交失败"); + } + //多条件查询收款订单列表 + @Override + public PageInfo selectCollection1(Integer pageNum, Integer pageSize, CashCollection cashCollection) { + //将操作人的地区列表改为id + List markets = marketMapper.getMarketIds(cashCollection.getMarkets()); + if (markets.contains("9") || markets.contains("9999")){ + markets=null; + } + cashCollection.setMarkets(markets); + PageHelper.startPage(pageNum, pageSize); + List cashCollections = cashCollectionMapper.selectCollection1(pageNum, pageSize, cashCollection); + return new PageInfo<>(cashCollections); + } } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index efd57a2..71be8c5 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -15,6 +15,8 @@ spring: name: demo mybatis: type-handlers-package: com.example.demo.Util + mapper-locations: classpath*:**/*Mapper.xml + type-aliases-package: com.example.demo.domain.entity configuration: mysql1: map-underscore-to-camel-case: true diff --git a/src/main/resources/cashMapper/CashCollectionMapper.xml b/src/main/resources/cashMapper/CashCollectionMapper.xml index 00b9ad3..840d0fb 100644 --- a/src/main/resources/cashMapper/CashCollectionMapper.xml +++ b/src/main/resources/cashMapper/CashCollectionMapper.xml @@ -3,16 +3,113 @@ - + insert into - cash_collection(order_type,jwcode,name,market,activity, - order_code,goods_name,goods_num, + cash_record(order_type,jwcode,name,market,activity, + order_code,goods_name,good_num, payment_currency,payment_amount,received_market, pay_type,pay_time,status,submitter_id, voucher,remark) values(#{orderType},#{jwcode},#{name},#{market},#{activity}, - #{orderCode},#{goodsName},#{goodsNum},#{paymentCurrency}, + #{orderCode},#{goodsName},#{goodNum},#{paymentCurrency}, #{paymentAmount},#{receivedMarket},#{payType},#{payTime}, #{status},#{submitterId},#{voucher},#{remark}) + + + update cash_record + set status=#{status} + where order_code=#{orderCode} + + + + UPDATE cash_record + + jwcode = #{cashRecord.jwcode}, + name = #{cashRecord.name}, + market = #{cashRecord.market}, + activity = #{cashRecord.activity}, + goods_name = #{cashRecord.goodsName}, + good_num = #{cashRecord.goodNum}, + payment_currency = #{cashRecord.paymentCurrency}, + payment_amount = #{cashRecord.paymentAmount}, + received_market = #{cashRecord.receivedMarket}, + pay_type = #{cashRecord.payType}, + pay_time = #{cashRecord.payTime}, + voucher = #{cashRecord.voucher}, + remark = #{cashRecord.remark}, + status = 0, + + WHERE order_code = #{cashRecord.orderCode} + AND status = 5 + + + + + + + \ No newline at end of file