|
@@ -31,6 +31,8 @@ import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
|
|
|
import com.jeeplus.finance.projectRecords.service.mapstruct.CwProjectClientContactWrapper;
|
|
|
import com.jeeplus.finance.projectRecords.service.mapstruct.CwProjectMembersWrapper;
|
|
|
import com.jeeplus.finance.projectRecords.service.mapstruct.CwProjectRecordsWrapper;
|
|
|
+import com.jeeplus.finance.projectReport.domain.CwProjectReportData;
|
|
|
+import com.jeeplus.finance.projectReport.mapper.CwProjectReportMapper;
|
|
|
import com.jeeplus.finance.workClientInfo.domain.CwWorkClientContact;
|
|
|
import com.jeeplus.finance.workClientInfo.service.CwWorkClientContactService;
|
|
|
import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientBaseDTO;
|
|
@@ -79,6 +81,8 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
|
|
|
private CwWorkClientContactService cwWorkClientContactService;
|
|
|
@Resource
|
|
|
private CwProjectMembersService cwProjectMembersService;
|
|
|
+ @Resource
|
|
|
+ private CwProjectReportMapper cwProjectReportMapper;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -361,7 +365,7 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 查询无报告项目及老项目列表信息
|
|
|
+ * 查询报告号不为空的项目列表信息
|
|
|
* @param page
|
|
|
* @param cwProjectRecordsDTO
|
|
|
* @return
|
|
@@ -413,6 +417,86 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
|
|
|
return list;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询是否有预开票的项目
|
|
|
+ * @param page
|
|
|
+ * @param cwProjectRecordsDTO
|
|
|
+ * @return
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public IPage<CwProjectRecordsDTO> findPreInvoiceList(Page<CwProjectRecordsDTO> page, CwProjectRecordsDTO cwProjectRecordsDTO) throws Exception{
|
|
|
+ UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByToken(TokenProvider.getCurrentToken());
|
|
|
+ QueryWrapper<CwProjectRecords> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( CwProjectRecordsWrapper.INSTANCE.toEntity(cwProjectRecordsDTO), CwProjectRecords.class );
|
|
|
+ queryWrapper.eq("a.del_flag","0");
|
|
|
+ queryWrapper.eq("a.create_by_id",userDTO.getId());
|
|
|
+ queryWrapper.eq("a.is_pre_invoice","1");
|
|
|
+ if (ObjectUtil.isNotEmpty(cwProjectRecordsDTO)) {
|
|
|
+ if (ArrayUtil.isNotEmpty(cwProjectRecordsDTO.getCreateDates())) {
|
|
|
+ queryWrapper.between("a.create_time", cwProjectRecordsDTO.getCreateDates()[0], cwProjectRecordsDTO.getCreateDates()[1]);
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(cwProjectRecordsDTO.getProjectMasterName())) {
|
|
|
+ queryWrapper.in("a.project_master_id", cwProjectRecordsDTO.getProjectMasterName());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(cwProjectRecordsDTO.getBusinessType())){
|
|
|
+ queryWrapper.eq("a.business_type",cwProjectRecordsDTO.getBusinessType());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(cwProjectRecordsDTO.getProjectMasterName2())) {
|
|
|
+ List<User> userList = SpringUtil.getBean ( IUserApi.class ).selectListByName(cwProjectRecordsDTO.getProjectMasterName2());
|
|
|
+ if (CollectionUtils.isNotEmpty(userList)){
|
|
|
+ List<String> ids = userList.stream().distinct().map(User::getId).collect(Collectors.toList());
|
|
|
+ if (CollectionUtil.isNotEmpty(ids)) {
|
|
|
+ queryWrapper.in("a.project_master_id", ids);
|
|
|
+ } else {
|
|
|
+ return new Page<>();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ queryWrapper.in("a.project_master_id", cwProjectRecordsDTO.getProjectMasterName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(cwProjectRecordsDTO.getRealHeaderName())) {
|
|
|
+ queryWrapper.in("a.real_header", cwProjectRecordsDTO.getRealHeaderName());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(cwProjectRecordsDTO.getCreateId())){
|
|
|
+ queryWrapper.eq("a.create_by_id", cwProjectRecordsDTO.getCreateId());
|
|
|
+ }
|
|
|
+ // 创建人
|
|
|
+ if (ObjectUtil.isNotEmpty(cwProjectRecordsDTO.getCreateBy())){
|
|
|
+ if (StringUtils.isNotBlank(cwProjectRecordsDTO.getCreateBy().getName())){
|
|
|
+ queryWrapper.in("a.create_by_id",cwProjectRecordsDTO.getCreateBy().getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ IPage<CwProjectRecordsDTO> list = cwProjectRecordsMapper.findPreInvoiceList(page, queryWrapper);
|
|
|
+ List<CwProjectRecordsDTO> recordsToKeep = new ArrayList<>();
|
|
|
+ Set<String> projectIdsWithPendingReports = new HashSet<>();
|
|
|
+ //查询出未关联完成的项目,完成替换
|
|
|
+ for (CwProjectRecordsDTO record : list.getRecords()) {
|
|
|
+ List<CwProjectReportData> reportData = cwProjectReportMapper.getByProjectId(record.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(reportData)) {
|
|
|
+ for (CwProjectReportData reportDatum : reportData) {
|
|
|
+ if (!"5".equals(reportDatum.getStatus())) {
|
|
|
+ // 如果找到一个状态不是 "5" 的报告,则将该记录的ID添加到集合中
|
|
|
+ projectIdsWithPendingReports.add(record.getId());
|
|
|
+ break; // 不需要继续检查其他报告
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ projectIdsWithPendingReports.add(record.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 根据集合中的ID来过滤出需要保留的records
|
|
|
+ for (CwProjectRecordsDTO record : list.getRecords()) {
|
|
|
+ if (projectIdsWithPendingReports.contains(record.getId())) {
|
|
|
+ recordsToKeep.add(record);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 替换原列表的内容
|
|
|
+ list.setRecords(recordsToKeep);
|
|
|
+ return list;
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -941,4 +1025,46 @@ public class CwProjectRecordsService extends ServiceImpl<CwProjectRecordsMapper,
|
|
|
public List<String> findAllList(String id) {
|
|
|
return cwProjectRecordsMapper.findAllList(id);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询项目下是否存在已开票信息
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public CwProjectRecordsDTO getInvoiceTotal(String id) {
|
|
|
+ CwProjectRecordsDTO cwProjectRecordsDTO = cwProjectRecordsMapper.getInvoiceTotal(id);
|
|
|
+ return cwProjectRecordsDTO;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 查询预开票项目下的报告是否已关联完成
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<CwProjectRecordsDTO> getCompleteCollection() {
|
|
|
+ List<CwProjectRecordsDTO> list=cwProjectRecordsMapper.getCompleteCollection();
|
|
|
+ List<CwProjectRecordsDTO> recordsToKeep = new ArrayList<>();
|
|
|
+ Set<String> projectIdsWithPendingReports = new HashSet<>();
|
|
|
+
|
|
|
+ for (CwProjectRecordsDTO record : list) {
|
|
|
+ List<CwProjectReportData> reportData = cwProjectReportMapper.getByProjectId(record.getId());
|
|
|
+ if (CollectionUtils.isNotEmpty(reportData)) {
|
|
|
+ for (CwProjectReportData reportDatum : reportData) {
|
|
|
+ if (!"5".equals(reportDatum.getStatus())) {
|
|
|
+ // 如果找到一个状态不是 "5" 的报告,则将该记录的ID添加到集合中
|
|
|
+ projectIdsWithPendingReports.add(record.getId());
|
|
|
+ break; // 不需要继续检查其他报告
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ projectIdsWithPendingReports.add(record.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 根据集合中的ID来过滤出需要保留的records
|
|
|
+ for (CwProjectRecordsDTO record : list) {
|
|
|
+ if (projectIdsWithPendingReports.contains(record.getId())) {
|
|
|
+ recordsToKeep.add(record);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return recordsToKeep;
|
|
|
+ }
|
|
|
}
|