Browse Source

debug

contract
Yen 2 years ago
parent
commit
79aec91e47
  1. 33
      src/main/java/com/qs/serve/common/util/CodeGenUtil.java
  2. 6
      src/main/java/com/qs/serve/common/util/IdUtil.java
  3. 20
      src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java
  4. 21
      src/main/java/com/qs/serve/modules/bir/entity/vo/BirRoiCostItemVo.java
  5. 75
      src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java
  6. 6
      src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java
  7. 19
      src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java
  8. 2
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  9. 6
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java
  10. 4
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java
  11. 2
      src/main/resources/application.yml
  12. 12
      src/main/resources/mapper/bir/BirRoiRateMapper.xml
  13. 16
      src/main/resources/mapper/tbs/TbsCostApplyMapper.xml

33
src/main/java/com/qs/serve/common/util/CodeGenUtil.java

@ -0,0 +1,33 @@
package com.qs.serve.common.util;
import cn.hutool.core.util.IdUtil;
import com.qs.serve.common.framework.redis.RedisService;
import org.springframework.beans.BeansException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* 生成编号
* @author YenHex
* @since 2023/6/25
*/
public class CodeGenUtil {
public static String generate(String key,int perch){
try {
RedisService redisService = SpringUtils.getBean(RedisService.class);
LocalDate localDateTime = LocalDate.now();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMdd");
String localTime = df.format(localDateTime);
Integer value = redisService.getInteger(key)+1;
String appendStr = String.format("%0"+perch+"d", value);
return localTime + appendStr;
} catch (BeansException e) {
e.printStackTrace();
}
return IdUtil.getSnowflakeNextIdStr();
}
}

6
src/main/java/com/qs/serve/common/util/IdUtil.java

