diff --git a/src/main/java/com/qs/serve/common/util/CodeGenUtil.java b/src/main/java/com/qs/serve/common/util/CodeGenUtil.java new file mode 100644 index 00000000..73ce7fb4 --- /dev/null +++ b/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(); + } + +} diff --git a/src/main/java/com/qs/serve/common/util/IdUtil.java b/src/main/java/com/qs/serve/common/util/IdUtil.java index 96500793..d15bd32c 100644 --- a/src/main/java/com/qs/serve/common/util/IdUtil.java +++ b/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"); diff --git a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java b/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java index 4f51332e..97d46948 100644 --- a/src/main/java/com/qs/serve/modules/bir/controller/BirRoiRateController.java +++ b/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 rmLqw = new LambdaQueryWrapper<>(); + rmLqw.eq(BirBaseActivity::getKeyNum,year+month); + activityService.remove(rmLqw); + //重新生成记录 + activityService.buildReport(year,Integer.parseInt(month)); + return R.ok(); + } + /** * 获取费率 diff --git a/src/main/java/com/qs/serve/modules/bir/entity/vo/BirRoiCostItemVo.java b/src/main/java/com/qs/serve/modules/bir/entity/vo/BirRoiCostItemVo.java index 9bd7306d..2f0e2db7 100644 --- a/src/main/java/com/qs/serve/modules/bir/entity/vo/BirRoiCostItemVo.java +++ b/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; diff --git a/src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java b/src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java index ed152352..0d0bfa6c 100644 --- a/src/main/java/com/qs/serve/modules/bir/service/impl/BirRoiRateServiceImpl.java +++ b/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 queryRoiCostItems(BirRoiCostDTO param) { + //实际金额 List realDataList = baseMapper.queryRoiCostItems(param); + for (BirRoiCostItemVo itemVo : realDataList) { + itemVo.setCostRealAmt(itemVo.getCostAmt()); + itemVo.setCheckRealAmt(itemVo.getCheckAmt()); + //实际金额使用核销金额 + itemVo.setCostAmt(itemVo.getCheckAmt()); + } + //预估金额 List 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 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 costItemVoList = this.queryRoiCostItems(costDTO); + //发货单 List dispatchSumVos = null; if(supplierCodeList.size()>1){ @@ -141,15 +170,55 @@ public class BirRoiRateServiceImpl extends ServiceImpl 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; } diff --git a/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java b/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java index 5cbd137a..d400c9da 100644 --- a/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java +++ b/src/main/java/com/qs/serve/modules/tbs/common/util/TbsActivityUtil.java @@ -32,14 +32,14 @@ public class TbsActivityUtil { public static void buildOverdue(LambdaQueryWrapper 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"); } diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java index e6037f86..74176cfb 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsActivityController.java +++ b/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> getPage2(){ + TbsActivity entity = new TbsActivity(); + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(entity); + TbsActivityUtil.buildOverdue(lqw,2); + lqw.eq(TbsActivity::getCreateBy, AuthContextUtils.getSysUserId()); + lqw.orderByDesc(TbsActivity::getPreCheckDate); + PageUtil.startPage(); + List listObjects = tbsActivityService.list(lqw); + int overflowDays = TbsActivityUtil.getSysConfOfWarningDays(); + listObjects.forEach(a->a.initWarningDay(overflowDays)); + return R.byPageHelperList(listObjects); + } + /** * 费用详情列表 diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 6fb21cdd..9e3bbcf2 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/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()); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java index 7950baa8..bf71f1a4 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivity.java @@ -246,12 +246,12 @@ public class TbsActivity implements Serializable { */ public void initWarningDay(int preDays){ overdueWarningDays = 0L; - if( !this.getActivityState().equals(2) + 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; } + } } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index d8819e26..0e7177f2 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java @@ -93,9 +93,9 @@ public class TbsCostApplyServiceImpl extends ServiceImpl 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 >= #{query.startMonthNum} and bir_base_activity.key_num <= #{query.endMonthNum} @@ -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 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 >= #{query.startMonthNum} and bir_base_activity.key_num <= #{query.endMonthNum} diff --git a/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml b/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml index e3224354..81fe9dca 100644 --- a/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml +++ b/src/main/resources/mapper/tbs/TbsCostApplyMapper.xml @@ -66,7 +66,7 @@ SELECT - `tbs_activity`.act_end_date, + `tbs_activity`.`pre_check_date` act_end_date, @@ -81,21 +81,21 @@ 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 > #{query.nowDate} + and `tbs_cost_apply`.`charge_state` = 2 + and `tbs_activity`.pre_check_date > #{query.nowDate} 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 <= #{query.nowDate} + and `tbs_cost_apply`.`charge_state` = 2 + and `tbs_activity`.pre_check_date <= #{query.nowDate} 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 >= #{query.startNowDate} - and `tbs_activity`.act_end_date < #{query.nowDate} + and `tbs_cost_apply`.`charge_state` = 2 + and `tbs_activity`.pre_check_date >= #{query.startNowDate} + and `tbs_activity`.pre_check_date < #{query.nowDate}