Sfoglia il codice sorgente

主营项目提交

ioioio 4 anni fa
parent
commit
0ad364401c

+ 48 - 5
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -87,16 +87,17 @@ public class ProjectController {
 
 		//客户名称
 		records.forEach(e->{
-			if(corpsDescClient.getCorpMessage(e.getCorpId()).isSuccess())
+			R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(e.getCorpId());
+			if(corpMessage.isSuccess()&&corpMessage.getData()!=null)
 			{
-				e.setCorpNames(corpsDescClient.getCorpMessage(e.getCorpId()).getData().getCname());
+				e.setCorpNames(corpMessage.getData().getCname());
 			}
 
 		});
 
 
 
-		//检查是否可以删除主表,没有字表信息 或者 字表status全部为0 就可以删除
+		//检查是否可以删除主表,没有子表信息 或者 子表status全部为0 就可以删除
 		if(flag==0)
 		{
 			records.forEach(k->{
@@ -282,13 +283,13 @@ public class ProjectController {
 					  .eq(ServiceProject::getId,e.getPId())).getCorpId();
 				  e.setCornId(corpId);
 				  R<CorpsDesc> corpMessage = corpsDescClient.getCorpMessage(corpId);
-				  if(corpMessage.isSuccess())
+				  if(corpMessage.isSuccess()&&corpMessage.getData()!=null)
 				  {
 					  e.setCornName(corpMessage.getData().getCname());
 				  }
 				  //任务部门
 				  R<Dept> dept = iSysClient.getDept(e.getDeptid());
-				  if(dept.isSuccess())
+				  if(dept.isSuccess()&&dept.getData()!=null)
 				  {
 				  	e.setDeptName(dept.getData().getDeptName());
 				  }
@@ -320,5 +321,47 @@ public class ProjectController {
 		return R.data(projectItem.getPId());
 	}
 
+	/**
+	 * 2.0新逻辑-主营项目主表清核-必须所有子表明细结算之后才可以清核
+ 	 */
+	@PostMapping("masterCheck")
+    public R masterCheck(@RequestParam(name = "id",  required = true) Long id)
+	{
+		serviceProjectService.masterCheck(id);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 2.0新逻辑-微服务对外feign调用接口-主营项目审批通过
+	 * */
+	@PostMapping("projectPassCheck")
+	public R projectPassCheck(@RequestParam(name = "id",  required = true) Long id)
+	{
+		serviceProjectService.projectPassCheck(id);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 2.0新逻辑-微服务对外feign调用接口-主营项目审批驳回
+	 * */
+	@PostMapping("projectPassCancel")
+	public R projectPassCancel(@RequestParam(name = "id",  required = true) Long id)
+	{
+		serviceProjectService.projectPassCancel(id);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 2.0新逻辑 主营项目明细结算和取消结算功能
+	 * */
+	@PostMapping("settleAccounts")
+	public R settleAccounts(@RequestParam(name = "id",  required = true) Long id,
+							@RequestParam(name = "status", required = true) int status)
+	{
+		serviceProjectService.settleAccounts(id,status);
+		return R.success("操作成功");
+	}
+
+
 
 }

+ 8 - 0
blade-service/blade-project/src/main/java/org/springblade/project/service/ServiceProjectService.java

@@ -9,6 +9,7 @@ import org.springblade.core.tool.api.R;
 import org.springblade.project.entity.ServiceProject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.springblade.project.entity.ServiceProjectItem;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.xml.crypto.Data;
 import java.util.Date;
@@ -30,4 +31,11 @@ public interface ServiceProjectService extends IService<ServiceProject>
 
     void updateItemStatus(Long itemId, int status, String accountName, String accountBank, String accountNo, Date payTime);
 
+    void masterCheck(Long id);
+
+    void projectPassCheck(Long id);
+
+    void projectPassCancel(Long id);
+
+    void settleAccounts(Long id,int status);
 }

+ 116 - 0
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

@@ -352,6 +352,120 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 
 	}
 
+	@Override
+	@Transactional
+	public void masterCheck(Long id)
+	{
+		ServiceProject serviceProject = serviceProjectMapper.selectById(id);
+		if(serviceProject==null)
+		{
+			throw new SecurityException("清核失败:主营项目不存在或已被删除");
+		}
+		if(serviceProject.getStatus()>0)
+		{
+			throw new SecurityException("清核失败:主营项目已开启审批,禁止重复提交");
+		}
+		//查询子表是否符合请核条件
+		LambdaQueryWrapper<ServiceProjectItem> itemLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		itemLambdaQueryWrapper
+			.eq(ServiceProjectItem::getPId,id)
+			.eq(ServiceProjectItem::getIsDeleted,0);
+		List<ServiceProjectItem> serviceProjectItems = serviceProjectItemMapper.selectList(itemLambdaQueryWrapper);
+		if(!CollectionUtils.isEmpty(serviceProjectItems))
+		{
+			//存在一个未结算完成, 都不可以请核
+			boolean match = serviceProjectItems.stream().anyMatch(e -> e.getStatus() != 5);
+			if(match)
+			{
+				throw new SecurityException("清核失败:子表有未结算完成的数据");
+			}
+		}
+		else
+		{
+			throw new SecurityException("清核失败:未查询到子表结算信息");
+		}
+
+		//todo 查看是否开启审批流,如果已经开启了,走审批流,反之直接走审批通过接口
+		//暂未加审批直接通过
+        this.projectPassCheck(id);
+	}
+
+	@Override
+	@Transactional
+	public void projectPassCheck(Long id)
+	{
+		ServiceProject serviceProject = serviceProjectMapper.selectById(id);
+		if(serviceProject==null)
+		{
+			throw new SecurityException("操作失败:未查询到主营项目数据");
+		}
+		serviceProject.setStatus(3);
+		serviceProjectMapper.updateById(serviceProject);
+	}
+
+	@Override
+	@Transactional
+	public void projectPassCancel(Long id)
+	{
+		ServiceProject serviceProject = serviceProjectMapper.selectById(id);
+		if(serviceProject==null)
+		{
+			throw new SecurityException("操作失败:未查询到主营项目数据");
+		}
+		serviceProject.setStatus(0);
+		serviceProjectMapper.updateById(serviceProject);
+	}
+
+	@Override
+	@Transactional
+	public void settleAccounts(Long id,int status)
+	{
+		ServiceProjectItem serviceProjectItem = serviceProjectItemMapper.selectById(id);
+		if(status==5)
+		{
+			if(serviceProjectItem.getStatus()==5)
+			{
+				throw new SecurityException("操作失败:此明细已完成结算,禁止重复提交");
+			}
+			//主营项目子表操作
+			serviceProjectItem.setStatus(5);
+			serviceProjectItem.setPayTime(new Date());
+			serviceProjectItemMapper.updateById(serviceProjectItem);
+			//主营项目主表操作
+			ServiceProject targetServiceProject = serviceProjectMapper.selectById(serviceProjectItem.getPId());
+			//主表已收款项增加
+			targetServiceProject.setSettlmentAmount(targetServiceProject.getSettlmentAmount().add(serviceProjectItem.getAmount()));
+			//主表未收款项减少
+			targetServiceProject.setBalanceAmount(targetServiceProject.getBalanceAmount().subtract(serviceProjectItem.getAmount()));
+			targetServiceProject.setUpdateUser(SecureUtil.getUserId());
+			targetServiceProject.setUpdateTime(new Date());
+			targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
+			serviceProjectMapper.updateById(targetServiceProject);
+		}
+		else if(status==6)
+		{
+			if(serviceProjectItem.getStatus()!=5)
+			{
+				throw new SecurityException("操作失败:此明细暂未结算,禁止撤回");
+			}
+			//status=6代表撤回, item状态回到4
+			serviceProjectItem.setStatus(4);
+			serviceProjectItem.setPayTime(null);
+			serviceProjectItemMapper.updateById(serviceProjectItem);
+
+			//主表信息
+			ServiceProject targetServiceProject = serviceProjectMapper.selectById(serviceProjectItem.getPId());
+			//撤回时候,主表已收款项减少
+			targetServiceProject.setSettlmentAmount(targetServiceProject.getSettlmentAmount().subtract(serviceProjectItem.getAmount()));
+			//撤回时候,主表未收款项增加
+			targetServiceProject.setBalanceAmount(targetServiceProject.getBalanceAmount().add(serviceProjectItem.getAmount()));
+			targetServiceProject.setUpdateUser(SecureUtil.getUserId());
+			targetServiceProject.setUpdateTime(new Date());
+			targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
+			serviceProjectMapper.updateById(targetServiceProject);
+		}
+	}
+
 	public void checkMoney(Long serviceId,List<ServiceProjectItem> items)
 	{
 		ServiceProject serviceProject = serviceProjectMapper.selectById(serviceId);
@@ -367,4 +481,6 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
           throw new RuntimeException("操作失败,明细总金额大于合同金额");
 		}
 	}
+
+
 }

+ 1 - 1
blade-service/trade-finance/pom.xml

@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>trade-finance</artifactId>
+    <artifactId>blade-finance</artifactId>
     <name>${project.artifactId}</name>
     <version>2.8.2.RELEASE</version>
 

+ 1 - 1
blade-service/trade-purchase/pom.xml

@@ -9,7 +9,7 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
-    <artifactId>trade-purchase</artifactId>
+    <artifactId>blade-purchase</artifactId>
     <name>${project.artifactId}</name>
     <version>2.8.2.RELEASE</version>