Browse Source

10-15 地区营收(无合计新币),新增收款地区补充

lijianlin/feature-202509231533026-现金管理-收款管理
lijianlin 1 month ago
parent
commit
e244d15579
  1. 5
      src/main/java/com/example/demo/controller/coin/WorkbenchController.java
  2. 19
      src/main/java/com/example/demo/domain/vo/coin/WorkbenchRevenue.java
  3. 3
      src/main/java/com/example/demo/service/coin/WorkbenchService.java
  4. 3
      src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java
  5. 31
      src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java
  6. 8
      src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java
  7. 20
      src/main/resources/mapper/WorkBenchMapper.xml

5
src/main/java/com/example/demo/controller/coin/WorkbenchController.java

@ -4,6 +4,7 @@ import com.example.demo.Util.JWTUtil;
import com.example.demo.config.interfac.Log;
import com.example.demo.domain.entity.Admin;
import com.example.demo.domain.vo.coin.WorkbenchCard;
import com.example.demo.domain.vo.coin.WorkbenchRevenue;
import com.example.demo.mapper.coin.StatisticsMapper;
import com.example.demo.service.coin.GeneralService;
import com.example.demo.service.coin.StatisticsService;
@ -94,12 +95,12 @@ public class WorkbenchController {
}
//总营收
@PostMapping("/getTotalRevenue")
public ResponseEntity<WorkbenchCard> getTotalRevenue(@RequestBody WorkbenchCard workbench, @AuthenticationPrincipal Admin admin) {
public ResponseEntity<List<WorkbenchRevenue>> getTotalRevenue(@RequestBody WorkbenchCard workbench, @AuthenticationPrincipal Admin admin) {
String account = admin.getAccount();
List<String> markets = workbenchService.getRevenueMarket(account);
workbench.setMarkets(markets);
WorkbenchCard result =workbenchService.getTotalRevenue(workbench.getStartDate(),workbench.getEndDate(),workbench.getMarkets());
List<WorkbenchRevenue> result =workbenchService.getTotalRevenue(workbench.getStartDate(),workbench.getEndDate(),workbench.getMarkets());
return ResponseEntity.ok(result);
}

19
src/main/java/com/example/demo/domain/vo/coin/WorkbenchRevenue.java

@ -6,6 +6,7 @@ import lombok.NoArgsConstructor;
import org.apache.poi.hpsf.Decimal;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @program: gold-java
@ -20,13 +21,13 @@ import java.io.Serializable;
@AllArgsConstructor
public class WorkbenchRevenue implements Serializable {
private String market; //地区
private Decimal TotalSGD; //总营收新币
private Decimal SGD ; //新币
private Decimal MYR; //马币
private Decimal HKD; //港币
private Decimal USD; //美元
private Decimal THB; //泰铢
private Decimal VDN; //越南盾
private Decimal KRW; //韩元
private Decimal CAD; //加币
private BigDecimal totalSGD; //总营收新币
private BigDecimal sgd ; //新币
private BigDecimal myr; //马币
private BigDecimal hkd; //港币
private BigDecimal usd; //美元
private BigDecimal thb; //泰铢
private BigDecimal vdn; //越南盾
private BigDecimal krw; //韩元
private BigDecimal cad; //加币
}

3
src/main/java/com/example/demo/service/coin/WorkbenchService.java

@ -3,6 +3,7 @@ package com.example.demo.service.coin;
import com.example.demo.domain.entity.Statistics;
import com.example.demo.domain.vo.coin.WorkbenchCard;
import com.example.demo.domain.vo.coin.WorkbenchMarketCard;
import com.example.demo.domain.vo.coin.WorkbenchRevenue;
import java.util.Date;
import java.util.List;
@ -48,5 +49,5 @@ public interface WorkbenchService {
//获取单一市场的工作台图表
WorkbenchCard getSingleGraph(Date startDate, Date endDate, List<String> markets);
//获取总营收
WorkbenchCard getTotalRevenue(Date startDate, Date endDate, List<String> markets);
List<WorkbenchRevenue> getTotalRevenue(Date startDate, Date endDate, List<String> markets);
}

3
src/main/java/com/example/demo/serviceImpl/cash/CashCollectionServiceImpl.java

@ -93,8 +93,9 @@ public class CashCollectionServiceImpl implements CashCollectionService {
cashRecord.setStatus(0); //订单状态付款线下财务待审核
cashRecord.setSubmitterId(cashCollection.getSubmitterId()); //提交人ID
cashRecord.setOrderType(1); //订单类型1-收款
cashRecord.setMarket(cashCollection.getMarket());
//地区根据jwcode插入
cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(cashRecord.getJwcode()));
//cashRecord.setMarket(cashCollectionMapper.getMarketByJwcode(cashRecord.getJwcode()));
//插入新收款订单
cashCollectionMapper.add(cashRecord);

31
src/main/java/com/example/demo/serviceImpl/coin/GeneralServiceImpl.java

@ -131,21 +131,36 @@ public class GeneralServiceImpl implements GeneralService {
}
List<String> list = Arrays.asList(market.split(","));
//判断是否是总部
if (list != null && list.contains("总部")||list.contains("研发部")) {
List<String> allMarkets = getMarket(); // 获取所有地区
allMarkets.remove("总部"); // 先移除可能存在的总部
allMarkets.add(0, "总部"); // 将总部添加到列表第一位
list = allMarkets; // 更新list
if (list != null && list.contains("总部")||market.equals("研发部")) {
List<String> allMarkets = generalMapper.getMarket(); // 获取所有地区
allMarkets.remove("总部");
// 固定顺序
List<String> fixed = Arrays.asList(
"新加坡", "马来西亚", "香港", "加拿大", "泰国", "越南HCM", "韩国", "未知"
);
// 先放固定顺序存在的才放
List<String> result = new ArrayList<>();
for (String m : fixed) {
if (allMarkets.contains(m)) result.add(m);
}
// 其余按字母序追加
allMarkets.removeAll(fixed);
Collections.sort(allMarkets);
result.addAll(allMarkets);
return result;
}
return list;
} catch (Exception e) {
// 记录日志
// log.error("获取地区权限失败", e);
log.error("获取地区权限失败", e);
// 重新抛出异常或者根据需要返回一个默认值或空列表
throw new RuntimeException("获取地区权限失败", e);
}
}
@Override

