|
@@ -16,22 +16,25 @@
|
|
*/
|
|
*/
|
|
package org.springblade.meter.service.impl;
|
|
package org.springblade.meter.service.impl;
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.AllArgsConstructor;
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
+import org.springblade.common.utils.SnowFlakeUtil;
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
import org.springblade.core.log.exception.ServiceException;
|
|
|
|
+import org.springblade.core.mp.support.Query;
|
|
import org.springblade.core.tool.utils.Func;
|
|
import org.springblade.core.tool.utils.Func;
|
|
import org.springblade.meter.dto.ChangeTokenAddFormDTO;
|
|
import org.springblade.meter.dto.ChangeTokenAddFormDTO;
|
|
import org.springblade.meter.dto.ChangeTokenFormDTO;
|
|
import org.springblade.meter.dto.ChangeTokenFormDTO;
|
|
-import org.springblade.meter.entity.ChangeTokenForm;
|
|
|
|
-import org.springblade.meter.entity.ContractInventoryForm;
|
|
|
|
|
|
+import org.springblade.meter.entity.*;
|
|
import org.springblade.meter.mapper.ChangeTokenFormMapper;
|
|
import org.springblade.meter.mapper.ChangeTokenFormMapper;
|
|
-import org.springblade.meter.service.IChangeTokenFormService;
|
|
|
|
|
|
+import org.springblade.meter.service.*;
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
|
-import org.springblade.meter.service.IContractInventoryFormService;
|
|
|
|
-import org.springblade.meter.vo.ChangeFormVO;
|
|
|
|
-import org.springblade.meter.vo.ChangeFormVO2;
|
|
|
|
-import org.springblade.meter.vo.ZeroChangeVO;
|
|
|
|
|
|
+import org.springblade.meter.vo.*;
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
@@ -48,8 +51,21 @@ import java.util.stream.Collectors;
|
|
@AllArgsConstructor
|
|
@AllArgsConstructor
|
|
public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormMapper, ChangeTokenForm> implements IChangeTokenFormService {
|
|
public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormMapper, ChangeTokenForm> implements IChangeTokenFormService {
|
|
|
|
|
|
|
|
+ //合同清单
|
|
private final IContractInventoryFormService contractInventoryFormService;
|
|
private final IContractInventoryFormService contractInventoryFormService;
|
|
|
|
|
|
|
|
+ //中间计量申请
|
|
|
|
+ private final IMiddleMeterApplyService middleMeterApplyService;
|
|
|
|
+
|
|
|
|
+ //附件
|
|
|
|
+ private final IAttachmentFormService attachmentFormService;
|
|
|
|
+
|
|
|
|
+ //变更令与合同计量单元中间表
|
|
|
|
+ private final IChangeTokenMeterService changeTokenMeterService;
|
|
|
|
+
|
|
|
|
+ //变更令与合同清单中间表
|
|
|
|
+ private final IChangeTokenInventoryService changeTokenInventoryService;
|
|
|
|
+
|
|
|
|
|
|
/**
|
|
/**
|
|
* 一键生成零号变更 统计每个清单节点当前分解量,设置进清单的划分数量
|
|
* 一键生成零号变更 统计每个清单节点当前分解量,设置进清单的划分数量
|
|
@@ -93,8 +109,64 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
|
|
* 新增 变更令表
|
|
* 新增 变更令表
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
|
|
+ @Transactional
|
|
public void add(ChangeTokenFormDTO dto) {
|
|
public void add(ChangeTokenFormDTO dto) {
|
|
-
|
|
|
|
|
|
+ //复制出基础数据
|
|
|
|
+ Long id = SnowFlakeUtil.getId();
|
|
|
|
+ dto.setId(id);
|
|
|
|
+ ChangeTokenForm form = new ChangeTokenForm();
|
|
|
|
+ BeanUtils.copyProperties(dto,form);
|
|
|
|
+ //保存部位
|
|
|
|
+ List<ChangeNodeVO> nodeList = dto.getNodeList();
|
|
|
|
+ if (nodeList.size() != 0){
|
|
|
|
+ List<ChangeTokenMeter> meterList = nodeList.stream().map(l -> {
|
|
|
|
+ ChangeTokenMeter meter = new ChangeTokenMeter();
|
|
|
|
+ meter.setProjectId(dto.getProjectId());
|
|
|
|
+ meter.setContractId(dto.getContractId());
|
|
|
|
+ meter.setChangeTokenId(id);
|
|
|
|
+ meter.setContractMeterId(l.getId());
|
|
|
|
+ meter.setContractPicture(l.getContractPicture());
|
|
|
|
+ return meter;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ changeTokenMeterService.saveBatch(meterList);
|
|
|
|
+ }
|
|
|
|
+ //保存清单,并计算总变更金额设置进变更令
|
|
|
|
+ List<ChangeFormVO2> formList = dto.getFormList();
|
|
|
|
+ if (formList.size() != 0){
|
|
|
|
+ List<ChangeTokenInventory> inventoryList = new ArrayList<>();
|
|
|
|
+ BigDecimal big = new BigDecimal(0);
|
|
|
|
+ for (ChangeFormVO2 vo2 : formList) {
|
|
|
|
+ ChangeTokenInventory inventory = new ChangeTokenInventory();
|
|
|
|
+ inventory.setProjectId(dto.getProjectId());
|
|
|
|
+ inventory.setContractId(dto.getContractId());
|
|
|
|
+ inventory.setChangeTokenId(id);
|
|
|
|
+ inventory.setContractFormId(vo2.getId());
|
|
|
|
+ inventory.setChangeBeforeTotal(vo2.getContractTotal());
|
|
|
|
+ inventory.setChangeTotal(vo2.getCurrentChangeTotal());
|
|
|
|
+ //计算变更后
|
|
|
|
+ inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal() + inventory.getChangeTotal());
|
|
|
|
+ inventory.setChangeBeforeMoney(vo2.getContractMoney());
|
|
|
|
+ //计算变更增减金额
|
|
|
|
+ inventory.setChangeMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeTotal())));
|
|
|
|
+ big = big.add(inventory.getChangeMoney());
|
|
|
|
+ //计算变更后金额
|
|
|
|
+ inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeAfterTotal())));
|
|
|
|
+ inventoryList.add(inventory);
|
|
|
|
+ }
|
|
|
|
+ form.setChangeMoney(big);
|
|
|
|
+ changeTokenInventoryService.saveBatch(inventoryList);
|
|
|
|
+ }
|
|
|
|
+ this.save(form);
|
|
|
|
+ //保存附件
|
|
|
|
+ List<AttachmentForm> fileList = dto.getFileList();
|
|
|
|
+ if (fileList != null && fileList.size() != 0) {
|
|
|
|
+ for (AttachmentForm file : fileList) {
|
|
|
|
+ file.setProjectId(dto.getProjectId());
|
|
|
|
+ file.setContractId(dto.getContractId());
|
|
|
|
+ file.setMasterId(id);
|
|
|
|
+ }
|
|
|
|
+ attachmentFormService.saveBatch(fileList);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -130,7 +202,153 @@ public class ChangeTokenFormServiceImpl extends BaseServiceImpl<ChangeTokenFormM
|
|
* 新增-确认选择清单
|
|
* 新增-确认选择清单
|
|
*/
|
|
*/
|
|
@Override
|
|
@Override
|
|
- public List<ChangeFormVO2> selectForm(String ids) {
|
|
|
|
- return null;
|
|
|
|
|
|
+ public List<ChangeFormVO2> selectForm(Long contractId,String ids) {
|
|
|
|
+ List<ChangeFormVO2> vos = new ArrayList<>();
|
|
|
|
+ if (StringUtils.isBlank(ids)){
|
|
|
|
+ return vos;
|
|
|
|
+ }
|
|
|
|
+ List<Long> longs = Func.toLongList(ids);
|
|
|
|
+ vos = baseMapper.selectForm(contractId,longs);
|
|
|
|
+ return vos;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 新增-获取变更申请部位
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public List<ChangeNodeVO> getChangeNode(Long contractId,String ids) {
|
|
|
|
+ List<ChangeNodeVO> vos = new ArrayList<>();
|
|
|
|
+ if (StringUtils.isBlank(ids)){
|
|
|
|
+ return vos;
|
|
|
|
+ }
|
|
|
|
+ List<Long> longs = Func.toLongList(ids);
|
|
|
|
+ //暂时使用循环单条查询
|
|
|
|
+ vos = baseMapper.getChangeNode(contractId,longs);
|
|
|
|
+ for (ChangeNodeVO vo : vos) {
|
|
|
|
+ vo.setNodeUrl(middleMeterApplyService.getNodeDivide(vo.getId()));
|
|
|
|
+ }
|
|
|
|
+ return vos;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 修改 变更令表
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public void update2(ChangeTokenFormDTO dto) {
|
|
|
|
+ //复制出基础数据
|
|
|
|
+ ChangeTokenForm form = new ChangeTokenForm();
|
|
|
|
+ BeanUtils.copyProperties(dto,form);
|
|
|
|
+ //修改部位
|
|
|
|
+ List<ChangeNodeVO> nodeList = dto.getNodeList();
|
|
|
|
+ //删除当前变更令下的部位
|
|
|
|
+ changeTokenMeterService.deleteByTokenId(dto.getId());
|
|
|
|
+ if (nodeList.size() != 0){
|
|
|
|
+ List<ChangeTokenMeter> meterList = nodeList.stream().map(l -> {
|
|
|
|
+ ChangeTokenMeter meter = new ChangeTokenMeter();
|
|
|
|
+ meter.setProjectId(dto.getProjectId());
|
|
|
|
+ meter.setContractId(dto.getContractId());
|
|
|
|
+ meter.setChangeTokenId(dto.getId());
|
|
|
|
+ meter.setContractMeterId(l.getId());
|
|
|
|
+ meter.setContractPicture(l.getContractPicture());
|
|
|
|
+ return meter;
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ changeTokenMeterService.saveBatch(meterList);
|
|
|
|
+ }
|
|
|
|
+ //保存清单,并计算总变更金额设置进变更令
|
|
|
|
+ List<ChangeFormVO2> formList = dto.getFormList();
|
|
|
|
+ //删除当前变更令下的清单
|
|
|
|
+ changeTokenInventoryService.deleteByTokenId(dto.getId());
|
|
|
|
+ if (formList.size() != 0){
|
|
|
|
+ List<ChangeTokenInventory> inventoryList = new ArrayList<>();
|
|
|
|
+ BigDecimal big = new BigDecimal(0);
|
|
|
|
+ for (ChangeFormVO2 vo2 : formList) {
|
|
|
|
+ ChangeTokenInventory inventory = new ChangeTokenInventory();
|
|
|
|
+ inventory.setProjectId(dto.getProjectId());
|
|
|
|
+ inventory.setContractId(dto.getContractId());
|
|
|
|
+ inventory.setChangeTokenId(dto.getId());
|
|
|
|
+ inventory.setContractFormId(vo2.getId());
|
|
|
|
+ inventory.setChangeBeforeTotal(vo2.getContractTotal());
|
|
|
|
+ inventory.setChangeTotal(vo2.getCurrentChangeTotal());
|
|
|
|
+ //计算变更后
|
|
|
|
+ inventory.setChangeAfterTotal(inventory.getChangeBeforeTotal() + inventory.getChangeTotal());
|
|
|
|
+ inventory.setChangeBeforeMoney(vo2.getContractMoney());
|
|
|
|
+ //计算变更增减金额
|
|
|
|
+ inventory.setChangeMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeTotal())));
|
|
|
|
+ big = big.add(inventory.getChangeMoney());
|
|
|
|
+ //计算变更后金额
|
|
|
|
+ inventory.setChangeAfterMoney(vo2.getCurrentPrice().multiply(new BigDecimal(inventory.getChangeAfterTotal())));
|
|
|
|
+ inventoryList.add(inventory);
|
|
|
|
+ }
|
|
|
|
+ form.setChangeMoney(big);
|
|
|
|
+ changeTokenInventoryService.saveBatch(inventoryList);
|
|
|
|
+ }
|
|
|
|
+ this.updateById(form);
|
|
|
|
+ //删除附件信息
|
|
|
|
+ attachmentFormService.deleteByMasterId(form.getId());
|
|
|
|
+ //保存附件
|
|
|
|
+ List<AttachmentForm> fileList = dto.getFileList();
|
|
|
|
+ if (fileList != null && fileList.size() != 0) {
|
|
|
|
+ for (AttachmentForm file : fileList) {
|
|
|
|
+ file.setProjectId(dto.getProjectId());
|
|
|
|
+ file.setContractId(dto.getContractId());
|
|
|
|
+ file.setMasterId(dto.getId());
|
|
|
|
+ }
|
|
|
|
+ attachmentFormService.saveBatch(fileList);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 详情
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public ChangeTokenFormVO detail(Long id) {
|
|
|
|
+ //查询变更令信息
|
|
|
|
+ ChangeTokenFormVO vo = baseMapper.detail(id);
|
|
|
|
+ //查询节点信息
|
|
|
|
+ List<ChangeNodeVO> nodeList = baseMapper.getNodeList(vo.getContractId(),vo.getId());
|
|
|
|
+ if (nodeList.size() != 0) {
|
|
|
|
+ for (ChangeNodeVO nodeVO : nodeList) {
|
|
|
|
+ nodeVO.setNodeUrl(middleMeterApplyService.getNodeDivide(nodeVO.getId()));
|
|
|
|
+ }
|
|
|
|
+ vo.setNodeList(nodeList);
|
|
|
|
+ }
|
|
|
|
+ //查询清单信息
|
|
|
|
+ List<ChangeFormVO2> formList = baseMapper.getFormList(vo.getContractId(),vo.getId());
|
|
|
|
+ vo.setFormList(formList);
|
|
|
|
+ //查询附件信息
|
|
|
|
+ List<AttachmentForm> list = attachmentFormService.list(new LambdaQueryWrapper<AttachmentForm>()
|
|
|
|
+ .eq(AttachmentForm::getContractId, vo.getContractId())
|
|
|
|
+ .eq(AttachmentForm::getMasterId, id));
|
|
|
|
+ vo.setFileList(list);
|
|
|
|
+ return vo;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 分页 变更令表
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ public IPage<ChangeTokenPageVO> page2(Long contractId, Query query) {
|
|
|
|
+ IPage<ChangeTokenPageVO> page = new Page<>(query.getCurrent(),query.getSize());
|
|
|
|
+ page = baseMapper.page2(page,contractId);
|
|
|
|
+ return page;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 删除 变更令表
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional
|
|
|
|
+ public void delete(String ids) {
|
|
|
|
+ List<Long> longs = Func.toLongList(ids);
|
|
|
|
+ for (Long id : longs) {
|
|
|
|
+ //删除变更令
|
|
|
|
+ this.removeById(id);
|
|
|
|
+ //删除部位
|
|
|
|
+ changeTokenMeterService.deleteByTokenId(id);
|
|
|
|
+ //删除清单
|
|
|
|
+ changeTokenInventoryService.deleteByTokenId(id);
|
|
|
|
+ //删除附件
|
|
|
|
+ attachmentFormService.deleteByMasterId(id);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|