Переглянути джерело

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
lazhaoqian 3 роки тому
батько
коміт
c4ea74377b

+ 22 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java

@@ -875,4 +875,26 @@ public class Order implements Serializable {
 	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
 	private Date receiveTime;
 
+	/**
+	 * 是否特批
+	 */
+	@ApiModelProperty(value = "是否特批")
+	private Integer specialCheck;
+	/**
+	 * 特批状态
+	 */
+	@ApiModelProperty(value = "特批状态")
+	private Integer specialCheckStatus;
+	/**
+	 * 特批提交人
+	 */
+	@ApiModelProperty(value = "特批提交人")
+	private String specialCheckUser;
+	/**
+	 * 特批提交时间
+	 */
+	@ApiModelProperty(value = "特批提交时间")
+	@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
+	private Date specialCheckTime;
+
 }

+ 9 - 0
blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/feign/IOrderCheckClient.java

@@ -21,4 +21,13 @@ public interface IOrderCheckClient {
 
 	@PostMapping("order/underReview")
 	R underReview(@RequestParam("id") Long id);
+
+	@PostMapping("/order/passSpecialCheck")
+	R passSpecialCheck(@RequestParam("id") Long id);
+
+	@PostMapping("/order/passSpecialCancel")
+	R passSpecialCancel(@RequestParam("id") Long id);
+
+	@PostMapping("order/underSpecialReview")
+	R underSpecialReview(@RequestParam("id") Long id);
 }

+ 1 - 1
blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java

@@ -219,7 +219,7 @@ public class AuditProecessController extends BladeController {
 			auditProecessService.operationFinanceProcess(auditProecess);
 		}
 		// 采购 或者 销售 订单请核
-		else if ("xsqh".equals(proecess.getCheckType()) || "cgqh".equals(proecess.getCheckType())) {
+		else if ("xsqh".equals(proecess.getCheckType()) || "cgqh".equals(proecess.getCheckType()) || "xstpqh".equals(proecess.getCheckType())) {
 			auditProecessService.orderCheckProcess(auditProecess);
 		}
 		// 通济学校 小学 初中 高中 后勤工资审核

+ 71 - 6
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -48,6 +48,9 @@ import org.springblade.purchase.sales.entity.Order;
 import org.springblade.purchase.sales.feign.IOrderCheckClient;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.school.feign.ISalaryClient;
+import org.springblade.system.feign.ISysClient;
+import org.springblade.system.user.entity.User;
+import org.springblade.system.user.feign.IUserClient;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -90,6 +93,10 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 
 	private final IHandoverClient handoverClient;
 
+	private final ISysClient sysClient;
+
+	private final IUserClient userClient;
+
 	@Override
 	public IPage<AuditProecessVO> selectAuditProecessPage(IPage<AuditProecessVO> page, AuditProecessVO auditProecess) {
 		return page.setRecords(baseMapper.selectAuditProecessPage(page, auditProecess));
@@ -620,7 +627,12 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			if (operate == 1) {
 				//如果是第一级, 则修改状态为审批中
 				if (auditProecess.getLevelId() == 1) {
-					R submit = orderCheckClient.underReview(auditProecess.getSrcBillId());
+					R submit;
+					if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+						submit = orderCheckClient.underSpecialReview(auditProecess.getSrcBillId());
+					} else {
+						submit = orderCheckClient.underReview(auditProecess.getSrcBillId());
+					}
 					if (!submit.isSuccess()) {
 						throw new SecurityException("审批开始修改审核状态失败");
 					}
@@ -684,6 +696,11 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 						"" + proecessTemp.getBillNo() + "," + "订单日期:" + orderDate + ",请审核。"
 						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
 					);
+				} else if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					message.setMessageBody("您有销售特批审核,公司名:" + corpName + "," + "采购订单号:" +
+						"" + proecessTemp.getBillNo() + "," + "订单日期:" + orderDate + ",请审核。"
+						+ "提交人:" + proecessTemp.getSendName() + "  " + "提交时间" + simpleDateFormat.format(proecessTemp.getSendTime())
+					);
 				}
 
 				message.setCreateUser(AuthUtil.getUserId());
@@ -697,7 +714,12 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			else if (operate == 2) {
 				auditProecess.setAuditStatus("B");
 				//todo 调用feign取消
-				R r = orderCheckClient.passCancel(auditProecess.getSrcBillId());
+				R r;
+				if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					r = orderCheckClient.passSpecialCancel(auditProecess.getSrcBillId());
+				} else {
+					r = orderCheckClient.passCancel(auditProecess.getSrcBillId());
+				}
 				if (!r.isSuccess()) {
 					throw new SecurityException("修改财务数据失败");
 				}