8
src/main/java/com/example/demo/serviceImpl/coin/WorkbenchServiceImpl.java

@ -444,12 +444,10 @@ public class WorkbenchServiceImpl implements WorkbenchService {
}
//获取总营收
@Override
public WorkbenchCard getTotalRevenue(Date startDate, Date endDate, List<String> markets) {
if (markets == null || markets.isEmpty()) {
return new WorkbenchCard(new ArrayList<>(), new ArrayList<>(), markets, startDate, endDate,0,0,new Date());
}
public List<WorkbenchRevenue> getTotalRevenue(Date startDate, Date endDate, List<String> markets) {
List<WorkbenchRevenue> list = workBenchMapper.getRevenue(markets, startDate, endDate);
return null;
return list;
}
//获取最近的更新时间

20
src/main/resources/mapper/WorkBenchMapper.xml

@ -170,6 +170,24 @@
</select>
<!--获取各地区-->
<select id="getRevenue" resultType="com.example.demo.domain.vo.coin.WorkbenchRevenue">
select cr.
SELECT m.name AS market,
SUM(CASE WHEN r.id = 2 THEN cr.received_amount ELSE 0 END) AS hkd,
SUM(CASE WHEN r.id = 3 THEN cr.received_amount ELSE 0 END) AS sgd,
SUM(CASE WHEN r.id = 4 THEN cr.received_amount ELSE 0 END) AS myr,
SUM(CASE WHEN r.id = 5 THEN cr.received_amount ELSE 0 END) AS thb,
SUM(CASE WHEN r.id = 6 THEN cr.received_amount ELSE 0 END) AS cad,
SUM(CASE WHEN r.id = 7 THEN cr.received_amount ELSE 0 END) AS vdn,
SUM(CASE WHEN r.id = 8 THEN cr.received_amount ELSE 0 END) AS krw,
NULL AS totalSGD -- 后续再用汇率折算
FROM cash_record cr
JOIN market m ON cr.received_market = m.id
JOIN rate r ON cr.received_currency = r.id
WHERE cr.received_currency IN (2,3,4,5,6,7,8) -- 只统计这7种币
AND m.name IN
<foreach item="market" collection="markets" open="(" separator="," close=")">#{market}</foreach>
AND cr.audit_time BETWEEN #{startDate} AND #{endDate}
AND cr.order_type=1
AND cr.status IN (1,3,4)
GROUP BY m.name;
</select>
</mapper>
Loading…
Cancel
Save