付款进度代码同步
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
package com.ruoyi.oa.service;
|
||||
|
||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
|
||||
import com.ruoyi.oa.domain.vo.DashboardChartsVo;
|
||||
import com.ruoyi.oa.domain.vo.DashboardMetricsVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
||||
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
|
||||
@@ -78,4 +80,12 @@ public interface ISysOaProjectService {
|
||||
TableDataInfo<SysOaProjectVo> listProjects(SysOaProjectBo bo, PageQuery pageQuery);
|
||||
|
||||
TableDataInfo<SysOaProjectVo> listWareProject(SysOaProjectBo bo, PageQuery pageQuery);
|
||||
|
||||
|
||||
|
||||
DashboardMetricsVo getMetrics(Date start, Date end,Long tradeType);
|
||||
|
||||
DashboardChartsVo getCharts(Date start, Date end,Long tradeType);
|
||||
|
||||
List<SysOaProjectVo> getExpiringForeignProjects(Integer days,Long tradeType);
|
||||
}
|
||||
|
||||
@@ -10,19 +10,18 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.ruoyi.oa.domain.bo.SysOaWarehouseDetailBo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaOutWarehouseListVo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaTaskVo;
|
||||
import com.ruoyi.oa.domain.vo.*;
|
||||
import com.ruoyi.oa.service.CodeGeneratorService;
|
||||
import liquibase.pro.packaged.A;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import com.ruoyi.oa.domain.bo.SysOaProjectBo;
|
||||
import com.ruoyi.oa.domain.vo.SysOaProjectVo;
|
||||
import com.ruoyi.oa.domain.SysOaProject;
|
||||
import com.ruoyi.oa.mapper.SysOaProjectMapper;
|
||||
import com.ruoyi.oa.service.ISysOaProjectService;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -44,7 +43,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
||||
|
||||
// 1. 定义常量列表(最好放到某个常量类里)
|
||||
private static final Set<String> VALID_PREFIXES = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
|
||||
"PL", "TC", "GI", "GL", "ZAM", "CC", "CR", "STL", "SM", "TH","RJ"
|
||||
"PL", "TC", "GI", "GL", "ZAM", "CC", "CR", "STL", "SM", "TH", "RJ"
|
||||
)));
|
||||
|
||||
|
||||
@@ -98,7 +97,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
||||
*/
|
||||
@Override
|
||||
public Boolean insertByBo(SysOaProjectBo bo) {
|
||||
if (bo.getProjectCode()!=null){
|
||||
if (bo.getProjectCode() != null) {
|
||||
bo.setProjectCode(codeGeneratorService.nextCode(bo.getProjectCode()));
|
||||
}
|
||||
SysOaProject add = BeanUtil.toBean(bo, SysOaProject.class);
|
||||
@@ -126,6 +125,7 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
||||
}
|
||||
|
||||
// 2. 在你的逻辑里做判断
|
||||
|
||||
/**
|
||||
* 保存前的数据校验
|
||||
*/
|
||||
@@ -262,12 +262,13 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
||||
qw.eq("sop.trade_type", bo.getTradeType());
|
||||
qw.like(StringUtils.isNotBlank(bo.getProjectNum()), "sop.project_num", bo.getProjectNum());
|
||||
qw.groupBy("sop.project_id");
|
||||
Page<SysOaProjectVo> result = baseMapper.selectVoListPage(pageQuery.build(),qw);
|
||||
Page<SysOaProjectVo> result = baseMapper.selectVoListPage(pageQuery.build(), qw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看存在出库的项目
|
||||
*
|
||||
* @param bo
|
||||
* @param pageQuery
|
||||
* @return
|
||||
@@ -275,12 +276,81 @@ public class SysOaProjectServiceImpl implements ISysOaProjectService {
|
||||
@Override
|
||||
public TableDataInfo<SysOaProjectVo> listWareProject(SysOaProjectBo bo, PageQuery pageQuery) {
|
||||
QueryWrapper<SysOaProject> lqw = Wrappers.query();
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.projec_name", bo.getProjectName());
|
||||
Page<SysOaProjectVo> result = baseMapper.listWareProject(pageQuery.build(), lqw);
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectName()), "sop.project_name", bo.getProjectName());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectCode()), "sop.project_code", bo.getProjectCode());
|
||||
lqw.like(StringUtils.isNotBlank(bo.getProjectNum()), "sop.project_num", bo.getProjectNum());
|
||||
Page<SysOaProjectVo> result = baseMapper.listWareProject(pageQuery.build(), lqw);
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public DashboardMetricsVo getMetrics(Date start, Date end,Long tradeType) {
|
||||
|
||||
// 本期
|
||||
BigDecimal curFunds = baseMapper.selectTotalFunds(start, end,tradeType);
|
||||
Integer curCount = baseMapper.selectContractCount(start, end,tradeType);
|
||||
Integer curExpire = baseMapper.selectExpiringCount(start, end,tradeType);
|
||||
|
||||
// 前期平均
|
||||
BigDecimal avgFunds = baseMapper.selectPrevAvgTotalFunds(start, end,tradeType);
|
||||
BigDecimal avgCount = baseMapper.selectPrevAvgContractCount(start, end,tradeType);
|
||||
BigDecimal avgExpire = baseMapper.selectPrevAvgExpiringCount(start, end,tradeType);
|
||||
|
||||
// 计算增长率 = (cur - avg) / avg * 100
|
||||
BigDecimal fundRate = avgFunds.compareTo(BigDecimal.ZERO) == 0
|
||||
? BigDecimal.ZERO
|
||||
: curFunds.subtract(avgFunds)
|
||||
.divide(avgFunds, 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
|
||||
BigDecimal countRate = avgCount.compareTo(BigDecimal.ZERO) == 0
|
||||
? BigDecimal.ZERO
|
||||
: BigDecimal.valueOf(curCount).subtract(avgCount)
|
||||
.divide(avgCount, 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
|
||||
BigDecimal expireRate = avgExpire.compareTo(BigDecimal.ZERO) == 0
|
||||
? BigDecimal.ZERO
|
||||
: BigDecimal.valueOf(curExpire).subtract(avgExpire)
|
||||
.divide(avgExpire, 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
|
||||
// 组装 VO
|
||||
DashboardMetricsVo vo = new DashboardMetricsVo();
|
||||
vo.setTotalFunds(curFunds);
|
||||
vo.setGrowthFunds(fundRate);
|
||||
vo.setContractCount(curCount);
|
||||
vo.setGrowthCount(countRate);
|
||||
vo.setExpiringCount(curExpire);
|
||||
vo.setGrowthExpiring(expireRate);
|
||||
|
||||
// 用本月金额 ÷ 历史平均 × 100 得到 completionRate
|
||||
BigDecimal completionRate;
|
||||
if (avgFunds.compareTo(BigDecimal.ZERO) > 0) {
|
||||
completionRate = curFunds
|
||||
.divide(avgFunds, 2, RoundingMode.HALF_UP)
|
||||
.multiply(BigDecimal.valueOf(100));
|
||||
} else {
|
||||
completionRate = BigDecimal.ZERO;
|
||||
}
|
||||
vo.setCompletionRate(completionRate);
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DashboardChartsVo getCharts(Date start, Date end,Long tradeType) {
|
||||
DashboardChartsVo vo = new DashboardChartsVo();
|
||||
vo.setContractAmountTrend(baseMapper.selectContractAmountTrend(start, end,tradeType));
|
||||
vo.setProjectStatusDistribution(baseMapper.selectProjectStatusDistribution(tradeType));
|
||||
vo.setMonthlyContractComparison(baseMapper.selectMonthlyContractComparison(start, end,tradeType));
|
||||
return vo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SysOaProjectVo> getExpiringForeignProjects(Integer expireDays,Long tradeType) {
|
||||
Date now = new Date();
|
||||
return baseMapper.selectExpiringForeignProjects(now, expireDays,tradeType);
|
||||
}
|
||||
|
||||
private QueryWrapper<SysOaProject> buildOutWareQueryWrapper(SysOaWarehouseDetailBo bo) {
|
||||
QueryWrapper<SysOaProject> lqw = Wrappers.query();
|
||||
|
||||
@@ -71,7 +71,6 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
sysOaTaskBo.setState(0L);
|
||||
sysOaTaskBo.setWorkerId(LoginHelper.getUserId());
|
||||
List<SysOaTaskVo> tasks = sysOaTaskService.queryListByRemain(sysOaTaskBo,pageQuery);
|
||||
System.out.println(tasks);
|
||||
ArrayList<SysOaRemindVo> sysOaRemindVos = new ArrayList<>();
|
||||
for (SysOaTaskVo task : tasks) {
|
||||
SysOaRemindVo sysOaRemindVo = new SysOaRemindVo();
|
||||
@@ -111,34 +110,21 @@ public class SysOaRemindServiceImpl implements ISysOaRemindService {
|
||||
}
|
||||
|
||||
// 查询邻近过期进度
|
||||
OaProgressBo oaProgressBo = new OaProgressBo();
|
||||
oaProgressBo.setType(1L);
|
||||
List<OaProgressVo> rows1 = progressService.queryPageList(oaProgressBo, pageQuery).getRows();
|
||||
for (OaProgressVo row : rows1) {
|
||||
if (row.getRemainTime()!=null && row.getStatus() !=1L && row.getRemainTime()<3L){
|
||||
SysOaRemindVo sysOaRemindVo = new SysOaRemindVo();
|
||||
sysOaRemindVo.setType("progress-project");
|
||||
sysOaRemindVo.setContent(row.getProgressName());
|
||||
sysOaRemindVo.setRemainTime(row.getRemainTime());
|
||||
sysOaRemindVo.setTaskTime(row.getEndTime());
|
||||
sysOaRemindVos.add(sysOaRemindVo);
|
||||
}
|
||||
// OaProgressBo oaProgressBo = new OaProgressBo();
|
||||
// oaProgressBo.setType(1L);
|
||||
// List<OaProgressVo> rows1 = progressService.queryPageList(oaProgressBo, pageQuery).getRows();
|
||||
// for (OaProgressVo row : rows1) {
|
||||
// if (row.getRemainTime()!=null && row.getStatus() ==0L && row.getRemainTime()<3L){
|
||||
// SysOaRemindVo sysOaRemindVo = new SysOaRemindVo();
|
||||
// sysOaRemindVo.setType("progress-project");
|
||||
// sysOaRemindVo.setContent(row.getProgressName());
|
||||
// sysOaRemindVo.setRemainTime(row.getRemainTime());
|
||||
// sysOaRemindVo.setTaskTime(row.getEndTime());
|
||||
// sysOaRemindVos.add(sysOaRemindVo);
|
||||
// }
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
||||
// 查询邻近过期进度
|
||||
oaProgressBo.setType(2L);
|
||||
List<OaProgressVo> rows2 = progressService.queryPageList(oaProgressBo, pageQuery).getRows();
|
||||
for (OaProgressVo row : rows2) {
|
||||
if (row.getRemainTime()!=null && row.getRemainTime()<3L){
|
||||
SysOaRemindVo sysOaRemindVo = new SysOaRemindVo();
|
||||
sysOaRemindVo.setType("progress-money");
|
||||
sysOaRemindVo.setContent(row.getProgressName());
|
||||
sysOaRemindVo.setRemainTime(row.getRemainTime());
|
||||
sysOaRemindVo.setTaskTime(row.getPayEndTime());
|
||||
sysOaRemindVos.add(sysOaRemindVo);
|
||||
}
|
||||
}
|
||||
return R.ok(sysOaRemindVos);
|
||||
}
|
||||
|
||||
|
||||
@@ -172,9 +172,12 @@ public class SysOaWarehouseServiceImpl implements ISysOaWarehouseService {
|
||||
if (select == null) {
|
||||
baseMapper.insert(add);
|
||||
flag = add.getId();
|
||||
} else {
|
||||
} else {
|
||||
select.setInventory(select.getInventory() + bo.getInventory());
|
||||
select.setPrice((select.getPrice() * select.getInventory() + bo.getPrice() * bo.getInventory()) / (select.getInventory() + bo.getInventory()));
|
||||
if (bo.getPrice()!=null && bo.getPrice()>0) {
|
||||
select.setPrice((select.getPrice() * select.getInventory() + bo.getPrice() * bo.getInventory()) / (select.getInventory() + bo.getInventory()));
|
||||
}
|
||||
|
||||
flag = select.getId();
|
||||
}
|
||||
|
||||
|
||||
@@ -167,7 +167,6 @@ public class SysOaWarehouseTaskServiceImpl implements ISysOaWarehouseTaskService
|
||||
@Override
|
||||
public int updateToWare(SysOaWarehouseTaskBo bo) {
|
||||
|
||||
System.out.println(bo);
|
||||
// 判断是否为此物料完成状态
|
||||
if (bo.getTaskStatus() == 2) {
|
||||
Long masterId;
|
||||
@@ -197,10 +196,8 @@ public class SysOaWarehouseTaskServiceImpl implements ISysOaWarehouseTaskService
|
||||
.eq(SysOaWarehouseTask::getMasterId, bo.getMasterId())
|
||||
.in(SysOaWarehouseTask::getTaskStatus, Arrays.asList(0, 1));
|
||||
List<SysOaWarehouseTask> sysOaWarehouseTasks = baseMapper.selectList(taskLambdaQueryWrapper);
|
||||
System.out.println(sysOaWarehouseTasks);
|
||||
if (sysOaWarehouseTasks.isEmpty()) {
|
||||
SysOaWarehouseMasterVo sysOaWarehouseMasterVo = masterMapper.selectVoById(bo.getMasterId());
|
||||
System.out.println("184513807548012740712308470812");
|
||||
// 如果为空代表了所有都结束了 将采购单状态置1
|
||||
sysOaWarehouseMasterVo.setStatus(1L);
|
||||
masterMapper.updateById(BeanUtil.toBean(sysOaWarehouseMasterVo, SysOaWarehouseMaster.class));
|
||||
@@ -213,7 +210,7 @@ public class SysOaWarehouseTaskServiceImpl implements ISysOaWarehouseTaskService
|
||||
return baseMapper.updateById(task);
|
||||
}
|
||||
|
||||
private int toWareOne(Long masterId, SysOaWarehouseTaskBo bo, SysOaWarehouseDetailBo sysOaWarehouseDetailBo) {
|
||||
private int toWareOne(Long masterId, SysOaWarehouseTaskBo bo , SysOaWarehouseDetailBo sysOaWarehouseDetailBo) {
|
||||
// 进行入库操作 (因为存在一种情况是此为全新物料是没有物料id的)
|
||||
SysOaWarehouse sysOaWarehouse = new SysOaWarehouse();
|
||||
Long warehouseId = 0L;
|
||||
@@ -226,16 +223,14 @@ public class SysOaWarehouseTaskServiceImpl implements ISysOaWarehouseTaskService
|
||||
sysOaWarehouse.setSpecifications(bo.getSpecifications());
|
||||
sysOaWarehouse.setName(bo.getName());
|
||||
sysOaWarehouse.setRemark(bo.getRemark());
|
||||
sysOaWarehouse.setUnit("件");
|
||||
sysOaWarehouse.setUnit(bo.getUnit());
|
||||
wareMapper.insert(sysOaWarehouse);
|
||||
warehouseId = sysOaWarehouse.getId();
|
||||
} else {
|
||||
warehouseId = bo.getWarehouseId();
|
||||
sysOaWarehouse = wareMapper.selectById(warehouseId);
|
||||
|
||||
sysOaWarehouse.setPrice((sysOaWarehouse.getPrice() * sysOaWarehouse.getInventory() + bo.getPrice() * bo.getTaskInventory()) / (sysOaWarehouse.getInventory() + bo.getTaskInventory()));
|
||||
sysOaWarehouse.setInventory(sysOaWarehouse.getInventory() + bo.getTaskInventory());
|
||||
System.out.println(sysOaWarehouse);
|
||||
wareMapper.updateById(sysOaWarehouse);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user