Browse Source

同海-审批

ioioio 3 years ago
parent
commit
65a1e896b3

+ 37 - 0
blade-service-api/blade-project-api/src/main/java/org/springblade/project/feign/IProjectClient.java

@@ -0,0 +1,37 @@
+package org.springblade.project.feign;
+
+
+import org.springblade.core.tool.api.R;
+import org.springblade.project.entity.ServiceProject;
+import org.springblade.project.entity.ServiceProjectItem;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Date;
+
+@FeignClient(
+	value = "trade-project"
+)
+/**
+ * 商品信息对外访问API
+ */
+public interface IProjectClient {
+
+	@PostMapping("/project/modify")
+	R edit(@RequestBody ServiceProject serviceProject);
+
+	@PostMapping("/project/projectPassCheck")
+	R projectPassCheck(@RequestParam("id") Long id);
+
+	@PostMapping("/settlement/projectPassCancel")
+	R projectPassCancel(@RequestParam("id") Long id);
+
+
+
+
+
+
+}

+ 4 - 0
blade-service-api/blade-project-api/src/main/java/org/springblade/project/feign/IProjectItemClient.java

@@ -2,10 +2,12 @@ package org.springblade.project.feign;
 
 
 import org.springblade.core.tool.api.R;
+import org.springblade.project.entity.ServiceProject;
 import org.springblade.project.entity.ServiceProjectItem;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.Date;
@@ -41,4 +43,6 @@ public interface IProjectItemClient {
 	public ServiceProjectItem findItemById(@RequestParam(name = "id", required = true) Long itemId);
 
 
+
+
 }

+ 6 - 0
blade-service/blade-check/pom.xml

@@ -93,6 +93,12 @@
             <version>2.8.2.RELEASE</version>
             <scope>compile</scope>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-project-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
 

+ 2 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/IAuditProecessService.java

