|
|
@@ -1,6 +1,8 @@
|
|
|
|
|
|
package org.sky.scientific.service.impl;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import jakarta.servlet.http.HttpServletResponse;
|
|
|
@@ -8,6 +10,8 @@ import lombok.AllArgsConstructor;
|
|
|
import org.sky.core.excel.util.ExcelUtil;
|
|
|
import org.sky.core.log.exception.ServiceException;
|
|
|
import org.sky.core.mp.base.BaseServiceImpl;
|
|
|
+import org.sky.core.mp.support.Condition;
|
|
|
+import org.sky.core.mp.support.Query;
|
|
|
import org.sky.core.secure.utils.SecureUtil;
|
|
|
import org.sky.core.tool.utils.*;
|
|
|
import org.sky.scientific.excel.XmCostDetailsExcel;
|
|
|
@@ -152,31 +156,31 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
|
|
|
for (FinanceCostDetailVO tmp : list) {
|
|
|
List<FinanceCostItemVO> vos = tmp.getCostList();
|
|
|
for (FinanceCostItemVO vo : vos) {
|
|
|
- if(Arrays.asList("53010101","53010201").contains(vo.getSubjectCode())){
|
|
|
+ if (Arrays.asList("53010101", "53010201").contains(vo.getL3Code())) {
|
|
|
//人员人工费用
|
|
|
vo.setRyrg(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010102","53010202").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010102", "53010202").contains(vo.getL3Code())) {
|
|
|
//直接投入费用
|
|
|
vo.setZjtr(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010103","53010203").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010103", "53010203").contains(vo.getL3Code())) {
|
|
|
//折旧费用与长期待摊费用
|
|
|
vo.setZjfyycqdtfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010104","53010204").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010104", "53010204").contains(vo.getL3Code())) {
|
|
|
//无形资产摊销费用
|
|
|
vo.setWxzctx(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010105","53010205").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010105", "53010205").contains(vo.getL3Code())) {
|
|
|
//设计费用
|
|
|
vo.setSjf(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010106","53010206").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010106", "53010206").contains(vo.getL3Code())) {
|
|
|
//装备调试费用与试验费用
|
|
|
vo.setZbtsfyysyfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010107","53010207").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010107", "53010207").contains(vo.getL3Code())) {
|
|
|
//委托外部研究开发费用
|
|
|
vo.setWwyf(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010108","53010208").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010108", "53010208").contains(vo.getL3Code())) {
|
|
|
//其他费用
|
|
|
vo.setQtfy(vo.getAmount().doubleValue());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new ServiceException("费用归集出错啦");
|
|
|
}
|
|
|
}
|
|
|
@@ -185,93 +189,94 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IPage<FinanceCostSummary> financeCostSummary(IPage page, XmCostDetailsDTO dto) {
|
|
|
+ public IPage<FinanceCostSummary> financeCostSummary(IPage<FinanceCostSummary> page, XmCostDetailsDTO dto) {
|
|
|
if (Func.isBlank(dto.getYearAndMonth())) {
|
|
|
throw new ServiceException("参数yearAndMonth不能为空");
|
|
|
}
|
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
|
- List<FinanceCostDetailVO> vos = baseMapper.financeCostSummary(page, dto);
|
|
|
|
|
|
- List<FinanceCostSummary> summaryList = new ArrayList<>();
|
|
|
- for (FinanceCostDetailVO vo : vos) {
|
|
|
- FinanceCostSummary summary = new FinanceCostSummary();
|
|
|
- summary.setXmId(vo.getXmId());
|
|
|
- summary.setXmbh(vo.getXmbh());
|
|
|
- summary.setXmmc(vo.getXmmc());
|
|
|
|
|
|
+ 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);
|
|
|
+ page.setTotal(p1.getTotal()).setCurrent(p1.getCurrent()).setSize(p1.getSize());
|
|
|
|
|
|
- List<FinanceCostItemVO> itemVOS = baseMapper.selectCostItemByCondition(dto.getYearAndMonth(), vo.getXmId());
|
|
|
- for (FinanceCostItemVO item : itemVOS) {
|
|
|
- if(Arrays.asList("53010101","53010201").contains(item.getSubjectCode())){
|
|
|
+ List<FinanceCostSummary> summaryList = JSON.parseArray(JSON.toJSONString(tmpList), FinanceCostSummary.class);
|
|
|
+ for (FinanceCostSummary summary : summaryList) {
|
|
|
+
|
|
|
+ List<CostItemVO> itemVOS = baseMapper.selectCostItemByCondition(dto.getYearAndMonth(), summary.getXmId());
|
|
|
+ for (CostItemVO item : itemVOS) {
|
|
|
+ if (Arrays.asList("53010101", "53010201").contains(item.getL3Code())) {
|
|
|
//人员人工费用
|
|
|
summary.setRyrgTotal(summary.getRyrgTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010102","53010202").contains(item.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010102", "53010202").contains(item.getL3Code())) {
|
|
|
//直接投入费用
|
|
|
- summary.setZjtrTotal(summary.getZjtrTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010103","53010203").contains(item.getSubjectCode())){
|
|
|
+ summary.setZjtrTotal(summary.getZjtrTotal() + item.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("53010103", "53010203").contains(item.getL3Code())) {
|
|
|
//折旧费用与长期待摊费用
|
|
|
- summary.setZjfyycqdtfyTotal(summary.getZjfyycqdtfyTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010104","53010204").contains(item.getSubjectCode())){
|
|
|
+ summary.setZjfyycqdtfyTotal(summary.getZjfyycqdtfyTotal() + item.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("53010104", "53010204").contains(item.getL3Code())) {
|
|
|
//无形资产摊销费用
|
|
|
- summary.setWxzctxTotal(summary.getWxzctxTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010105","53010205").contains(item.getSubjectCode())){
|
|
|
+ summary.setWxzctxTotal(summary.getWxzctxTotal() + item.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("53010105", "53010205").contains(item.getL3Code())) {
|
|
|
//设计费用
|
|
|
- summary.setSjfTotal(summary.getSjfTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010106","53010206").contains(item.getSubjectCode())){
|
|
|
+ summary.setSjfTotal(summary.getSjfTotal() + item.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("53010106", "53010206").contains(item.getL3Code())) {
|
|
|
//装备调试费用与试验费用
|
|
|
- summary.setZbtsfyysyfyTotal(summary.getZbtsfyysyfyTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010107","53010207").contains(item.getSubjectCode())){
|
|
|
+ summary.setZbtsfyysyfyTotal(summary.getZbtsfyysyfyTotal() + item.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("53010107", "53010207").contains(item.getL3Code())) {
|
|
|
//委托外部研究开发费用
|
|
|
- summary.setWwyfTotal(summary.getWwyfTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010108","53010208").contains(item.getSubjectCode())){
|
|
|
+ summary.setWwyfTotal(summary.getWwyfTotal() + item.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("53010108", "53010208").contains(item.getL3Code())) {
|
|
|
//其他费用
|
|
|
- summary.setQtfyTotal(summary.getQtfyTotal() + item.getAmount().doubleValue());
|
|
|
+ summary.setQtfyTotal(summary.getQtfyTotal() + item.getAmount().doubleValue());
|
|
|
}
|
|
|
}
|
|
|
- summaryList.add(summary);
|
|
|
}
|
|
|
return page.setRecords(summaryList);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<FinanceCostDetailVO> highTechCostDetail(XmCostDetailsDTO dto) {
|
|
|
+ public List<HighTechCostDetailVO> highTechCostDetail(XmCostDetailsDTO dto) {
|
|
|
if (Func.isBlank(dto.getYearAndMonth())) {
|
|
|
throw new ServiceException("参数yearAndMonth不能为空");
|
|
|
}
|
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
|
- List<FinanceCostDetailVO> list = baseMapper.financeCostDetail(dto);
|
|
|
- for (FinanceCostDetailVO tmp : list) {
|
|
|
- List<FinanceCostItemVO> vos = tmp.getCostList();
|
|
|
- for (FinanceCostItemVO vo : vos) {
|
|
|
- if(vo.getRdSubjectEnable() == 0){
|
|
|
+ List<HighTechCostDetailVO> list = baseMapper.highTechCostDetail(dto);
|
|
|
+ for (HighTechCostDetailVO tmp : list) {
|
|
|
+ List<HighTechCostItemVO> vos = tmp.getCostList();
|
|
|
+ for (HighTechCostItemVO vo : vos) {
|
|
|
+ if (vo.getRdSubjectEnable() == 0) {
|
|
|
//四级科目 不是高新研发费用科目,费用不归集
|
|
|
continue;
|
|
|
}
|
|
|
- if(Arrays.asList("53010101","53010201").contains(vo.getSubjectCode())){
|
|
|
+ if (Arrays.asList("53010101", "53010201").contains(vo.getL3Code())) {
|
|
|
//人员人工费用
|
|
|
vo.setRyrg(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010102","53010202").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010102", "53010202").contains(vo.getL3Code())) {
|
|
|
//直接投入费用
|
|
|
vo.setZjtr(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010103","53010203").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010103", "53010203").contains(vo.getL3Code())) {
|
|
|
//折旧费用与长期待摊费用
|
|
|
vo.setZjfyycqdtfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010104","53010204").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010104", "53010204").contains(vo.getL3Code())) {
|
|
|
//无形资产摊销费用
|
|
|
vo.setWxzctx(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010105","53010205").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010105", "53010205").contains(vo.getL3Code())) {
|
|
|
//设计费用
|
|
|
vo.setSjf(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010106","53010206").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010106", "53010206").contains(vo.getL3Code())) {
|
|
|
//装备调试费用与试验费用
|
|
|
vo.setZbtsfyysyfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010107","53010207").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010107", "53010207").contains(vo.getL3Code())) {
|
|
|
//委托外部研究开发费用
|
|
|
vo.setWwyf(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010108","53010208").contains(vo.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010108", "53010208").contains(vo.getL3Code())) {
|
|
|
//其他费用
|
|
|
vo.setQtfy(vo.getAmount().doubleValue());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new ServiceException("费用归集出错啦");
|
|
|
}
|
|
|
}
|
|
|
@@ -280,66 +285,76 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public IPage<FinanceCostSummary> highTechCostSummary(IPage page, XmCostDetailsDTO dto) {
|
|
|
+ public IPage<HighTechCostSummary> highTechCostSummary(IPage<HighTechCostSummary> page, XmCostDetailsDTO dto) {
|
|
|
if (Func.isBlank(dto.getYearAndMonth())) {
|
|
|
throw new ServiceException("参数yearAndMonth不能为空");
|
|
|
}
|
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
|
- List<FinanceCostDetailVO> vos = baseMapper.financeCostSummary(page, dto);
|
|
|
|
|
|
- List<FinanceCostSummary> summaryList = new ArrayList<>();
|
|
|
- for (FinanceCostDetailVO vo : vos) {
|
|
|
- FinanceCostSummary summary = new FinanceCostSummary();
|
|
|
- summary.setXmbh(vo.getXmbh());
|
|
|
- summary.setXmmc(vo.getXmmc());
|
|
|
+ Query query = new Query();
|
|
|
+ query.setCurrent((int) page.getCurrent());
|
|
|
+ query.setSize((int) page.getSize());
|
|
|
+ IPage<JSONObject> p1 = Condition.getPage(query);
|
|
|
|
|
|
- List<FinanceCostItemVO> itemVOS = baseMapper.selectCostItemByCondition(dto.getYearAndMonth(), vo.getXmId());
|
|
|
+ List<JSONObject> tmpList = baseMapper.costSummary(p1, dto);
|
|
|
|
|
|
- for (FinanceCostItemVO item : itemVOS) {
|
|
|
- if(item.getRdSubjectEnable() == 0){
|
|
|
+ page.setTotal(p1.getTotal()).setCurrent(p1.getCurrent()).setSize(p1.getSize());
|
|
|
+
|
|
|
+ List<HighTechCostSummary> summaryList = JSON.parseArray(JSON.toJSONString(tmpList), HighTechCostSummary.class);
|
|
|
+ for (HighTechCostSummary summary : summaryList) {
|
|
|
+
|
|
|
+ List<CostItemVO> itemVOS = baseMapper.selectCostItemByCondition(dto.getYearAndMonth(), summary.getXmId());
|
|
|
+
|
|
|
+ for (CostItemVO item : itemVOS) {
|
|
|
+ if (item.getRdSubjectEnable() == 0) {
|
|
|
//四级科目不是高新研发费用科目,费用不归集
|
|
|
continue;
|
|
|
}
|
|
|
- if(Arrays.asList("53010101","53010201").contains(item.getSubjectCode())){
|
|
|
- //人员人工费用
|
|
|
+ if (Arrays.asList("53010101", "53010201").contains(item.getL3Code())) {
|
|
|
+ //1、人员人工费用
|
|
|
summary.setRyrgTotal(summary.getRyrgTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010102","53010202").contains(item.getSubjectCode())){
|
|
|
- //直接投入费用
|
|
|
+ } else if (Arrays.asList("53010102", "53010202").contains(item.getL3Code())) {
|
|
|
+ //2、直接投入费用
|
|
|
summary.setZjtrTotal(summary.getZjtrTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010103","53010203").contains(item.getSubjectCode())){
|
|
|
- //折旧费用与长期待摊费用
|
|
|
+ } else if (Arrays.asList("53010103", "53010203").contains(item.getL3Code())) {
|
|
|
+ //3、折旧费用与长期待摊费用
|
|
|
summary.setZjfyycqdtfyTotal(summary.getZjfyycqdtfyTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010104","53010204").contains(item.getSubjectCode())){
|
|
|
- //无形资产摊销费用
|
|
|
+ } else if (Arrays.asList("53010104", "53010204").contains(item.getL3Code())) {
|
|
|
+ //4、无形资产摊销费用
|
|
|
summary.setWxzctxTotal(summary.getWxzctxTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010105","53010205").contains(item.getSubjectCode())){
|
|
|
- //设计费用
|
|
|
+ } else if (Arrays.asList("53010105", "53010205").contains(item.getL3Code())) {
|
|
|
+ //5、设计费用
|
|
|
summary.setSjfTotal(summary.getSjfTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010106","53010206").contains(item.getSubjectCode())){
|
|
|
- //装备调试费用与试验费用
|
|
|
+ } else if (Arrays.asList("53010106", "53010206").contains(item.getL3Code())) {
|
|
|
+ //6、装备调试费用与试验费用
|
|
|
summary.setZbtsfyysyfyTotal(summary.getZbtsfyysyfyTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010107","53010207").contains(item.getSubjectCode())){
|
|
|
+ } else if (Arrays.asList("53010107", "53010207").contains(item.getL3Code())) {
|
|
|
//委托外部研究开发费用
|
|
|
summary.setWwyfTotal(summary.getWwyfTotal() + item.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("53010108","53010208").contains(item.getSubjectCode())){
|
|
|
- //其他费用
|
|
|
+ } else if (Arrays.asList("53010108", "53010208").contains(item.getL3Code())) {
|
|
|
+ //7-1、其他费用
|
|
|
summary.setQtfyTotal(summary.getQtfyTotal() + item.getAmount().doubleValue());
|
|
|
}
|
|
|
+ // 7-2、其他费用限额,1-6合计相加/0.8*0.2
|
|
|
+ double total = summary.getRyrgTotal() + summary.getZjtrTotal() + summary.getZjfyycqdtfyTotal() + summary.getSjfTotal() + summary.getWxzctxTotal() + summary.getZbtsfyysyfyTotal();
|
|
|
+ summary.setQtfyLimit(total / 0.8 * 0.2);
|
|
|
+ //7-3、调整后其他费用,7-1和7-2,谁小取谁
|
|
|
+ summary.setQtfyAdjust(Math.min(summary.getQtfyTotal(), summary.getQtfyLimit()));
|
|
|
+
|
|
|
}
|
|
|
- summaryList.add(summary);
|
|
|
}
|
|
|
return page.setRecords(summaryList);
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public List<DeductionCostDetailVO> deductionCostDetail(XmCostDetailsDTO dto) {
|
|
|
+ @Override
|
|
|
+ public List<DeductionCostDetailVO> deductionCostDetail(XmCostDetailsDTO dto) {
|
|
|
if (Func.isBlank(dto.getYearAndMonth())) {
|
|
|
throw new ServiceException("参数yearAndMonth不能为空");
|
|
|
}
|
|
|
- if(dto.getType()==null){
|
|
|
+ if (dto.getType() == null) {
|
|
|
throw new ServiceException("参数type不能为空");
|
|
|
}
|
|
|
- if(!Arrays.asList(1,2).contains(dto.getType())){
|
|
|
+ if (!Arrays.asList(1, 2).contains(dto.getType())) {
|
|
|
throw new ServiceException("参数type的值只能是1:费用化,2:资本化");
|
|
|
}
|
|
|
dto.setTenantId(SecureUtil.getTenantId());
|
|
|
@@ -347,68 +362,68 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
|
|
|
for (DeductionCostDetailVO tmp : list) {
|
|
|
List<DeductionCostItemVO> vos = tmp.getCostList();
|
|
|
for (DeductionCostItemVO vo : vos) {
|
|
|
- if(vo.getAdSubjectEnable() == 0){
|
|
|
+ if (vo.getAdSubjectEnable() == 0) {
|
|
|
//四级科目 不是加计扣除研发费用科目,费用不归集
|
|
|
continue;
|
|
|
}
|
|
|
- if(dto.getType()==1){
|
|
|
+ if (dto.getType() == 1) {
|
|
|
//费用化
|
|
|
- if(Func.equals(vo.getL3Code(),"53010101")){
|
|
|
+ if (Func.equals(vo.getL3Code(), "53010101")) {
|
|
|
//人员人工费用
|
|
|
vo.setRyrgfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010102")){
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010102")) {
|
|
|
//直接投入费用
|
|
|
vo.setZjtrfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010103")){
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010103")) {
|
|
|
//折旧费用
|
|
|
vo.setZjfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010104")){
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010104")) {
|
|
|
//无形资产摊销
|
|
|
vo.setWxzctx(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("5301010501","5301010502","5301010602","5301010603").contains(vo.getL4Code())){
|
|
|
+ } else if (Arrays.asList("5301010501", "5301010502", "5301010602", "5301010603").contains(vo.getL4Code())) {
|
|
|
//新产品设计费等
|
|
|
//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
|
- vo.setXcpsjfd(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010108")){
|
|
|
+ vo.setXcpsjfd(vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010108")) {
|
|
|
//其他相关费用
|
|
|
vo.setQtxgfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL4Code(),"5301010701")){
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301010701")) {
|
|
|
//委托境内机构或个人进行研发活动所发生的费用
|
|
|
vo.setWtjnjgfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL4Code(),"5301010702")){
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301010702")) {
|
|
|
//委托境外机构进行研发活动所发生的费用
|
|
|
vo.setWtjwjgfy(vo.getAmount().doubleValue());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new ServiceException("费用归集出错啦");
|
|
|
}
|
|
|
- }else if(dto.getType() == 2){
|
|
|
+ } else if (dto.getType() == 2) {
|
|
|
//资本化
|
|
|
- if(Func.equals(vo.getL3Code(),"53010201")){
|
|
|
+ if (Func.equals(vo.getL3Code(), "53010201")) {
|
|
|
//人员人工费用
|
|
|
vo.setRyrgfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010202")){
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010202")) {
|
|
|
//直接投入费用
|
|
|
vo.setZjtrfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010203")){
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010203")) {
|
|
|
//折旧费用
|
|
|
vo.setZjfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010204")){
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010204")) {
|
|
|
//无形资产摊销
|
|
|
vo.setWxzctx(vo.getAmount().doubleValue());
|
|
|
- }else if(Arrays.asList("5301020501","5301020502","5301020602","5301020603").contains(vo.getL4Code())){
|
|
|
+ } else if (Arrays.asList("5301020501", "5301020502", "5301020602", "5301020603").contains(vo.getL4Code())) {
|
|
|
//新产品设计费等
|
|
|
//三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
|
vo.setXcpsjfd(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL3Code(),"53010208")){
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010208")) {
|
|
|
//其他相关费用
|
|
|
vo.setQtxgfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL4Code(),"5301020701")){
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301020701")) {
|
|
|
//委托境内机构或个人进行研发活动所发生的费用
|
|
|
vo.setWtjnjgfy(vo.getAmount().doubleValue());
|
|
|
- }else if(Func.equals(vo.getL4Code(),"5301020702")){
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301020702")) {
|
|
|
//委托境外机构进行研发活动所发生的费用
|
|
|
vo.setWtjwjgfy(vo.getAmount().doubleValue());
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
throw new ServiceException("费用归集出错啦");
|
|
|
}
|
|
|
}
|
|
|
@@ -416,9 +431,112 @@ public class XmCostDetailsServiceImpl extends BaseServiceImpl<XmCostDetailsMappe
|
|
|
}
|
|
|
}
|
|
|
return list;
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public IPage<DeductionCostSummary> deductionCostSummary(IPage<DeductionCostSummary> page, XmCostDetailsDTO dto) {
|
|
|
+ if (Func.isBlank(dto.getYearAndMonth())) {
|
|
|
+ throw new ServiceException("参数yearAndMonth不能为空");
|
|
|
+ }
|
|
|
+ dto.setTenantId(SecureUtil.getTenantId());
|
|
|
+
|
|
|
+ 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);
|
|
|
+
|
|
|
+ page.setTotal(p1.getTotal()).setCurrent(p1.getCurrent()).setSize(p1.getSize());
|
|
|
+
|
|
|
+ List<DeductionCostSummary> summaryList = JSON.parseArray(JSON.toJSONString(tmpList), DeductionCostSummary.class);
|
|
|
+
|
|
|
+ for (DeductionCostSummary summary : summaryList) {
|
|
|
+ List<CostItemVO> itemList = baseMapper.selectCostItemByCondition(dto.getYearAndMonth(), summary.getXmId());
|
|
|
+ for (CostItemVO vo : itemList) {
|
|
|
+ if (vo.getAdSubjectEnable() == 0) {
|
|
|
+ //四级科目 不是加计扣除研发费用科目,费用不归集
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (Func.equals(vo.getL3Code(), "53010101")) {
|
|
|
+ //1、人员人工费用-费用化
|
|
|
+ summary.setRyrgTotal(summary.getRyrgTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setRyrgTotal_fyh(summary.getRyrgTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010201")) {
|
|
|
+ //人员人工费用-资本化
|
|
|
+ summary.setRyrgTotal(summary.getRyrgTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setRyrgTotal_zbh(summary.getRyrgTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010102")) {
|
|
|
+ //2、直接投入费用费用-费用化
|
|
|
+ summary.setZjtrTotal(summary.getZjtrTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setZjtrTotal_fyh(summary.getZjtrTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010202")) {
|
|
|
+ //直接投入费用-资本化
|
|
|
+ summary.setZjtrTotal(summary.getZjtrTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setZjtrTotal_zbh(summary.getZjtrTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010103")) {
|
|
|
+ //3、折旧费用-费用化
|
|
|
+ summary.setZjfyTotal(summary.getZjfyTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setZjfyTotal_fyh(summary.getZjfyTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010203")) {
|
|
|
+ //3、折旧费用-资本化
|
|
|
+ summary.setZjfyTotal(summary.getZjfyTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setZjfyTotal_zbh(summary.getZjfyTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010104")) {
|
|
|
+ //4、无形资产摊销-费用化
|
|
|
+ summary.setWxzctxTotal(summary.getWxzctxTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setWxzctxTotal_fyh(summary.getWxzctxTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010204")) {
|
|
|
+ //4、无形资产摊销-资本化
|
|
|
+ summary.setWxzctxTotal(summary.getWxzctxTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setWxzctxTotal_zbh(summary.getWxzctxTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("5301010501", "5301010502", "5301010602", "5301010603").contains(vo.getL4Code())) {
|
|
|
+ //5、新产品设计费等-费用化
|
|
|
+ //三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
|
+ summary.setXcpsjfd(summary.getXcpsjfd() + vo.getAmount().doubleValue());
|
|
|
+ summary.setXcpsjfd_fyh(summary.getXcpsjfd_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Arrays.asList("5301020501", "5301020502", "5301020602", "5301020603").contains(vo.getL4Code())) {
|
|
|
+ //5、新产品设计费等-资本化
|
|
|
+ //三级科目中的“设计费用”-新产品设计费,新工艺规程制定费;和"装备调试费用与试验费用"-新药研制的临床试验费,勘探开发的现场试验费;归集到新产品设计费等
|
|
|
+ summary.setXcpsjfd(summary.getXcpsjfd() + vo.getAmount().doubleValue());
|
|
|
+ summary.setXcpsjfd_zbh(summary.getXcpsjfd_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010108")) {
|
|
|
+ //7.1、其他相关费用-费用化
|
|
|
+ summary.setQtxgfyTotal(summary.getQtxgfyTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setQtxgfyTotal_fyh(summary.getQtxgfyTotal_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL3Code(), "53010208")) {
|
|
|
+ //7.1、其他相关费用-资本化
|
|
|
+ summary.setQtxgfyTotal(summary.getQtxgfyTotal() + vo.getAmount().doubleValue());
|
|
|
+ summary.setQtxgfyTotal_zbh(summary.getQtxgfyTotal_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301010701")) {
|
|
|
+ //8.1、委托境内机构或个人进行研发活动所发生的费用-费用化
|
|
|
+ summary.setWtjnfy(summary.getWtjnfy() + vo.getAmount().doubleValue());
|
|
|
+ summary.setWtjnfy_fyh(summary.getWtjnfy_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301020701")) {
|
|
|
+ //8.1、委托境内机构或个人进行研发活动所发生的费用-资本化
|
|
|
+ summary.setWtjnfy(summary.getWtjnfy() + vo.getAmount().doubleValue());
|
|
|
+ summary.setWtjnfy_zbh(summary.getWtjnfy_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301010702")) {
|
|
|
+ //8.3、委托境外机构进行研发活动所发生的费用-费用化
|
|
|
+ summary.setWtjwfy(summary.getWtjwfy() + vo.getAmount().doubleValue());
|
|
|
+ summary.setWtjwfy_fyh(summary.getWtjwfy_fyh() + vo.getAmount().doubleValue());
|
|
|
+ } else if (Func.equals(vo.getL4Code(), "5301020702")) {
|
|
|
+ //8.3、委托境外机构进行研发活动所发生的费用-资本化
|
|
|
+ summary.setWtjwfy(summary.getWtjwfy() + vo.getAmount().doubleValue());
|
|
|
+ summary.setWtjwfy_zbh(summary.getWtjwfy_zbh() + vo.getAmount().doubleValue());
|
|
|
+ } else {
|
|
|
+ throw new ServiceException("费用归集出错啦");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //前五项小计=1、人员人工费用+2、直接投入费用+3、折旧费用+4、无形资产摊销+5、新产品设计费等
|
|
|
+ summary.setTotal(summary.getRyrgTotal() + summary.getZjtrTotal() + summary.getZjfyTotal() + summary.getWxzctxTotal() + summary.getXcpsjfd());
|
|
|
+
|
|
|
+ }
|
|
|
+ return page.setRecords(summaryList);
|
|
|
+ }
|
|
|
|
|
|
- public static void judgeDate(Date date, String yearAndMonth) {
|
|
|
+ public static void judgeDate(Date date, String yearAndMonth) {
|
|
|
//日期,必须时当月日期
|
|
|
if (date != null) {
|
|
|
String format = DateUtil.format(date, DateUtil.PATTERN_YYYYMM);
|