@ -25,16 +25,12 @@ public class IdUtil extends cn.hutool.core.util.IdUtil {
return prefix + String.format("%03d", end2);
}
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
System.out.println(getSnowFlakeId());
}
}
public static Long timeStampLong() {
return System.currentTimeMillis()-BASE_DIFF_MILLIS;
}
public static String dateTimeStampId() {
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");

20
src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java

@ -8,6 +8,7 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.bir.entity.BirBaseActivity;
import com.qs.serve.modules.bir.entity.so.BirCostRoiSo;
import com.qs.serve.modules.bir.entity.vo.BirRoiCostItemVo;
@ -38,7 +39,7 @@ public class BirRoiRateController {
*
* @return
*/
@GetMapping("/test")
@GetMapping("/test22")
public R<?> getPage(){
//移除当年所有
int year = 2023;
@ -52,6 +53,23 @@ public class BirRoiRateController {
return R.ok();
}
/**
*
* @return
*/
@GetMapping("/test")
public R<?> getPage(String month){
AuthContextUtils.setTenant("001");
//移除当年所有
int year = 2023;
LambdaQueryWrapper<BirBaseActivity> rmLqw = new LambdaQueryWrapper<>();
rmLqw.eq(BirBaseActivity::getKeyNum,year+month);
activityService.remove(rmLqw);
//重新生成记录
activityService.buildReport(year,Integer.parseInt(month));
return R.ok();
}
/**
* 获取费率

21
src/main/java/com/qs/serve/modules/bir/entity/vo/BirRoiCostItemVo.java

@ -22,22 +22,37 @@ public class BirRoiCostItemVo {
private LocalDate yearMonthDate;
/**
* 费用金额
* 预估金额
*/
private BigDecimal preAmt;
/**
* 费用金额实际金额+预估金额
*/
private BigDecimal costAmt;
/**
* 核销金额
* 核销金额实际金额+预估金额
*/
private BigDecimal checkAmt;
/**
* 费用金额实际金额
*/
private BigDecimal costRealAmt;
/**
* 核销金额实际金额
*/
private BigDecimal checkRealAmt;
/**
* 利润金额
*/
private BigDecimal returnAmt;
/**
* 发货金额
* 发货金额(原发货金额+预估金额)
*/
private BigDecimal dispatchAmt;

75
src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java

@ -30,6 +30,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
@ -48,18 +49,45 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
@Override
public List<BirRoiCostItemVo> queryRoiCostItems(BirRoiCostDTO param) {
//实际金额
List<BirRoiCostItemVo> realDataList = baseMapper.queryRoiCostItems(param);
for (BirRoiCostItemVo itemVo : realDataList) {
itemVo.setCostRealAmt(itemVo.getCostAmt());
itemVo.setCheckRealAmt(itemVo.getCheckAmt());
//实际金额使用核销金额
itemVo.setCostAmt(itemVo.getCheckAmt());
}
//预估金额
List<BirRoiCostItemVo> forecastDataList = baseMapper.queryForecastRoiCostItems(param);
//合并数据
for (BirRoiCostItemVo data1 : realDataList) {
for (BirRoiCostItemVo data2 : forecastDataList) {
if(data1.getYearMonth().equals(data2.getYearMonth())){
//预估金额使用申请金额
data1.setCostAmt(data1.getCostAmt().add(data2.getCostAmt()));
data1.setCheckAmt(data1.getCheckAmt().add(data2.getCheckAmt()));
//预估相加
data1.setPreAmt(data1.getPreAmt().add(data2.getPreAmt()));
}
}
}
//加入未为被命中的
List<BirRoiCostItemVo> allList = new ArrayList<>();
allList.addAll(realDataList);
for (BirRoiCostItemVo data2 : forecastDataList) {
boolean exist = false;
for (BirRoiCostItemVo data1 : realDataList) {
if(data1.getYearMonth().equals(data2.getYearMonth())){
exist = true;
break;
}
}
if(!exist){
allList.add(data2);
}
}
return realDataList;
return allList;
}
@Override
@ -134,6 +162,7 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
//防止空值
supplierCodeList.add("0");
List<BirRoiCostItemVo> costItemVoList = this.queryRoiCostItems(costDTO);
//发货单
List<ErpDispatchSumVo> dispatchSumVos = null;
if(supplierCodeList.size()>1){
@ -141,15 +170,55 @@ public class BirRoiRateServiceImpl extends ServiceImpl<BirRoiRateMapper,BirRoiRa
}
for (BirRoiCostItemVo costItemVo : costItemVoList) {
costItemVo.setDispatchAmt(BigDecimal.ZERO);
costItemVo.setDispatchAmt(costItemVo.getPreAmt());
if(dispatchSumVos!=null){
for (ErpDispatchSumVo dispatchSumVo : dispatchSumVos) {
if(dispatchSumVo.getYearMonth().equals(costItemVo.getYearMonth())){
costItemVo.setDispatchAmt(dispatchSumVo.getDispatchSumCost());
// 预估金额(后追加功能,发货金额=原发货金额+预估金额)
costItemVo.setDispatchAmt(dispatchSumVo.getDispatchSumCost().add(costItemVo.getPreAmt()));
break;
}
}
}
}
//补充数据0的项
List<BirRoiCostItemVo> costItemVos = new ArrayList<>();
for (int i = startMonthNum; i <= currMonthNum; i++) {
int month = Integer.parseInt((""+i).substring(4));
if(month>12){
i = startMonth.getYear()*100 + 100;
continue;
}
boolean isEmpty = true;
for (BirRoiCostItemVo itemVo : costItemVoList) {
if(itemVo.getYearMonth().equals(i)){
isEmpty = false;
}
}
if(isEmpty){
BigDecimal dispatchAmt = BigDecimal.ZERO;
if(dispatchSumVos!=null){
for (ErpDispatchSumVo dispatchSumVo : dispatchSumVos) {
if(dispatchSumVo.getYearMonth().equals(i)){
dispatchAmt = dispatchSumVo.getDispatchSumCost();
break;
}
}
}
BirRoiCostItemVo itemVo = new BirRoiCostItemVo();
itemVo.setYearMonth(i);
itemVo.setYearMonthDate(LocalDate.of(i/100,month,1));
itemVo.setCostAmt(BigDecimal.ZERO);
itemVo.setCheckAmt(BigDecimal.ZERO);
itemVo.setCostRealAmt(BigDecimal.ZERO);
itemVo.setCheckRealAmt(BigDecimal.ZERO);
itemVo.setReturnAmt(BigDecimal.ZERO);
itemVo.setDispatchAmt(dispatchAmt);
costItemVos.add(itemVo);
}
}
costItemVoList.addAll(costItemVos);
Collections.sort(costItemVoList,(a,b)->b.getYearMonth()-a.getYearMonth());
return costItemVoList;
}

6
src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java

@ -32,14 +32,14 @@ public class TbsActivityUtil {
public static void buildOverdue(LambdaQueryWrapper<TbsActivity> lqw,Integer queryState){
if(queryState!=null){
if(queryState.equals(0)){
lqw.gt(TbsActivity::getActEndDate, LocalDate.now());
lqw.gt(TbsActivity::getPreCheckDate, LocalDate.now());
}else if(queryState.equals(1)){
lqw.le(TbsActivity::getActEndDate, LocalDate.now());
lqw.le(TbsActivity::getPreCheckDate, LocalDate.now());
}else if(queryState.equals(2)){
LocalDate now = LocalDate.now();
int sysConfOfWarningDays = getSysConfOfWarningDays();
LocalDate startNow = now.plusDays( - sysConfOfWarningDays );
lqw.between(TbsActivity::getActEndDate,startNow , now);
lqw.between(TbsActivity::getPreCheckDate,startNow , now);
}else {
lqw.eq(TbsActivity::getId,"0");
}

19
src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java

@ -7,6 +7,7 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil;
@ -164,6 +165,24 @@ public class TbsActivityController {
}
}
/**
* 翻页
* @return
*/
@GetMapping("/page4Home")
public R<PageVo<TbsActivity>> getPage2(){
TbsActivity entity = new TbsActivity();
LambdaQueryWrapper<TbsActivity> lqw = new LambdaQueryWrapper<>(entity);
TbsActivityUtil.buildOverdue(lqw,2);
lqw.eq(TbsActivity::getCreateBy, AuthContextUtils.getSysUserId());
lqw.orderByDesc(TbsActivity::getPreCheckDate);
PageUtil.startPage();
List<TbsActivity> listObjects = tbsActivityService.list(lqw);
int overflowDays = TbsActivityUtil.getSysConfOfWarningDays();
listObjects.forEach(a->a.initWarningDay(overflowDays));
return R.byPageHelperList(listObjects);
}
/**
* 费用详情列表

2
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -230,7 +230,7 @@ public class TbsCostApplyController {
if(contract&&!supplier.getSupplierFlag().equals(1)){
return R.error("当前用户非供应商");
}
entity.setCode("CA"+IdUtil.timeStampId());
entity.setCode(IdUtil.dateTimeStampId());
entity.setSupplierCode(supplier.getCode());
entity.setSupplierName(supplier.getName());
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId());

6
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java

@ -248,10 +248,10 @@ public class TbsActivity implements Serializable {
overdueWarningDays = 0L;
if(!this.getActivityState().equals(2)
&&!this.getActivityState().equals(5)
&&this.getActEndDate()!=null){
&&this.getPreCheckDate()!=null){
try {
LocalDate now = LocalDate.now();
LocalDate end = this.getActEndDate();
LocalDate end = this.getPreCheckDate();
Period duration;
duration = Period.between(now,end);
overdueWarningDays = (long)duration.getDays();
@ -262,11 +262,13 @@ public class TbsActivity implements Serializable {
expenseApplicationActivityWriteOffOverdueWarningDays = preDays;
if(overdueWarningDays >= expenseApplicationActivityWriteOffOverdueWarningDays){
overdueState = 0;
overdueWarningDays=-overdueWarningDays;
}else if(overdueWarningDays<0){
overdueState = 1;
}else {
overdueState = 2;
}
}
}

4
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -93,9 +93,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
if (record.getActEndDate()==null){
continue;
}
if(record.getActEndDate().isAfter(now)){
if(record.getActEndDate().isBefore(now)){
record.setOverdueState(1);
}else if(record.getActEndDate().isAfter(startNow)){
}else if(record.getActEndDate().isBefore(startNow)){
record.setOverdueState(2);
}else {
record.setOverdueState(0);

2
src/main/resources/application.yml

@ -21,6 +21,7 @@ project:
- /favicon.ico
- /error
- /portal/syKeyLogin
- /bir/roiRate/test
permits: #忽略登录
- /thirty/** #第三方接口
- /common/upload #支持API上传调整
@ -30,6 +31,7 @@ project:
- /favicon.ico
- /error
- /callback
- /bir/roiRate/test
#mybatis plus
mybatis-plus:

12
src/main/resources/mapper/bir/BirRoiRateMapper.xml

@ -50,12 +50,15 @@
SELECT
key_num AS `year_month`,
min( start_date ) AS year_month_date,
sum(bir_base_activity.pre_act_quantity) as cost_amt,
sum(bir_base_activity.verification_amt) as check_amt
sum(bir_base_activity.activity_total_amt) as cost_amt,
sum(bir_base_activity.verification_amt) as check_amt,
sum(bir_base_activity.pre_act_quantity) as pre_amt
FROM
`bir_base_activity` left join `tbs_cost_apply` on `bir_base_activity`.cost_apply_id = `tbs_cost_apply`.id
<where>
tbs_cost_apply.charge_state in (1,2)
and bir_base_activity.del_flag = '0'
and `tbs_cost_apply`.del_flag = '0'
and bir_base_activity.key_num &gt;= #{query.startMonthNum}
and bir_base_activity.key_num &lt;= #{query.endMonthNum}
<if test="query.supplierId!=null and query.supplierId!=''">
@ -90,11 +93,14 @@
key_num AS `year_month`,
min( start_date ) AS year_month_date,
sum(bir_base_activity.activity_total_amt) as cost_amt,
sum(bir_base_activity.verification_amt) as check_amt
sum(bir_base_activity.verification_amt) as check_amt,
sum(bir_base_activity.pre_act_quantity) as pre_amt
FROM
`bir_base_activity` left join `tbs_cost_apply` on `bir_base_activity`.cost_apply_id = `tbs_cost_apply`.id
<where>
tbs_cost_apply.charge_state = 3
and bir_base_activity.del_flag = '0'
and `tbs_cost_apply`.del_flag = '0'
and bir_base_activity.key_num &gt;= #{query.startMonthNum}
and bir_base_activity.key_num &lt;= #{query.endMonthNum}
<if test="query.supplierId!=null and query.supplierId!=''">

16
src/main/resources/mapper/tbs/TbsCostApplyMapper.xml

@ -66,7 +66,7 @@
SELECT
<if test="query!=null">
<if test="query.overdueState!=null">
`tbs_activity`.act_end_date,
`tbs_activity`.`pre_check_date` act_end_date,
</if>
</if>
<include refid="tbsCostApplySql"/>
@ -81,21 +81,21 @@
<if test="query.overdueState!=null and query.overdueState==0">
and `tbs_activity`.`del_flag` = 0
and `tbs_activity`.`activity_state` = 0
and `tbs_cost_apply`.`charge_state` = 1
and `tbs_activity`.act_end_date &gt; #{query.nowDate}
and `tbs_cost_apply`.`charge_state` = 2
and `tbs_activity`.pre_check_date &gt; #{query.nowDate}
</if>
<if test="query.overdueState!=null and query.overdueState==1">
and `tbs_activity`.`del_flag` = 0
and `tbs_activity`.`activity_state` = 0
and `tbs_cost_apply`.`charge_state` = 1
and `tbs_activity`.act_end_date &lt;= #{query.nowDate}
and `tbs_cost_apply`.`charge_state` = 2
and `tbs_activity`.pre_check_date &lt;= #{query.nowDate}
</if>
<if test="query.overdueState!=null and query.overdueState==2">
and `tbs_activity`.`del_flag` = 0
and `tbs_activity`.`activity_state` = 0
and `tbs_cost_apply`.`charge_state` = 1
and `tbs_activity`.act_end_date &gt;= #{query.startNowDate}
and `tbs_activity`.act_end_date &lt; #{query.nowDate}
and `tbs_cost_apply`.`charge_state` = 2
and `tbs_activity`.pre_check_date &gt;= #{query.startNowDate}
and `tbs_activity`.pre_check_date &lt; #{query.nowDate}
</if>
<include refid="baseWhere4CostApply"/>
</if>

Loading…
Cancel
Save