@@ -706,9 +728,10 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 					sendMessage.setMessageBody("您的销售请核未通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				} else if ("采购审批".equals(proecessTemp.getProcessType())) {
 					sendMessage.setMessageBody("您的采购请核未通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				} else if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					sendMessage.setMessageBody("您的销售特批请核未通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
 
-
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
@@ -722,27 +745,66 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			if (operate == 1) {
 				//todo 调用feign直接通过
 				auditProecess.setAuditStatus("A");
-				R r = orderCheckClient.passCheck(auditProecess.getSrcBillId());
+				R r;
+				if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					r = orderCheckClient.passSpecialCheck(auditProecess.getSrcBillId());
+				} else {
+					r = orderCheckClient.passCheck(auditProecess.getSrcBillId());
+				}
 				if (!r.isSuccess()) {
 					throw new SecurityException(r.getMsg());
 				}
 
-
 				if ("销售审批".equals(proecessTemp.getProcessType())) {
 					sendMessage.setMessageBody("您的销售请核已通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",请继续操作");
 				} else if ("采购审批".equals(proecessTemp.getProcessType())) {
 					sendMessage.setMessageBody("您的采购请核已通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",请继续操作");
+				} else if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					sendMessage.setMessageBody("您的销售特批请核已通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",请继续操作");
 				}
+
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");
 				}
+
+				if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					// 给角色为助理的人发送消息
+					R<String> roleId = sysClient.getRoleIds(AuthUtil.getTenantId(), "助理");
+					if (roleId.isSuccess() && roleId.getData() != null) {
+						R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(roleId.getData()));
+						if (userList.isSuccess() && userList.getData() != null) {
+							userList.getData().forEach(user -> {
+								// 推送消息提醒助理生成采购
+								Message message = new Message();
+								message.setUserName(AuthUtil.getUserName());
+								message.setUserId(AuthUtil.getUserId());
+								message.setToUserId(user.getId());
+								message.setMessageType(1);
+								message.setTenantId(AuthUtil.getTenantId());
+								message.setCreateUser(AuthUtil.getUserId());
+								message.setCreateTime(new Date());
+								message.setParameter(String.valueOf(auditProecess.getBillId()));
+								message.setPageLabel(auditProecess.getPageLabel());
+								message.setPageStatus(auditProecess.getPageStatus());
+								message.setMessageBody("销售订单“" + proecessTemp.getBillNo() + "“已完成收费,请尽快生成采购。");
+								message.setPageLabel("销售订单(N)");
+								messageClient.save(message);
+							});
+						}
+					}
+				}
 			}
 			//不通过
 			else if (operate == 2) {
 				//todo 调用feign取消
 				auditProecess.setAuditStatus("B");
-				R r = orderCheckClient.passCancel(auditProecess.getSrcBillId());
+				R r;
+				if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					r = orderCheckClient.passSpecialCancel(auditProecess.getSrcBillId());
+				} else {
+					r = orderCheckClient.passCancel(auditProecess.getSrcBillId());
+				}
 				if (!r.isSuccess()) {
 					throw new SecurityException("修改财务数据失败");
 				}