@@ -45,6 +45,8 @@ public interface IAuditProecessService extends IService<AuditProecess> {
 
 	void operationFinanceProcess(AuditProecess auditProecess);
 
+	void serverProcess(AuditProecess auditProecess);
+
 	void batchOperation(List<AuditProecess> processLis,Integer operate,String auditMsg);
 
 	void cancelCheck(Long srcBillId);

+ 185 - 0
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -35,6 +35,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import io.seata.spring.annotation.GlobalTransactional;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.finance.vojo.Settlement;
+import org.springblade.project.entity.ServiceProject;
+import org.springblade.project.feign.IProjectClient;
+import org.springblade.project.feign.IProjectItemClient;
 import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springframework.stereotype.Service;
@@ -66,6 +69,10 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 
     private IOrderDescClient orderDescClient;
 
+    private IProjectItemClient iProjectItemClient;
+
+    private IProjectClient iProjectClient;
+
 	@Override
 	public IPage<AuditProecessVO> selectAuditProecessPage(IPage<AuditProecessVO> page, AuditProecessVO auditProecess) {
 		return page.setRecords(baseMapper.selectAuditProecessPage(page, auditProecess));
@@ -342,6 +349,184 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 	@Override
 	@Transactional
 	@GlobalTransactional
+	public void serverProcess(AuditProecess auditProecess)
+	{
+
+		//查看最新操作记录,防止重复提交
+		AuditProecess auditProecess1= baseMapper.selectById(auditProecess.getId());
+		if(auditProecess1==null)
+		{
+			throw new SecurityException("未查到此审批记录,禁止操作");
+		}
+		if(auditProecess1.getAuditStatus().equals("A")||auditProecess1.getAuditStatus().equals("B"))
+		{
+			throw new SecurityException("当前记录已经完成审批,禁止重复操作");
+		}
+
+		if(auditProecess.getAuditStatus()==null || !auditProecess.getAuditStatus().equals("S"))
+		{
+			throw new SecurityException("审批状态非待审,禁止操作");
+		}
+		//信息
+		Message sendMessage=new Message();
+		sendMessage.setUserName(AuthUtil.getUserName());
+		sendMessage.setUserId(AuthUtil.getUserId());
+		sendMessage.setToUserId(auditProecess.getSendUserId());
+		sendMessage.setToUserName(auditProecess.getSendName());
+		sendMessage.setMessageType(1);
+		sendMessage.setTenantId(AuthUtil.getTenantId());
+		sendMessage.setCreateUser(AuthUtil.getUserId());
+		sendMessage.setCreateTime(new Date());
+		sendMessage.setUrl(auditProecess.getUrl());
+		sendMessage.setPageLabel(auditProecess.getPageLabel());
+		sendMessage.setPageStatus(auditProecess.getPageStatus());
+
+
+		//用户操作 1.通过  2.驳回
+		Integer operate = auditProecess.getOperate();
+		//查看当前审批是否为最后一级
+		String iffinalItem = auditProecess.getIffinalItem();
+		//审批人
+		auditProecess.setAuditUserId(String.valueOf(AuthUtil.getUserId()));
+		//审批时间
+		auditProecess.setAuditOpTime(new Date());
+		//不是最后一级
+		if(iffinalItem.equals("F"))
+		{
+
+
+			//通过
+			if(operate==1)
+			{
+				//如果是第一级, 则修改状态为审批中
+				if(auditProecess.getLevelId()==1)
+				{
+					ServiceProject serviceProject=new ServiceProject();
+					serviceProject.setId(auditProecess.getSrcBillId());
+					serviceProject.setStatus(2);
+					R submit = iProjectClient.edit(serviceProject);
+					if(!submit.isSuccess())
+					{
+						throw new SecurityException("审批开始修改审核状态失败");
+					}
+				}
+
+
+				auditProecess.setAuditStatus("A");
+				//查询下一级,开启待审
+				LambdaQueryWrapper<AuditProecess> auditProecessLambdaQueryWrapper=new LambdaQueryWrapper<>();
+				auditProecessLambdaQueryWrapper
+					.eq(AuditProecess::getBatchNo,auditProecess.getBatchNo())
+					.eq(AuditProecess::getSrcBillId,auditProecess.getSrcBillId())
+					.eq(AuditProecess::getIsDelete,0)
+					.eq(AuditProecess::getActId,auditProecess.getActId())
+					.eq(AuditProecess::getBillId,auditProecess.getBillId())
+					.eq(AuditProecess::getBillNo,auditProecess.getBillNo())
+					.eq(AuditProecess::getTenantId,AuthUtil.getTenantId())
+					.eq(AuditProecess::getLevelId,auditProecess.getLevelId()+1);
+				Integer count = baseMapper.selectCount(auditProecessLambdaQueryWrapper);
+				if(count!=null && count>1)
+				{
+					throw new SecurityException("审核失败,获取下一级信息失败");
+				}
+				AuditProecess proecess = baseMapper.selectOne(auditProecessLambdaQueryWrapper);
+				if(proecess==null)
+				{
+					throw new SecurityException("审批通过=>获取下一级信息失败");
+				}
+				proecess.setAuditStatus("S");
+				baseMapper.updateById(proecess);
+				Message message=new Message();
+				message.setUserName(AuthUtil.getUserName());
+				message.setUserId(AuthUtil.getUserId());
+				//消息通知下一级
+				message.setToUserId(Long.valueOf(proecess.getAuditUserId()));
+				message.setMessageType(1);
+				message.setTenantId(AuthUtil.getTenantId());
+				message.setMessageBody("你有新的审批待操作,请及时处理");
+				message.setCreateUser(AuthUtil.getUserId());
+				message.setUrl("/approveData/index");
+				message.setCreateTime(new Date());
+
+				R save = messageClient.save(message);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
+			}
+			//不通过
+			else if(operate==2)
+			{
+				auditProecess.setAuditStatus("B");
+				//todo 调用feign取消
+				R r = iProjectClient.projectPassCancel(auditProecess.getSrcBillId());
+				if(!r.isSuccess())
+				{
+					throw new SecurityException("修改财务数据失败");
+				}
+
+				sendMessage.setMessageBody("您的请核未通过,请查看原因");
+				R save = messageClient.save(sendMessage);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
+			}
+
+		}
+		//是最后一级
+		else if(iffinalItem.equals("T"))
+		{
+			//通过
+			if(operate==1)
+			{
+				//todo 调用feign直接通过
+				auditProecess.setAuditStatus("A");
+				R r = iProjectClient.projectPassCheck(auditProecess.getSrcBillId());
+				if(!r.isSuccess())
+				{
+					throw new SecurityException("修改财务数据失败");
+				}
+
+
+				sendMessage.setMessageBody("您的请核已通过,请继续操作");
+				R save = messageClient.save(sendMessage);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
+			}
+			//不通过
+			else if(operate==2)
+			{
+				//todo 调用feign取消
+				auditProecess.setAuditStatus("B");
+				R r = iProjectClient.projectPassCancel(auditProecess.getSrcBillId());
+				if(!r.isSuccess())
+				{
+					throw new SecurityException("修改财务数据失败");
+				}
+				sendMessage.setMessageBody("您的请核未通过,请查看原因");
+				R save = messageClient.save(sendMessage);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
+			}
+		}
+		else
+		{
+			throw new SecurityException("审批异常,请联系管理员");
+		}
+		//保存操作记录
+		auditProecess.setAuditMsg(auditProecess.getAuditMsg());
+		auditProecess.setAuditItem(new Date());
+		baseMapper.updateById(auditProecess);
+	}
+
+	@Override
+	@Transactional
+	@GlobalTransactional
 	public void batchOperation(List<AuditProecess> processLis, Integer operate,String auditMsg)
 	{
 		processLis.forEach(e->{

+ 1 - 0
blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java

@@ -350,6 +350,7 @@ public class GoodsDescController extends BladeController {
 		List<GoodsOutExcel> list = new ArrayList<>();
 		LambdaQueryWrapper<GoodsDesc> goodsDescLambdaQueryWrapper=new LambdaQueryWrapper<>();
 		goodsDescLambdaQueryWrapper
+			.eq(GoodsDesc::getType,0)
 			.orderByAsc(GoodsDesc::getCode)
 			.eq(GoodsDesc::getIsDeleted,0)
 			.eq(GoodsDesc::getTenantId,AuthUtil.getTenantId());

+ 8 - 5
blade-service/blade-mocha-item/src/main/java/org/springblade/mocha/service/impl/SalesPolicyServiceImpl.java

@@ -47,6 +47,7 @@ import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
 import java.util.*;
 
 /**
@@ -192,18 +193,20 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 		{
 			SalesItemExcel goodsExcel = data.get(i);
 			SalesPolicyItem salesPolicyItem=new SalesPolicyItem();
-			BeanUtil.copyProperties(goodsExcel,salesPolicyItem);
-            if(StringUtils.isBlank(salesPolicyItem.getCode()))
+			salesPolicyItem.setCode(goodsExcel.getCode());
+            if(StringUtils.isBlank(goodsExcel.getCode()))
             {
-            	throw new SecurityException("第"+i+"行商品未填写,");
+            	throw new SecurityException("第"+(i+1)+"行商品未填写,");
 			}
 			R<GoodsDesc> goodsDescR = goodsDescClient.GoodsByCode(salesPolicyItem.getCode());
             if(!goodsDescR.isSuccess()||goodsDescR.getData()==null)
             {
-				throw new SecurityException("第"+i+"行,请填写真实正确的商品编码");
+				throw new SecurityException("第"+(i+1)+"行,请填写真实正确的商品编码");
 			}
             //查询itemId
 			GoodsDesc goodsDesc = goodsDescR.getData();
+			salesPolicyItem.setSpecialOffer(new BigDecimal(goodsExcel.getSpecialOffer()));
+			salesPolicyItem.setBrandItem(goodsDesc.getBrandItem());
 			salesPolicyItem.setItemId(goodsDesc.getId());
 			salesPolicyItem.setBrand(goodsDesc.getBrand());
 			salesPolicyItem.setTypeno(goodsDesc.getTypeno());
@@ -214,7 +217,7 @@ public class SalesPolicyServiceImpl extends ServiceImpl<SalesPolicyMapper, Sales
 			GoodsType goodsType = goodsDescClient.goodTypeId(goodsDesc.getId());
 			if(goodsType==null)
 			{
-				throw new SecurityException("第"+i+"行,根据此编码获取分类失败");
+				throw new SecurityException("第"+(i+1)+"行,根据此编码获取分类失败");
 			}
 			salesPolicyItem.setProductCategory(goodsType.getCname());
 			list.add(salesPolicyItem);

+ 6 - 0
blade-service/blade-project/pom.xml

@@ -71,6 +71,12 @@
             <groupId>org.springblade</groupId>
             <artifactId>blade-starter-transaction</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-check-api</artifactId>
+            <version>2.8.2.RELEASE</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
 
     <build>

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

@@ -335,9 +335,12 @@ public class ProjectController {
 	 * 2.0新逻辑-主营项目主表清核-必须所有子表明细结算之后才可以清核
  	 */
 	@PostMapping("/masterCheck")
-    public R masterCheck(@RequestParam(name = "id",  required = true) Long id)
+    public R masterCheck(@RequestParam(name = "id",  required = true) Long id,
+						 @RequestParam(name = "url",  required = false) String url,
+						 @RequestParam(name = "pageStatus",  required = false) String pageStatus,
+						 @RequestParam(name = "pageLabel",  required = false) String pageLabel)
 	{
-		serviceProjectService.masterCheck(id);
+		serviceProjectService.masterCheck(id,url,pageStatus,pageLabel);
 		return R.success("操作成功");
 	}
 

+ 16 - 0
blade-service/blade-project/src/main/java/org/springblade/project/feign/ProjectItemClient.java

@@ -12,6 +12,7 @@ import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tenant.annotation.NonDS;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
+import org.springblade.project.entity.ServiceProject;
 import org.springblade.project.entity.ServiceProjectItem;
 import org.springblade.project.service.ServiceProjectItemService;
 import org.springblade.project.service.ServiceProjectService;
@@ -50,5 +51,20 @@ public class ProjectItemClient implements IProjectItemClient
 		return	serviceProjectItemService.getById(itemId);
 	}
 
+	@Override
+	public R edit(ServiceProject serviceProject) {
+		return null;
+	}
+
+	@Override
+	public R projectPassCheck(Long id) {
+		return null;
+	}
+
+	@Override
+	public R projectPassCancel(Long id) {
+		return null;
+	}
+
 
 }

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

@@ -32,7 +32,7 @@ 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 masterCheck(Long id,String url,String pageStatus,String pageLabel);
 
     void projectPassCheck(Long id);
 

+ 46 - 3
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

@@ -2,7 +2,12 @@ package org.springblade.project.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import jdk.nashorn.internal.ir.CallNode;
+import lombok.AllArgsConstructor;
 import net.logstash.logback.encoder.org.apache.commons.lang3.StringUtils;
+import org.springblade.check.dto.AuditProecessDTO;
+import org.springblade.check.entity.AuditPathsActs;
+import org.springblade.check.entity.AuditPathsLevels;
+import org.springblade.check.feign.ICheckClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.mp.base.BaseService;
 import org.springblade.core.mp.base.BaseServiceImpl;
@@ -35,6 +40,7 @@ import java.util.stream.Collectors;
 
 
 @Service
+@AllArgsConstructor
 public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper, ServiceProject> implements ServiceProjectService
 {
    @Resource
@@ -46,6 +52,8 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 	@Resource
    private ISerialClient serialClient;//生成系统编号
 
+	private final ICheckClient iCheckClient;
+
 	@Override
 	@Transactional
 	public void modify(ServiceProject serviceProject)
@@ -356,7 +364,7 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 
 	@Override
 	@Transactional
-	public void masterCheck(Long id)
+	public void masterCheck(Long id,String url,String pageStatus,String pageLabel)
 	{
 		ServiceProject serviceProject = serviceProjectMapper.selectById(id);
 		if(serviceProject==null)
@@ -388,8 +396,43 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 		}
 
 		//todo 查看是否开启审批流,如果已经开启了,走审批流,反之直接走审批通过接口
-		//暂未加审批直接通过
-        this.projectPassCheck(id);
+		AuditPathsActs pathsActs = iCheckClient.getActsByActId(2, "check_status");
+
+		//没开启审批流直接走 通过流程
+		if(pathsActs==null || pathsActs.getIsEnable()==2)
+		{
+			this.projectPassCheck(id);
+		}
+		//走审批流
+	    else
+		{
+			serviceProject.setStatus(1);
+			serviceProjectMapper.updateById(serviceProject);
+			//获取审批级次
+			List<AuditPathsLevels> auditPathsLevels = iCheckClient.listLevelsByActId(2, "status");
+			AuditProecessDTO auditProecessDTO=new AuditProecessDTO();
+			//追加跳转路由url
+			auditProecessDTO.setUrl(url);
+			auditProecessDTO.setPageStatus(pageStatus);
+			auditProecessDTO.setPageLabel(pageLabel);
+			//增加审批类型
+			auditProecessDTO.setProcessType("付费审批");
+			auditProecessDTO.setPathsLevelsList(auditPathsLevels);
+			auditProecessDTO.setActId(1);
+			auditProecessDTO.setSrcBillId(serviceProject.getId());
+			auditProecessDTO.setBillId(serviceProject.getId());
+			auditProecessDTO.setBillNo(serviceProject.getSysNo());
+			auditProecessDTO.setSendUserId(AuthUtil.getUserId());
+			auditProecessDTO.setSendName(AuthUtil.getUserName());
+			auditProecessDTO.setSendTime(new Date());
+			R ServiceProcess = iCheckClient.createFinanceProcess(auditProecessDTO);
+			if(!ServiceProcess.isSuccess())
+			{
+				throw new SecurityException("操作失败,请联系管理员");
+			}
+		}
+
+
 	}
 
 	@Override