package com.moral.api.service.impl;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.moral.api.entity.Allocation;
import com.moral.api.entity.AllocationExtension;
import com.moral.api.exception.BusinessException;
import com.moral.api.mapper.AllocationExtensionMapper;
import com.moral.api.pojo.enums.AllocationExtensionApproveEnum;
import com.moral.api.pojo.enums.FileTableEnum;
import com.moral.api.pojo.ext.allocation.AllocationExt;
import com.moral.api.pojo.ext.allocationextension.AllocationExtensionExt;
import com.moral.api.pojo.ext.allocationextension.AllocationExtensionPageExt;
import com.moral.api.pojo.query.allocationextension.AllocationExtensionAddCond;
import com.moral.api.pojo.query.allocationextension.AllocationExtensionPageCond;
import com.moral.api.service.AllocationExtensionService;
import com.moral.api.service.AllocationService;
import com.moral.api.service.FileTableService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
*
* 交办单延期 服务实现类
*
* deyt template generate
* @author JI
* @since 2023-09-25
*/
@Service
public class AllocationExtensionServiceImpl extends ServiceImpl implements AllocationExtensionService {
@Autowired
private AllocationService allocationService;
private final FileTableService fileTableService;
public AllocationExtensionServiceImpl( FileTableService fileTableService) {
this.fileTableService = fileTableService;
}
@Override
public AllocationExtensionExt extOne(Integer id) {
AllocationExtensionExt extensionExt = this.baseMapper.extOne(id);
AllocationExt extOne = allocationService.oneAllocation(extensionExt.getAllocationId());
extensionExt.setAllocationNum(extOne.getAllocationNum())
.setEscalationTime(extOne.getEscalationTime())
.setPollutePosition(extOne.getPollutePosition())
.setUnitId(extOne.getUnitId())
.setPolluteType(extOne.getPolluteType())
.setChangeType(extOne.getChangeType())
.setChangeDay(extOne.getChangeDay())
.setEscalationName(extOne.getEscalationName())
.setInvestigationType(extOne.getInvestigationType())
.setProblemDescribe(extOne.getProblemDescribe())
.setEscalationUnitId(extOne.getEscalationUnitId());
extensionExt.setFileBaseList(fileTableService.list(extensionExt.getAllocationId(), FileTableEnum.ALLOCATION_FOUNDATION.value));
extensionExt.setFileList(fileTableService.list(id, FileTableEnum.ALLOCATION_EXTENSION.value));
return extensionExt;
}
@Override
public Page extPage(AllocationExtensionPageCond allocationExtensionPageCond) {
List unitList = allocationService.unitResult();
allocationExtensionPageCond.setUnitList(unitList);
Integer codeId = allocationService.unitAreaCode();
Page page = this.baseMapper.extPage(allocationExtensionPageCond.getPage().convertPage(), allocationExtensionPageCond);
if(CollectionUtils.isNotEmpty(page.getRecords())){
page.getRecords().forEach(it->{
if((CollectionUtils.isEmpty(unitList)&&codeId.equals(1))||codeId.equals(2)){
it.setIsApprove(1);
}else {
it.setIsApprove(0);
}
});
}
return page;
}
@Override
public boolean save(AllocationExtensionAddCond allocationExtensionAddCond) {
return this.save(allocationExtensionAddCond.convert());
}
@Override
@Transactional
public boolean check(Integer id, Integer state) {
AllocationExtensionExt extensionExt = this.baseMapper.extOne(id);
if(!AllocationExtensionApproveEnum.APPLYING.value.equals(extensionExt.getState())){
throw new BusinessException("审批中才能发起审批!");
}
AllocationExtension allocationExtension = new AllocationExtension();
allocationExtension.setId(id);
allocationExtension.setState(state);
this.baseMapper.updateById(allocationExtension);
if(AllocationExtensionApproveEnum.PASS.value.equals(state)){
Allocation allocation = new Allocation();
allocation.setAllocationId(extensionExt.getAllocationId());
allocation.setChangeDay(extensionExt.getChangeDay()+extensionExt.getExtensionNum());
allocationService.updateById(allocation);
}
return true;
}
}