@@ -750,7 +812,10 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 					sendMessage.setMessageBody("您的销售请核未通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				} else if ("采购审批".equals(proecessTemp.getProcessType())) {
 					sendMessage.setMessageBody("您的采购请核未通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
+				} else if ("销售特批审批".equals(proecessTemp.getProcessType())) {
+					sendMessage.setMessageBody("您的销售特批请核未通过" + ",销售订单号:" + proecessTemp.getBillNo() + ",驳回原因:" + auditProecess.getAuditMsg());
 				}
+
 				R save = messageClient.save(sendMessage);
 				if (!save.isSuccess()) {
 					throw new SecurityException("发送消息失败");

+ 30 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/controller/OrderController.java

@@ -652,6 +652,36 @@ public class OrderController extends BladeController {
 		orderService.passCancel(id);
 		return R.success("操作成功");
 	}
+
+	/**
+	 * 特批审核通过
+	 */
+	@PostMapping("/passSpecialCheck")
+	public R passSpecialCheck(@RequestParam Long id) {
+		orderService.passSpecialCheck(id);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 特批审核中
+	 */
+	@PostMapping("/underSpecialReview")
+	public R underSpecialReview(@RequestParam Long id) {
+		orderService.underSpecialReview(id);
+		return R.success("操作成功");
+	}
+
+	/**
+	 * 特批审核不通过
+	 */
+	@PostMapping("/passSpecialCancel")
+	@ApiOperationSupport(order = 8)
+	@ApiOperation(value = "Feign-审核不通过", notes = "传入财务id")
+	public R passSpecialCancel(@RequestParam Long id) {
+		orderService.passSpecialCancel(id);
+		return R.success("操作成功");
+	}
+
 	/**
 	 * 撤销审核
 	 */

+ 6 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/IOrderService.java

@@ -104,6 +104,12 @@ public interface IOrderService extends IService<Order> {
 
 	void passCancel(Long id);
 
+	void passSpecialCheck(Long id);
+
+	void underSpecialReview(Long id);
+
+	void passSpecialCancel(Long id);
+
 	/**
 	 * 撤销审核
 	 * @param order

Різницю між файлами не показано, бо вона завелика
+ 345 - 256
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java


+ 44 - 0
blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java

@@ -33,11 +33,15 @@ import org.springblade.check.entity.AuditPathsLevels;
 import org.springblade.check.feign.ICheckClient;
 import org.springblade.client.entity.CorpsBank;
 import org.springblade.client.entity.CorpsDesc;
+import org.springblade.client.entity.Message;
 import org.springblade.client.feign.ICorpsDescClient;
+import org.springblade.client.feign.IMessageClient;
 import org.springblade.client.feign.ISerialClient;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
+import org.springblade.core.tool.utils.CollectionUtil;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.deliver.goods.entity.DeliveryFees;
 import org.springblade.deliver.goods.feign.IDeliveryClient;
 import org.springblade.finance.dto.SettlementDTO;
@@ -60,6 +64,7 @@ import org.springblade.purchase.sales.entity.OrderItems;
 import org.springblade.purchase.sales.feign.IOrderDescClient;
 import org.springblade.purchase.sales.feign.IOrderFeesClient;
 import org.springblade.purchase.sales.feign.IOrderItemsClient;
+import org.springblade.system.feign.ISysClient;
 import org.springblade.system.user.entity.User;
 import org.springblade.system.user.feign.IUserClient;
 import org.springframework.beans.BeanUtils;
@@ -107,10 +112,14 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 	private final IUserClient userClient;
 
+	private final ISysClient sysClient;
+
 	private final IOrderItemsClient orderItemsClient;
 
 	private final IOrderFeesClient orderFeesClient;
 
+	private final IMessageClient messageClient;
+
 	/**
 	 * 溢付款对外访问接口
 	 */
@@ -367,6 +376,41 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 
 		}
 		model.setFinanceStatus("结算完成");
+
+		List<Long> orderIdList = itemsList.stream().filter(e -> "销售".equals(e.getItemType())).map(Items::getSrcParentId).distinct().collect(Collectors.toList());
+		if (CollectionUtil.isNotEmpty(orderIdList)) {
+			orderIdList.forEach(orderId -> {
+				Order order = orderDescClient.getById(orderId);
+				if (ObjectUtil.isNotEmpty(order)) {
+					if (order.getSettlmentAmount().compareTo(order.getDebitAmount()) >= 0) {
+						// 给角色为助理的人发送消息
+						R<String> roleId = sysClient.getRoleIds(AuthUtil.getTenantId(), "助理");
+						if (roleId.isSuccess() && roleId.getData() != null) {
+							R<List<User>> userList = userClient.listUserByRoleId(Long.valueOf(roleId.getData()));
+							if (userList.isSuccess() && userList.getData() != null) {
+								userList.getData().forEach(user -> {
+									// 推送消息提醒助理生成采购
+									Message message = new Message();
+									message.setUserName(AuthUtil.getUserName());
+									message.setUserId(AuthUtil.getUserId());
+									message.setToUserId(user.getId());
+									message.setMessageType(1);
+									message.setTenantId(AuthUtil.getTenantId());
+									message.setCreateUser(AuthUtil.getUserId());
+									message.setCreateTime(new Date());
+									message.setParameter(String.valueOf(order.getId()));
+									message.setPageStatus("this.$store.getters.domSaleStatus");
+									message.setUrl("/businessManagement/salesOrder/index");
+									message.setMessageBody("销售订单“" + order.getOrderNo() + "“已完成收费,请尽快生成采购。");
+									message.setPageLabel("销售订单(N)");
+									messageClient.save(message);
+								});
+							}
+						}
+					}
+				}
+			});
+		}
 		return model;
 		//验证结算总金额是否超限
 		/*if(settlementDTO.getBillType().equals("收费")||settlementDTO.getBillType().equals("付费"))

Деякі файли не було показано, через те що забагато файлів було змінено