|
@@ -0,0 +1,178 @@
|
|
|
+/*
|
|
|
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
|
|
|
+ *
|
|
|
+ * Redistribution and use in source and binary forms, with or without
|
|
|
+ * modification, are permitted provided that the following conditions are met:
|
|
|
+ *
|
|
|
+ * Redistributions of source code must retain the above copyright notice,
|
|
|
+ * this list of conditions and the following disclaimer.
|
|
|
+ * Redistributions in binary form must reproduce the above copyright
|
|
|
+ * notice, this list of conditions and the following disclaimer in the
|
|
|
+ * documentation and/or other materials provided with the distribution.
|
|
|
+ * Neither the name of the dreamlu.net developer nor the names of its
|
|
|
+ * contributors may be used to endorse or promote products derived from
|
|
|
+ * this software without specific prior written permission.
|
|
|
+ * Author: Chill 庄骞 (smallchill@163.com)
|
|
|
+ */
|
|
|
+package org.springblade.meter.service.impl;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import lombok.AllArgsConstructor;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.springblade.core.log.exception.ServiceException;
|
|
|
+import org.springblade.core.mp.base.BaseServiceImpl;
|
|
|
+import org.springblade.meter.dto.FormPeriodDetailDTO;
|
|
|
+import org.springblade.meter.entity.ContractMeterPeriod;
|
|
|
+import org.springblade.meter.entity.FormPeriod;
|
|
|
+import org.springblade.meter.entity.FormPeriodDetail;
|
|
|
+import org.springblade.meter.mapper.FormPeriodDetailMapper;
|
|
|
+import org.springblade.meter.mapper.FormPeriodMapper;
|
|
|
+import org.springblade.meter.service.IFormPeriodDetailService;
|
|
|
+import org.springblade.meter.service.IFormPeriodService;
|
|
|
+import org.springblade.meter.vo.FormPeriodDetailVO;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 附件表 服务实现类
|
|
|
+ *
|
|
|
+ * @author BladeX
|
|
|
+ * @since 2023-11-29
|
|
|
+ */
|
|
|
+@Service
|
|
|
+@AllArgsConstructor
|
|
|
+public class FormPeriodDetailServiceImpl extends BaseServiceImpl<FormPeriodDetailMapper, FormPeriodDetail> implements IFormPeriodDetailService {
|
|
|
+
|
|
|
+ private final IFormPeriodService formPeriodService;
|
|
|
+
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<FormPeriodDetailVO> getFormPlan(Long contractId,Long formPeriodId) {
|
|
|
+ if (formPeriodId == null){
|
|
|
+ throw new ServiceException("请传入资金预算期id");
|
|
|
+ }
|
|
|
+ //获取所有清单二级节点
|
|
|
+ List<FormPeriodDetailVO> vos = baseMapper.getAllSecondForm(contractId);
|
|
|
+ vos.stream().forEach(l->{
|
|
|
+ if (l.getContractMoney() != null && l.getChangeMoney() != null){
|
|
|
+ l.setRealChangeMoney(l.getChangeMoney().subtract(l.getContractMoney()));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //获取当前计量期详情
|
|
|
+ List<FormPeriodDetail> list = this.list(new LambdaQueryWrapper<FormPeriodDetail>()
|
|
|
+ .eq(FormPeriodDetail::getFormPeriodId, formPeriodId));
|
|
|
+ //如果存在数据,则按照清单id分组,循环清单设置
|
|
|
+ if (list.size() > 0){
|
|
|
+ Map<Long, FormPeriodDetail> detailMap = list.stream().collect(Collectors.toMap(l -> l.getContractFormId(), l -> l));
|
|
|
+ for (FormPeriodDetailVO vo : vos) {
|
|
|
+ FormPeriodDetail detail = detailMap.get(vo.getContractFormId());
|
|
|
+ if (detail != null){
|
|
|
+ BeanUtils.copyProperties(detail,vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return vos;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void updateFormPlan(FormPeriodDetailDTO dto) {
|
|
|
+ List<FormPeriodDetail> list = dto.getList();
|
|
|
+ FormPeriod formPeriod = formPeriodService.getById(dto.getFormPeriodId());
|
|
|
+ //先直接删除
|
|
|
+ baseMapper.removeByFormPeriodId(dto.getFormPeriodId());
|
|
|
+ if (list.size() > 0){
|
|
|
+ BigDecimal one = new BigDecimal(0);
|
|
|
+ BigDecimal two = new BigDecimal(0);
|
|
|
+ BigDecimal three = new BigDecimal(0);
|
|
|
+ BigDecimal four = new BigDecimal(0);
|
|
|
+ BigDecimal five = new BigDecimal(0);
|
|
|
+ BigDecimal six = new BigDecimal(0);
|
|
|
+ BigDecimal seven = new BigDecimal(0);
|
|
|
+ BigDecimal eight = new BigDecimal(0);
|
|
|
+ BigDecimal nine = new BigDecimal(0);
|
|
|
+ BigDecimal ten = new BigDecimal(0);
|
|
|
+ BigDecimal eleven = new BigDecimal(0);
|
|
|
+ BigDecimal twelve = new BigDecimal(0);
|
|
|
+ for (FormPeriodDetail period : list) {
|
|
|
+ period.setProjectId(dto.getProjectId());
|
|
|
+ period.setContractId(dto.getContractId());
|
|
|
+ period.setFormPeriodId(dto.getFormPeriodId());
|
|
|
+ if (period.getOne() != null){
|
|
|
+ one = one.add(period.getOne());
|
|
|
+ }
|
|
|
+ if (period.getTwo() != null){
|
|
|
+ two = two.add(period.getTwo());
|
|
|
+ }
|
|
|
+ if (period.getThree() != null){
|
|
|
+ three = three.add(period.getThree());
|
|
|
+ }
|
|
|
+ if (period.getFour() != null){
|
|
|
+ four = four.add(period.getFour());
|
|
|
+ }
|
|
|
+ if (period.getFive() != null){
|
|
|
+ five = five.add(period.getFive());
|
|
|
+ }
|
|
|
+ if (period.getSix() != null){
|
|
|
+ six = six.add(period.getSix());
|
|
|
+ }
|
|
|
+ if (period.getSeven() != null){
|
|
|
+ seven = seven.add(period.getSeven());
|
|
|
+ }
|
|
|
+ if (period.getEight() != null){
|
|
|
+ eight = eight.add(period.getEight());
|
|
|
+ }
|
|
|
+ if (period.getNine() != null){
|
|
|
+ nine = nine.add(period.getNine());
|
|
|
+ }
|
|
|
+ if (period.getTen() != null){
|
|
|
+ ten = ten.add(period.getTen());
|
|
|
+ }
|
|
|
+ if (period.getEleven() != null){
|
|
|
+ eleven = eleven.add(period.getEleven());
|
|
|
+ }
|
|
|
+ if (period.getTwelve() != null){
|
|
|
+ twelve = twelve.add(period.getTwelve());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ formPeriod.setOne(one);
|
|
|
+ formPeriod.setTwo(two);
|
|
|
+ formPeriod.setThree(three);
|
|
|
+ formPeriod.setFour(four);
|
|
|
+ formPeriod.setFive(five);
|
|
|
+ formPeriod.setSix(six);
|
|
|
+ formPeriod.setSeven(seven);
|
|
|
+ formPeriod.setEight(eight);
|
|
|
+ formPeriod.setNine(nine);
|
|
|
+ formPeriod.setTen(ten);
|
|
|
+ formPeriod.setEleven(eleven);
|
|
|
+ formPeriod.setTwelve(twelve);
|
|
|
+ formPeriodService.updateById(formPeriod);
|
|
|
+ this.saveBatch(list);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Set<String> getMeterMonth(Long contractId, Long formPeriodId) {
|
|
|
+ String[] months = {"aa","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve"};
|
|
|
+ Set<String> list = new HashSet<>();
|
|
|
+ //获取所有进行中或已审批的合同计量期
|
|
|
+ List<ContractMeterPeriod> meterPeriods = baseMapper.getAllFinishPeriod(contractId);
|
|
|
+ if (meterPeriods.size() != 0) {
|
|
|
+ //获取当前资金预算期年份
|
|
|
+ FormPeriod formPeriod = formPeriodService.getById(formPeriodId);
|
|
|
+ //获取出对应年份的合同计量期
|
|
|
+ meterPeriods = meterPeriods.stream().filter(l->l.getPeriodYear().equals(formPeriod.getPeriodYear())).collect(Collectors.toList());
|
|
|
+ //把所有月份添加
|
|
|
+ if (meterPeriods.size() != 0){
|
|
|
+ for (ContractMeterPeriod meterPeriod : meterPeriods) {
|
|
|
+ list.add(months[meterPeriod.getPeriodMonth()]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+}
|