|
@@ -3,11 +3,13 @@ package com.fjhx.jxst.service.sales.impl;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
|
|
|
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.fjhx.account.entity.account.po.AccountManagement;
|
|
import com.fjhx.account.entity.account.po.AccountManagement;
|
|
import com.fjhx.account.service.account.AccountManagementService;
|
|
import com.fjhx.account.service.account.AccountManagementService;
|
|
import com.fjhx.area.utils.CustomizeAreaUtil;
|
|
import com.fjhx.area.utils.CustomizeAreaUtil;
|
|
|
|
+import com.fjhx.common.constant.SourceConstant;
|
|
import com.fjhx.common.entity.corporation.po.Corporation;
|
|
import com.fjhx.common.entity.corporation.po.Corporation;
|
|
import com.fjhx.common.enums.CodingRuleEnum;
|
|
import com.fjhx.common.enums.CodingRuleEnum;
|
|
import com.fjhx.common.service.coding.CodingRuleService;
|
|
import com.fjhx.common.service.coding.CodingRuleService;
|
|
@@ -32,15 +34,14 @@ import com.ruoyi.common.core.domain.BasePo;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
import com.ruoyi.common.utils.wrapper.IWrapper;
|
|
import com.ruoyi.common.utils.wrapper.SqlField;
|
|
import com.ruoyi.common.utils.wrapper.SqlField;
|
|
|
|
+import com.ruoyi.system.service.ISysRoleService;
|
|
|
|
+import com.ruoyi.system.utils.UserUtil;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
-import java.util.Arrays;
|
|
|
|
-import java.util.Date;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@@ -69,6 +70,8 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
private CorporationService corporationService;
|
|
private CorporationService corporationService;
|
|
@Autowired
|
|
@Autowired
|
|
private CodingRuleService codingRuleService;
|
|
private CodingRuleService codingRuleService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISysRoleService sysRoleService;
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public Page<SalesContractVo> getPage(SalesContractSelectDto dto) {
|
|
public Page<SalesContractVo> getPage(SalesContractSelectDto dto) {
|
|
@@ -89,10 +92,21 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
//是否结清过滤
|
|
//是否结清过滤
|
|
wrapper.eq("sc", SalesContractSelectDto::getIsSettled, dto.getIsSettled());
|
|
wrapper.eq("sc", SalesContractSelectDto::getIsSettled, dto.getIsSettled());
|
|
|
|
|
|
|
|
+ //获取用户角色列表
|
|
|
|
+ DynamicDataSourceContextHolder.push(SourceConstant.BASE);
|
|
|
|
+ Set<String> permissionList = sysRoleService.selectRolePermissionByUserId(SecurityUtils.getUserId());
|
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
|
+
|
|
|
|
+ //分页权限过滤(财务/管理员看所有,负责人看当前部门,部门总监看部门及子部门数据,其他人只能看自己)
|
|
|
|
+ if(!permissionList.contains("admin") && !permissionList.contains("finance")){
|
|
|
|
+ List<Long> authUserIdList = UserUtil.getAuthUserIdList();
|
|
|
|
+ wrapper.in("sc",SalesContract::getCreateUser,authUserIdList);
|
|
|
|
+ }
|
|
|
|
+
|
|
wrapper.orderByDesc("sc", SalesContract::getId);
|
|
wrapper.orderByDesc("sc", SalesContract::getId);
|
|
Page<SalesContractVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
Page<SalesContractVo> page = this.baseMapper.getPage(dto.getPage(), wrapper);
|
|
List<SalesContractVo> records = page.getRecords();
|
|
List<SalesContractVo> records = page.getRecords();
|
|
- if(ObjectUtil.isEmpty(records)){
|
|
|
|
|
|
+ if (ObjectUtil.isEmpty(records)) {
|
|
return page;
|
|
return page;
|
|
}
|
|
}
|
|
List<Long> salesContractIds = records.stream().map(SalesContract::getId).collect(Collectors.toList());
|
|
List<Long> salesContractIds = records.stream().map(SalesContract::getId).collect(Collectors.toList());
|
|
@@ -108,13 +122,13 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
//赋值销售合同明细生产进度
|
|
//赋值销售合同明细生产进度
|
|
List<SalesContractDetailsVo> salesContractDetailsVos = salesContractDetailsService.getProductionSchedule(
|
|
List<SalesContractDetailsVo> salesContractDetailsVos = salesContractDetailsService.getProductionSchedule(
|
|
IWrapper.<SalesContractDetails>getWrapper()
|
|
IWrapper.<SalesContractDetails>getWrapper()
|
|
- .in("scd", SalesContractDetails::getSalesContractId, salesContractIds)
|
|
|
|
|
|
+ .in("scd", SalesContractDetails::getSalesContractId, salesContractIds)
|
|
);
|
|
);
|
|
//计算完工率
|
|
//计算完工率
|
|
- salesContractDetailsVos.forEach(item->{
|
|
|
|
|
|
+ salesContractDetailsVos.forEach(item -> {
|
|
BigDecimal multiply = BigDecimal.valueOf(100);
|
|
BigDecimal multiply = BigDecimal.valueOf(100);
|
|
- if(item.getProductionQuantity().compareTo(BigDecimal.ZERO)!=0) {
|
|
|
|
- multiply = item.getCompletedQuantity()
|
|
|
|
|
|
+ if (item.getProductionQuantity().compareTo(BigDecimal.ZERO) != 0) {
|
|
|
|
+ multiply = item.getCompletedQuantity()
|
|
.divide(item.getProductionQuantity(), 2, RoundingMode.HALF_UP)
|
|
.divide(item.getProductionQuantity(), 2, RoundingMode.HALF_UP)
|
|
.multiply(BigDecimal.valueOf(100));
|
|
.multiply(BigDecimal.valueOf(100));
|
|
}
|
|
}
|
|
@@ -127,7 +141,7 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
});
|
|
});
|
|
Map<Long, List<SalesContractDetailsVo>> scdMap = salesContractDetailsVos.stream()
|
|
Map<Long, List<SalesContractDetailsVo>> scdMap = salesContractDetailsVos.stream()
|
|
.collect(Collectors.groupingBy(SalesContractDetails::getSalesContractId));
|
|
.collect(Collectors.groupingBy(SalesContractDetails::getSalesContractId));
|
|
- records.forEach(item->item.setContractDetailsList(scdMap.get(item.getId())));
|
|
|
|
|
|
+ records.forEach(item -> item.setContractDetailsList(scdMap.get(item.getId())));
|
|
|
|
|
|
return page;
|
|
return page;
|
|
}
|
|
}
|
|
@@ -188,20 +202,14 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
@DSTransactional
|
|
@DSTransactional
|
|
@Override
|
|
@Override
|
|
public void add(SalesContractDto salesContractDto) {
|
|
public void add(SalesContractDto salesContractDto) {
|
|
- List<SalesContractDetails> salesContractDetailsList = salesContractDto.getSalesContractDetailsList();
|
|
|
|
-// BigDecimal count = BigDecimal.ZERO;
|
|
|
|
-// for (SalesContractDetails salesContractDetails : salesContractDetailsList) {
|
|
|
|
-// count = count.add(salesContractDetails.getUnitPrice().multiply(salesContractDetails.getQuantity()));
|
|
|
|
-// }
|
|
|
|
-// salesContractDto.setContractAmount(count);
|
|
|
|
-// salesContractDto.setCode(CodeEnum.SALES_CONTRACT.getCode());
|
|
|
|
salesContractDto.setCode(codingRuleService.createCode(CodingRuleEnum.JXST_SALES_CONTRACT.getKey(), salesContractDto.getCustomerId()));
|
|
salesContractDto.setCode(codingRuleService.createCode(CodingRuleEnum.JXST_SALES_CONTRACT.getKey(), salesContractDto.getCustomerId()));
|
|
|
|
+ this.saveOrUpdate(salesContractDto);
|
|
|
|
|
|
- this.save(salesContractDto);
|
|
|
|
- for (SalesContractDetails salesContractDetails : salesContractDetailsList) {
|
|
|
|
- salesContractDetails.setSalesContractId(salesContractDto.getId());
|
|
|
|
- }
|
|
|
|
- salesContractDetailsService.saveBatch(salesContractDetailsList);
|
|
|
|
|
|
+ List<SalesContractDetails> salesContractDetailsList = salesContractDto.getSalesContractDetailsList();
|
|
|
|
+ salesContractDetailsList.forEach(item -> item.setSalesContractId(salesContractDto.getId()));
|
|
|
|
+
|
|
|
|
+ //处理被删除的数据,并保存/修改
|
|
|
|
+ salesContractDetailsService.editLinked(salesContractDetailsList, SalesContractDetails::getSalesContractId, salesContractDto.getId());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -257,7 +265,7 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
/**
|
|
/**
|
|
* 公共的计算代码块
|
|
* 公共的计算代码块
|
|
*/
|
|
*/
|
|
- private SettlementBo profitClearingConn(SettlementBo record){
|
|
|
|
|
|
+ private SettlementBo profitClearingConn(SettlementBo record) {
|
|
//总收入
|
|
//总收入
|
|
record.setTotalIncome(record.getContractClaimAmount().setScale(4, RoundingMode.HALF_UP));
|
|
record.setTotalIncome(record.getContractClaimAmount().setScale(4, RoundingMode.HALF_UP));
|
|
|
|
|
|
@@ -302,11 +310,11 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
wrapper.eq("sc.is_settled", dto.getIsSettled());
|
|
wrapper.eq("sc.is_settled", dto.getIsSettled());
|
|
|
|
|
|
|
|
|
|
- wrapper.like("cu.name",dto.getCustomerName());
|
|
|
|
- wrapper.like("sc.code",dto.getSalesContractCode());
|
|
|
|
|
|
+ wrapper.like("cu.name", dto.getCustomerName());
|
|
|
|
+ wrapper.like("sc.code", dto.getSalesContractCode());
|
|
|
|
|
|
- wrapper.ge("sc",SalesContract::getCreateTime,dto.getBeginTime());
|
|
|
|
- wrapper.le("sc",SalesContract::getCreateTime,dto.getEndTime());
|
|
|
|
|
|
+ wrapper.ge("sc", SalesContract::getCreateTime, dto.getBeginTime());
|
|
|
|
+ wrapper.le("sc", SalesContract::getCreateTime, dto.getEndTime());
|
|
|
|
|
|
return wrapper;
|
|
return wrapper;
|
|
}
|
|
}
|
|
@@ -318,7 +326,7 @@ public class SalesContractServiceImpl extends ServiceImpl<SalesContractMapper, S
|
|
public void budget(SalesContractDto dto) {
|
|
public void budget(SalesContractDto dto) {
|
|
Assert.notEmpty(dto.getId(), "");
|
|
Assert.notEmpty(dto.getId(), "");
|
|
SalesContract salesContract = this.getById(dto.getId());
|
|
SalesContract salesContract = this.getById(dto.getId());
|
|
- Assert.notEmpty(salesContract,"查询不到合同信息!");
|
|
|
|
|
|
+ Assert.notEmpty(salesContract, "查询不到合同信息!");
|
|
this.updateById(dto);
|
|
this.updateById(dto);
|
|
}
|
|
}
|
|
}
|
|
}
|