|
@@ -3,6 +3,7 @@ package org.sky.scientific.service.impl;
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
@@ -15,11 +16,12 @@ import org.sky.core.mp.support.Query;
|
|
|
import org.sky.core.secure.utils.SecureUtil;
|
|
import org.sky.core.secure.utils.SecureUtil;
|
|
|
import org.sky.core.tool.utils.*;
|
|
import org.sky.core.tool.utils.*;
|
|
|
import org.sky.scientific.excel.XmCostDetailsExcel;
|
|
import org.sky.scientific.excel.XmCostDetailsExcel;
|
|
|
|
|
+import org.sky.scientific.mapper.DeductionCostQtMapper;
|
|
|
import org.sky.scientific.mapper.SubjectEnterpriseMapper;
|
|
import org.sky.scientific.mapper.SubjectEnterpriseMapper;
|
|
|
-import org.sky.scientific.mapper.SubjectMapper;
|
|
|
|
|
import org.sky.scientific.mapper.XmCostDetailsMapper;
|
|
import org.sky.scientific.mapper.XmCostDetailsMapper;
|
|
|
import org.sky.scientific.mapper.XmMapper;
|
|
import org.sky.scientific.mapper.XmMapper;
|
|
|
import org.sky.scientific.pojo.dto.XmCostDetailsDTO;
|
|
import org.sky.scientific.pojo.dto.XmCostDetailsDTO;
|
|
|
|
|
+import org.sky.scientific.pojo.entity.DeductionCostQt;
|
|
|
import org.sky.scientific.pojo.entity.SubjectEnterprise;
|
|
import org.sky.scientific.pojo.entity.SubjectEnterprise;
|
|
|
import org.sky.scientific.pojo.entity.XmCostDetailsEntity;
|
|
import org.sky.scientific.pojo.entity.XmCostDetailsEntity;
|
|
|
import org.sky.scientific.pojo.vo.*;
|
|
import org.sky.scientific.pojo.vo.*;
|
|
@@ -27,6 +29,8 @@ import org.sky.scientific.service.IXmCostDetailsService;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -40,8 +44,8 @@ import java.util.*;
|
|
|
public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMapper, XmCostDetailsEntity> implements IXmCostDetailsService {
|
|
public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMapper, XmCostDetailsEntity> implements IXmCostDetailsService {
|
|
|
|
|
|
|
|
private final XmMapper xmMapper;
|
|
private final XmMapper xmMapper;
|
|
|
- private final SubjectMapper subjectMapper;
|
|
|
|
|
private final SubjectEnterpriseMapper subjectEnterpriseMapper;
|
|
private final SubjectEnterpriseMapper subjectEnterpriseMapper;
|
|
|
|
|
+ private final DeductionCostQtMapper qtMapper;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public IPage<XmCostDetailsEntity> selectXmCostDetailsPage(IPage<XmCostDetailsEntity> page, XmCostDetailsDTO dto) {
|
|
public IPage<XmCostDetailsEntity> selectXmCostDetailsPage(IPage<XmCostDetailsEntity> page, XmCostDetailsDTO dto) {
|
|
@@ -360,6 +364,7 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
|
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
|
List<DeductionCostDetailVO> list = baseMapper.deductionCostDetail(dto);
|
|
List<DeductionCostDetailVO> list = baseMapper.deductionCostDetail(dto);
|
|
|
for (DeductionCostDetailVO tmp : list) {
|
|
for (DeductionCostDetailVO tmp : list) {
|
|
|
|
|
+ tmp.setWcqk(DateUtil.now().before(tmp.getXmjssj()) ? "进行中" : "已完成");
|
|
|
List<DeductionCostItemVO> vos = tmp.getCostList();
|
|
List<DeductionCostItemVO> vos = tmp.getCostList();
|
|
|
for (DeductionCostItemVO vo : vos) {
|
|
for (DeductionCostItemVO vo : vos) {
|
|
|
if (vo.getAdSubjectEnable() == 0) {
|
|
if (vo.getAdSubjectEnable() == 0) {
|
|
@@ -427,113 +432,270 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
|
|
|
throw new ServiceException("费用归集出错啦");
|
|
throw new ServiceException("费用归集出错啦");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
return list;
|
|
return list;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
- public IPage<DeductionCostSummary> deductionCostSummary(IPage<DeductionCostSummary> page, XmCostDetailsDTO dto) {
|
|
|
|
|
|
|
+ public DeductionCostSummary deductionCostSummary(XmCostDetailsDTO dto) {
|
|
|
if (Func.isBlank(dto.getYearAndMonth())) {
|
|
if (Func.isBlank(dto.getYearAndMonth())) {
|
|
|
throw new ServiceException("参数yearAndMonth不能为空");
|
|
throw new ServiceException("参数yearAndMonth不能为空");
|
|
|
}
|
|
}
|
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
|
|
|
+ List<DeductionCostDetailVO> list = baseMapper.deductionCostDetail(dto);
|
|
|
|
|
+ DeductionCostSummary summary = new DeductionCostSummary();
|
|
|
|
|
|
|
|
- Query query = new Query();
|
|
|
|
|
- query.setCurrent((int) page.getCurrent());
|
|
|
|
|
- query.setSize((int) page.getSize());
|
|
|
|
|
- IPage<JSONObject> p1 = Condition.getPage(query);
|
|
|
|
|
|
|
|
|
|
- List<JSONObject> tmpList = baseMapper.costSummary(p1, dto);
|
|
|
|
|
|
|
+ DeductionCostQt qt = qtMapper.selectOne(Wrappers.<DeductionCostQt>lambdaQuery().eq(DeductionCostQt::getYearAndMonth, dto.getYearAndMonth()));
|
|
|
|
|
+
|
|
|
|
|
+ if (Func.notNull(qt)) {
|
|
|
|
|
+ //先将“其中:其他事项”加入到 对应的费用化金额小计
|
|
|
|
|
+ summary.setRyrgfy_fyh(summary.getRyrgfy_fyh().add(qt.getRyrgfyQt()));
|
|
|
|
|
+ summary.setZjtrfy_fyh(summary.getZjtrfy_fyh().add(qt.getZjtrfyQt()));
|
|
|
|
|
+ summary.setZjfy_fyh(summary.getZjfy_fyh().add(qt.getZjfyQt()));
|
|
|
|
|
+ summary.setWxzctx_fyh(summary.getWxzctx_fyh().add(qt.getWxzctxQt()));
|
|
|
|
|
+ summary.setXcpsjfd_fyh(summary.getXcpsjfd_fyh().add(qt.getXcpsjfdQt()));
|
|
|
|
|
+ summary.setQtxgfyhj_fyh(summary.getQtxgfyhj_fyh().add(qt.getQtxgfyhjQt()));
|
|
|
|
|
+ summary.setWtjnjgfy_fyh(summary.getWtjnjgfy_fyh().add(qt.getWtjnjgfyQt()));
|
|
|
|
|
+ summary.setWtjwjgfy_fyh(summary.getWtjwjgfy_fyh().add(qt.getWtjwjgfyQt()));
|
|
|
|
|
+
|
|
|
|
|
+ //其中:其他事项-前五项 小计
|
|
|
|
|
+ summary.setTotal_qt(qt.getRyrgfyQt().add(qt.getZjtrfyQt()).add(qt.getZjfyQt()).add(qt.getWxzctxQt()).add(qt.getXcpsjfdQt()));
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- page.setTotal(p1.getTotal()).setCurrent(p1.getCurrent()).setSize(p1.getSize());
|
|
|
|
|
|
|
|
|
|
- List<DeductionCostSummary> summaryList = JSON.parseArray(JSON.toJSONString(tmpList), DeductionCostSummary.class);
|
|
|
|
|
|
|
+ List<DeductionCostSummaryItem> summaryList = new ArrayList<>();
|
|
|
|
|
+ for (DeductionCostDetailVO cost : list) {
|
|
|
|
|
|
|
|
- for (DeductionCostSummary summary : summaryList) {
|
|
|
|
|
- List<CostItemVO> itemList = baseMapper.selectCostItemByCondition(dto.getYearAndMonth(), summary.getXmId());
|
|
|
|
|
- for (CostItemVO vo : itemList) {
|
|
|
|
|
|
|
+ String wcqk = DateUtil.now().before(cost.getXmjssj()) ? "进行中" : "已完成";
|
|
|
|
|
+
|
|
|
|
|
+ DeductionCostSummaryItem fyhSummary = new DeductionCostSummaryItem(cost.getXmId(), cost.getXmbh(), cost.getXmmc(), wcqk, 1);
|
|
|
|
|
+ DeductionCostSummaryItem zbhSummary = new DeductionCostSummaryItem(cost.getXmId(), cost.getXmbh(), cost.getXmmc(), wcqk, 2);
|
|
|
|
|
+ summaryList.add(fyhSummary);
|
|
|
|
|
+ summaryList.add(zbhSummary);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ for (DeductionCostItemVO vo : cost.getCostList()) {
|
|
|
if (vo.getAdSubjectEnable() == 0) {
|
|
if (vo.getAdSubjectEnable() == 0) {
|
|
|
//四级科目 不是加计扣除研发费用科目,费用不归集
|
|
//四级科目 不是加计扣除研发费用科目,费用不归集
|
|
|
continue;
|
|
continue;
|
|
|
}
|
|
}
|
|
|
if (Func.equals(vo.getL3Code(), "53010101")) {
|
|
if (Func.equals(vo.getL3Code(), "53010101")) {
|
|
|
//1、人员人工费用-费用化
|
|
//1、人员人工费用-费用化
|
|
|
- summary.setRyrgTotal(summary.getRyrgTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setRyrgTotal_fyh(summary.getRyrgTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setRyrgTotal(fyhSummary.getRyrgTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010201")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010201")) {
|
|
|
//人员人工费用-资本化
|
|
//人员人工费用-资本化
|
|
|
- summary.setRyrgTotal(summary.getRyrgTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setRyrgTotal_zbh(summary.getRyrgTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setRyrgTotal(zbhSummary.getRyrgTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010102")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010102")) {
|
|
|
//2、直接投入费用费用-费用化
|
|
//2、直接投入费用费用-费用化
|
|
|
- summary.setZjtrTotal(summary.getZjtrTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setZjtrTotal_fyh(summary.getZjtrTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setZjtrTotal(fyhSummary.getZjtrTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010202")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010202")) {
|
|
|
//直接投入费用-资本化
|
|
//直接投入费用-资本化
|
|
|
- summary.setZjtrTotal(summary.getZjtrTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setZjtrTotal_zbh(summary.getZjtrTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setZjtrTotal(zbhSummary.getZjtrTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010103")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010103")) {
|
|
|
//3、折旧费用-费用化
|
|
//3、折旧费用-费用化
|
|
|
- summary.setZjfyTotal(summary.getZjfyTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setZjfyTotal_fyh(summary.getZjfyTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setZjfyTotal(fyhSummary.getZjfyTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010203")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010203")) {
|
|
|
//3、折旧费用-资本化
|
|
//3、折旧费用-资本化
|
|
|
- summary.setZjfyTotal(summary.getZjfyTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setZjfyTotal_zbh(summary.getZjfyTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setZjfyTotal(zbhSummary.getZjfyTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010104")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010104")) {
|
|
|
//4、无形资产摊销-费用化
|
|
//4、无形资产摊销-费用化
|
|
|
- summary.setWxzctxTotal(summary.getWxzctxTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setWxzctxTotal_fyh(summary.getWxzctxTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setWxzctxTotal(fyhSummary.getWxzctxTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010204")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010204")) {
|
|
|
//4、无形资产摊销-资本化
|
|
//4、无形资产摊销-资本化
|
|
|
- summary.setWxzctxTotal(summary.getWxzctxTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setWxzctxTotal_zbh(summary.getWxzctxTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setWxzctxTotal(zbhSummary.getWxzctxTotal().add(vo.getAmount()));
|
|
|
} else if (Arrays.asList("5301010501", "5301010502", "5301010602", "5301010603").contains(vo.getL4Code())) {
|
|
} else if (Arrays.asList("5301010501", "5301010502", "5301010602", "5301010603").contains(vo.getL4Code())) {
|
|
|
//5、新产品设计费等-费用化
|
|
//5、新产品设计费等-费用化
|
|
|
//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
|
- summary.setXcpsjfd(summary.getXcpsjfd() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setXcpsjfd_fyh(summary.getXcpsjfd_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setXcpsjfd(fyhSummary.getXcpsjfd().add(vo.getAmount()));
|
|
|
} else if (Arrays.asList("5301020501", "5301020502", "5301020602", "5301020603").contains(vo.getL4Code())) {
|
|
} else if (Arrays.asList("5301020501", "5301020502", "5301020602", "5301020603").contains(vo.getL4Code())) {
|
|
|
//5、新产品设计费等-资本化
|
|
//5、新产品设计费等-资本化
|
|
|
//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
|
- summary.setXcpsjfd(summary.getXcpsjfd() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setXcpsjfd_zbh(summary.getXcpsjfd_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setXcpsjfd(zbhSummary.getXcpsjfd().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010108")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010108")) {
|
|
|
//7.1、其他相关费用-费用化
|
|
//7.1、其他相关费用-费用化
|
|
|
- summary.setQtxgfyTotal(summary.getQtxgfyTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setQtxgfyTotal_fyh(summary.getQtxgfyTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setQtxgfyTotal(fyhSummary.getQtxgfyTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL3Code(), "53010208")) {
|
|
} else if (Func.equals(vo.getL3Code(), "53010208")) {
|
|
|
//7.1、其他相关费用-资本化
|
|
//7.1、其他相关费用-资本化
|
|
|
- summary.setQtxgfyTotal(summary.getQtxgfyTotal() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setQtxgfyTotal_zbh(summary.getQtxgfyTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setQtxgfyTotal(zbhSummary.getQtxgfyTotal().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL4Code(), "5301010701")) {
|
|
} else if (Func.equals(vo.getL4Code(), "5301010701")) {
|
|
|
//8.1、委托境内机构或个人进行研发活动所发生的费用-费用化
|
|
//8.1、委托境内机构或个人进行研发活动所发生的费用-费用化
|
|
|
- summary.setWtjnfy(summary.getWtjnfy() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setWtjnfy_fyh(summary.getWtjnfy_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setWtjnfy(fyhSummary.getWtjnfy().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL4Code(), "5301020701")) {
|
|
} else if (Func.equals(vo.getL4Code(), "5301020701")) {
|
|
|
//8.1、委托境内机构或个人进行研发活动所发生的费用-资本化
|
|
//8.1、委托境内机构或个人进行研发活动所发生的费用-资本化
|
|
|
- summary.setWtjnfy(summary.getWtjnfy() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setWtjnfy_zbh(summary.getWtjnfy_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setWtjnfy(zbhSummary.getWtjnfy().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL4Code(), "5301010702")) {
|
|
} else if (Func.equals(vo.getL4Code(), "5301010702")) {
|
|
|
//8.3、委托境外机构进行研发活动所发生的费用-费用化
|
|
//8.3、委托境外机构进行研发活动所发生的费用-费用化
|
|
|
- summary.setWtjwfy(summary.getWtjwfy() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setWtjwfy_fyh(summary.getWtjwfy_fyh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ fyhSummary.setWtjwfy(fyhSummary.getWtjwfy().add(vo.getAmount()));
|
|
|
} else if (Func.equals(vo.getL4Code(), "5301020702")) {
|
|
} else if (Func.equals(vo.getL4Code(), "5301020702")) {
|
|
|
//8.3、委托境外机构进行研发活动所发生的费用-资本化
|
|
//8.3、委托境外机构进行研发活动所发生的费用-资本化
|
|
|
- summary.setWtjwfy(summary.getWtjwfy() + vo.getAmount().doubleValue());
|
|
|
|
|
- summary.setWtjwfy_zbh(summary.getWtjwfy_zbh() + vo.getAmount().doubleValue());
|
|
|
|
|
|
|
+ zbhSummary.setWtjwfy(zbhSummary.getWtjwfy().add(vo.getAmount()));
|
|
|
} else {
|
|
} else {
|
|
|
throw new ServiceException("费用归集出错啦");
|
|
throw new ServiceException("费用归集出错啦");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//前五项小计=1、人员人工费用+2、直接投入费用+3、折旧费用+4、无形资产摊销+5、新产品设计费等
|
|
//前五项小计=1、人员人工费用+2、直接投入费用+3、折旧费用+4、无形资产摊销+5、新产品设计费等
|
|
|
- summary.setTotal(summary.getRyrgTotal() + summary.getZjtrTotal() + summary.getZjfyTotal() + summary.getWxzctxTotal() + summary.getXcpsjfd());
|
|
|
|
|
|
|
+ fyhSummary.setTotal(fyhSummary.getRyrgTotal().add(fyhSummary.getZjtrTotal()).add(fyhSummary.getZjfyTotal()).add(fyhSummary.getWxzctxTotal()).add(fyhSummary.getXcpsjfd()));
|
|
|
|
|
+ zbhSummary.setTotal(zbhSummary.getRyrgTotal().add(zbhSummary.getZjtrTotal()).add(zbhSummary.getZjfyTotal()).add(zbhSummary.getWxzctxTotal()).add(zbhSummary.getXcpsjfd()));
|
|
|
|
|
+
|
|
|
|
|
+ zbhSummary.setWtjnfyAdjust(zbhSummary.getWtjnfyAdjust().multiply(new BigDecimal("0.8")));
|
|
|
|
|
+ fyhSummary.setWtjnfyAdjust(fyhSummary.getWtjnfyAdjust().multiply(new BigDecimal("0.8")));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计----------------begin
|
|
|
|
|
+ //资本化金额小计-人员人工费用
|
|
|
|
|
+ summary.setRyrgfy_zbh(summary.getRyrgfy_zbh().add(zbhSummary.getRyrgTotal()));
|
|
|
|
|
+ //费用化金额小计-人员人工费用
|
|
|
|
|
+ summary.setRyrgfy_fyh(summary.getRyrgfy_fyh().add(fyhSummary.getRyrgTotal()));
|
|
|
|
|
+ //金额合计-人员人工费用
|
|
|
|
|
+ summary.setRyrgfy_hjje(summary.getRyrgfy_hjje().add(summary.getRyrgfy_zbh()).add(summary.getRyrgfy_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-直接投入费用
|
|
|
|
|
+ summary.setZjtrfy_zbh(summary.getZjtrfy_zbh().add(zbhSummary.getZjtrTotal()));
|
|
|
|
|
+ //费用化金额小计-直接投入费用
|
|
|
|
|
+ summary.setZjtrfy_fyh(summary.getZjtrfy_fyh().add(fyhSummary.getZjtrTotal()));
|
|
|
|
|
+ //金额合计-直接投入费用
|
|
|
|
|
+ summary.setZjtrfy_hjje(summary.getZjtrfy_hjje().add(summary.getZjtrfy_zbh()).add(summary.getZjtrfy_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-折旧费用
|
|
|
|
|
+ summary.setZjfy_zbh(summary.getZjfy_zbh().add(zbhSummary.getZjfyTotal()));
|
|
|
|
|
+ //费用化金额小计-折旧费用
|
|
|
|
|
+ summary.setZjfy_fyh(summary.getZjfy_fyh().add(fyhSummary.getZjfyTotal()));
|
|
|
|
|
+ //金额合计-折旧费用
|
|
|
|
|
+ summary.setZjfy_hjje(summary.getZjfy_hjje().add(summary.getZjfy_zbh()).add(summary.getZjfy_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-无形资产摊销
|
|
|
|
|
+ summary.setWxzctx_zbh(summary.getWxzctx_zbh().add(zbhSummary.getWxzctxTotal()));
|
|
|
|
|
+ //费用化金额小计-无形资产摊销
|
|
|
|
|
+ summary.setWxzctx_fyh(summary.getWxzctx_fyh().add(fyhSummary.getWxzctxTotal()));
|
|
|
|
|
+ //金额合计-无形资产摊销
|
|
|
|
|
+ summary.setWxzctx_hjje(summary.getWxzctx_hjje().add(summary.getWxzctx_zbh()).add(summary.getWxzctx_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-新产品设计费等
|
|
|
|
|
+ summary.setXcpsjfd_zbh(summary.getXcpsjfd_zbh().add(zbhSummary.getXcpsjfd()));
|
|
|
|
|
+ //费用化金额小计-新产品设计费等
|
|
|
|
|
+ summary.setXcpsjfd_fyh(summary.getXcpsjfd_fyh().add(fyhSummary.getXcpsjfd()));
|
|
|
|
|
+ //金额合计-新产品设计费等
|
|
|
|
|
+ summary.setXcpsjfd_hjje(summary.getXcpsjfd_hjje().add(summary.getXcpsjfd_zbh()).add(summary.getXcpsjfd_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-前五项小计
|
|
|
|
|
+ summary.setTotal_zbh(summary.getTotal_zbh().add(zbhSummary.getTotal()));
|
|
|
|
|
+ //费用化金额小计-前五项小计
|
|
|
|
|
+ summary.setTotal_fyh(summary.getTotal_fyh().add(fyhSummary.getTotal()));
|
|
|
|
|
+ //金额合计-前五项 小计
|
|
|
|
|
+ summary.setTotal_hjje(summary.getTotal_hjje().add(summary.getTotal_zbh()).add(summary.getTotal_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-其他相关费用合计
|
|
|
|
|
+ summary.setQtxgfyhj_zbh(summary.getQtxgfyhj_zbh().add(zbhSummary.getQtxgfyTotal()));
|
|
|
|
|
+ //费用化金额小计-其他相关费用合计
|
|
|
|
|
+ summary.setQtxgfyhj_fyh(summary.getQtxgfyhj_fyh().add(fyhSummary.getQtxgfyTotal()));
|
|
|
|
|
+ //金额合计-其他相关费用合计
|
|
|
|
|
+ summary.setQtxgfyhj_hjje(summary.getQtxgfyhj_hjje().add(summary.getQtxgfyhj_zbh()).add(summary.getQtxgfyhj_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-委托境内机构或个人进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjnjgfy_zbh(summary.getWtjnjgfy_zbh().add(zbhSummary.getWtjnfy()));
|
|
|
|
|
+ //费用化金额小计-委托境内机构或个人进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjnjgfy_fyh(summary.getWtjnjgfy_fyh().add(fyhSummary.getWtjnfy()));
|
|
|
|
|
+ //金额合计-委托境内机构或个人进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjnjgfy_hjje(summary.getWtjnjgfy_hjje().add(summary.getWtjnjgfy_zbh()).add(summary.getWtjnjgfy_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjnjgfy_zbh(summary.getWtjnjgfy_zbh().add(zbhSummary.getWtjnfyAdjust()));
|
|
|
|
|
+ //费用化金额小计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjnjgfy_fyh(summary.getWtjnjgfy_fyh().add(fyhSummary.getWtjnfyAdjust()));
|
|
|
|
|
+ //金额合计-允许加计扣除的委托境内机构或个人进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjnjgfy_hjje(summary.getWtjnjgfy_hjje().add(summary.getWtjnjgfy_zbh()).add(summary.getWtjnjgfy_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //资本化金额小计-委托境外机构进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjwjgfy_zbh(summary.getWtjwjgfy_zbh().add(zbhSummary.getWtjwfy()));
|
|
|
|
|
+ //费用化金额小计-委托境外机构进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjwjgfy_fyh(summary.getWtjwjgfy_fyh().add(fyhSummary.getWtjwfy()));
|
|
|
|
|
+ //金额合计-委托境外机构进行研发活动所发生的费用
|
|
|
|
|
+ summary.setWtjwjgfy_hjje(summary.getWtjwjgfy_hjje().add(summary.getWtjwjgfy_zbh()).add(summary.getWtjwjgfy_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //允许加计扣除金额合计=前五项 小计 + 经限额调整后的其他相关费用 + 允许加计扣除的委托境内机构或个人进行研发活动所发生的费用 + 经限额调整后的委托境外机构进行研发活动所发生的费用
|
|
|
|
|
+ fyhSummary.setYxjjkcjehj(fyhSummary.getYxjjkcjehj().add(fyhSummary.getTotal()));
|
|
|
|
|
+ zbhSummary.setYxjjkcjehj(zbhSummary.getYxjjkcjehj().add(zbhSummary.getTotal()));
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
- return page.setRecords(summaryList);
|
|
|
|
|
|
|
+
|
|
|
|
|
+ summary.setTotal_hjje(summary.getTotal_zbh().add(summary.getTotal_fyh()));
|
|
|
|
|
+
|
|
|
|
|
+ //=IF(K20*0.1/0.9<L20,K20*0.1/0.9,L20)
|
|
|
|
|
+ BigDecimal divide = summary.getTotal_hjje().multiply(new BigDecimal("0.1")).divide(new BigDecimal("0.9"),2, RoundingMode.HALF_UP);
|
|
|
|
|
+ summary.setQtxgfyhj_adjust_hjje(divide.compareTo(summary.getQtxgfyhj_hjje()) < 0 ? divide : summary.getQtxgfyhj_hjje());
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //金额合计-经限额调整后的委托境外机构进行研发活动所发生的费用
|
|
|
|
|
+ //(K20+M20+O20)*2/3
|
|
|
|
|
+ BigDecimal d1 = summary.getTotal_hjje().add(summary.getQtxgfyhj_hjje()).add(summary.getWtjnjgfy_hjje()).multiply(new BigDecimal("2")).divide(new BigDecimal("3"),2, RoundingMode.HALF_UP);
|
|
|
|
|
+ //P20*0.8
|
|
|
|
|
+ BigDecimal d2 = summary.getWtjwjgfy_hjje().multiply(new BigDecimal("0.8"));
|
|
|
|
|
+ summary.setWtjwjgfy_adjust_hjje(d1.compareTo(d2) < 0 ? d1 : d2);
|
|
|
|
|
+
|
|
|
|
|
+ for (DeductionCostSummaryItem item : summaryList) {
|
|
|
|
|
+
|
|
|
|
|
+ //=$Q$20/$P$20*P8 经限额调整后的委托境外机构进行研发活动所发生的费用
|
|
|
|
|
+ if(BigDecimal.ZERO.compareTo(summary.getWtjwjgfy_hjje()) != 0){
|
|
|
|
|
+ item.setWtjwfyAdjust(summary.getWtjwjgfy_adjust_hjje().multiply(item.getWtjwfy()).divide(summary.getWtjwjgfy_hjje(), 2, RoundingMode.HALF_UP));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //=M20/L20*L9
|
|
|
|
|
+ if(BigDecimal.ZERO.compareTo(summary.getQtxgfyhj_hjje()) != 0){
|
|
|
|
|
+ item.setQtxgfyAdjustTotal(summary.getQtxgfyhj_adjust_hjje().multiply(item.getQtxgfyTotal()).divide(summary.getQtxgfyhj_hjje(), 2, RoundingMode.HALF_UP));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //允许加计扣除金额合计 = 前五项 小计 + 经限额调整后的其他相关费用 + 允许加计扣除的委托境内机构或个人进行研发活动所发生的费用 + 经限额调整后的委托境外机构进行研发活动所发生的费用
|
|
|
|
|
+ item.setYxjjkcjehj(item.getRyrgTotal().add(item.getQtxgfyAdjustTotal()).add(item.getWtjnfyAdjust()).add(item.getWtjwfyAdjust()));
|
|
|
|
|
+
|
|
|
|
|
+ if (item.getType() == 1) {
|
|
|
|
|
+ summary.setQtxgfyhj_adjust_fyh(summary.getQtxgfyhj_adjust_fyh().add(item.getQtxgfyAdjustTotal()));
|
|
|
|
|
+ summary.setWtjwjgfy_adjust_fyh(summary.getWtjwjgfy_adjust_fyh().add(item.getWtjwfyAdjust()));
|
|
|
|
|
+
|
|
|
|
|
+ summary.setYxjjkcjehj_fyh(summary.getYxjjkcjehj_fyh().add(item.getYxjjkcjehj()));
|
|
|
|
|
+
|
|
|
|
|
+ } else if (item.getType() == 2) {
|
|
|
|
|
+ summary.setQtxgfyhj_adjust_zbh(summary.getQtxgfyhj_adjust_zbh().add(item.getQtxgfyAdjustTotal()));
|
|
|
|
|
+ summary.setWtjwjgfy_adjust_zbh(summary.getWtjwjgfy_adjust_zbh().add(item.getWtjwfyAdjust()));
|
|
|
|
|
+
|
|
|
|
|
+ summary.setYxjjkcjehj_zbh(summary.getYxjjkcjehj_zbh().add(item.getYxjjkcjehj()));
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ summary.setYxjjkcjehj_hjje(summary.getYxjjkcjehj_hjje().add(summary.getYxjjkcjehj_fyh()).add(summary.getYxjjkcjehj_zbh()));
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ summary.setItemList(summaryList);
|
|
|
|
|
+ return summary;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public boolean updateDeductionQt(DeductionCostQt dto) {
|
|
|
|
|
+ if(Func.isBlank(dto.getYearAndMonth())){
|
|
|
|
|
+ throw new ServiceException("参数yearAndMonth不能为空");
|
|
|
|
|
+ }
|
|
|
|
|
+ LambdaQueryWrapper<DeductionCostQt> eq = Wrappers.<DeductionCostQt>lambdaQuery()
|
|
|
|
|
+ .eq(DeductionCostQt::getYearAndMonth, dto.getYearAndMonth())
|
|
|
|
|
+ .eq(DeductionCostQt::getTenantId, SecureUtil.getTenantId());
|
|
|
|
|
+ DeductionCostQt dbQt = qtMapper.selectOne(eq);
|
|
|
|
|
+ if(Func.isNull(dbQt)){
|
|
|
|
|
+ return qtMapper.insert(dto) == 1;
|
|
|
|
|
+ }else {
|
|
|
|
|
+ dto.setId(dbQt.getId());
|
|
|
|
|
+ return qtMapper.updateById(dto) == 1;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
public static void judgeDate(Date date, String yearAndMonth) {
|
|
public static void judgeDate(Date date, String yearAndMonth) {
|