Kaynağa Gözat

提交代码

ioioio 4 yıl önce
ebeveyn
işleme
afb8ce7a07
13 değiştirilmiş dosya ile 308 ekleme ve 20 silme
  1. 4 0
      blade-service-api/blade-check-api/src/main/java/org/springblade/check/entity/AuditProecess.java
  2. 29 0
      blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IMessageClient.java
  3. 3 0
      blade-service-api/blade-purchase-sales-api/src/main/java/org/springblade/purchase/sales/entity/Order.java
  4. 3 0
      blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java
  5. 2 1
      blade-service/blade-check/src/main/java/org/springblade/check/controller/AuditProecessController.java
  6. 2 0
      blade-service/blade-check/src/main/java/org/springblade/check/entity/AuditProecess.java
  7. 52 3
      blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java
  8. 1 1
      blade-service/blade-client/src/main/java/org/springblade/client/goods/controller/GoodsDescController.java
  9. 94 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/scheduled/OrderCreditDateCheckTimer.java
  10. 11 7
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java
  11. 91 0
      blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/tools/DateUtils.java
  12. 6 0
      blade-service/trade-finance/src/main/java/org/springblade/finance/service/impl/SettlementServiceImpl.java
  13. 10 8
      blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java

+ 4 - 0
blade-service-api/blade-check-api/src/main/java/org/springblade/check/entity/AuditProecess.java

@@ -126,5 +126,9 @@ public class AuditProecess implements Serializable {
 
 		private Long srcBillId;
 
+		private String url;
+
+		private String processType;
+
 
 }

+ 29 - 0
blade-service-api/blade-client-api/src/main/java/org/springblade/client/feign/IMessageClient.java

@@ -0,0 +1,29 @@
+package org.springblade.client.feign;
+
+import org.springblade.client.entity.Message;
+import org.springblade.client.entity.StorageDesc;
+import org.springblade.common.constant.LauncherConstant;
+import org.springblade.core.tool.api.R;
+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.List;
+import java.util.Map;
+
+@FeignClient(
+	value = LauncherConstant.APPLICATION_CLIENT_NAME
+)
+/**
+ * 仓库信息对外访问API
+ */
+public interface IMessageClient {
+
+
+    @PostMapping("message/save")
+	R save(@RequestBody Message message);
+
+
+}

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

@@ -678,4 +678,7 @@ public class Order implements Serializable {
 	@ApiModelProperty(value = "特价占比")
 	private BigDecimal specialOfferOf;
 
+	@ApiModelProperty(value = "外币-已收/已付账款")
+	private BigDecimal foreignSettlmentAmount;
+
 }

+ 3 - 0
blade-service-api/trade-purchase-api/src/main/java/com/trade/purchase/order/entity/Order.java

@@ -599,4 +599,7 @@ public class Order extends OrderBase {
 	@ApiModelProperty(value = "最迟付款日期")
 	private Date latestDate;
 
+	@ApiModelProperty(value = "外币-已收/已付账款")
+	private BigDecimal foreignSettlmentAmount;
+
 }

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

@@ -19,6 +19,7 @@ package org.springblade.check.controller;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.BeanUtils;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import org.springblade.check.dto.AuditProecessDTO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -78,7 +79,7 @@ public class AuditProecessController extends BladeController {
 	public R list(AuditProecess auditProecess, Query query) {
 		LambdaQueryWrapper<AuditProecess> lambdaQueryWrapper=new LambdaQueryWrapper<>();
 		lambdaQueryWrapper.like(AuditProecess::getAuditUserId, String.valueOf(AuthUtil.getUserId()));
-		lambdaQueryWrapper.eq(AuditProecess::getAuditStatus, "S");
+		lambdaQueryWrapper.eq(StringUtils.isNotBlank(auditProecess.getAuditStatus()),AuditProecess::getAuditStatus, auditProecess.getAuditStatus());
 		IPage pages = auditProecessService.page(Condition.getPage(query), lambdaQueryWrapper);
 		List<AuditProecess> auditProecessList = pages.getRecords();
 		if(CollectionUtils.isNotEmpty(auditProecessList))

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

@@ -136,5 +136,7 @@ public class AuditProecess implements Serializable {
 	    private Integer operate;
 
 		private Long srcBillId;
+	    @ApiModelProperty(value = "审批类型")
+		private String processType;
 
 }

+ 52 - 3
blade-service/blade-check/src/main/java/org/springblade/check/service/impl/AuditProecessServiceImpl.java

@@ -17,6 +17,9 @@
 package org.springblade.check.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import org.springblade.client.entity.Message;
+import org.springblade.client.feign.IMessageClient;
+import org.springblade.core.tool.api.R;
 import org.springblade.finance.feign.IFinanceClient;
 import lombok.AllArgsConstructor;
 import org.springblade.check.dto.AuditProecessDTO;
@@ -52,6 +55,8 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 
     private IFinanceClient financeClient;
 
+    private IMessageClient messageClient;
+
 	@Override
 	public IPage<AuditProecessVO> selectAuditProecessPage(IPage<AuditProecessVO> page, AuditProecessVO auditProecess) {
 		return page.setRecords(baseMapper.selectAuditProecessPage(page, auditProecess));
@@ -112,6 +117,17 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 	@GlobalTransactional
 	public void operationFinanceProcess(AuditProecess auditProecess)
 	{
+		//信息
+		Message message=new Message();
+		message.setUserName(AuthUtil.getUserName());
+		message.setUserId(AuthUtil.getUserId());
+		message.setToUserId(auditProecess.getSendUserId());
+		message.setToUserName(auditProecess.getSendName());
+		message.setMessageType(1);
+		message.setTenantId(AuthUtil.getTenantId());
+		message.setCreateUser(AuthUtil.getUserId());
+		message.setCreateTime(new Date());
+
 		//用户操作 1.通过  2.驳回
 		Integer operate = auditProecess.getOperate();
 		//查看当前审批是否为最后一级
@@ -149,7 +165,18 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			{
 				auditProecess.setAuditStatus("B");
               //todo 调用feign取消
-				financeClient.passCancel(auditProecess.getSrcBillId());
+				R r = financeClient.passCancel(auditProecess.getSrcBillId());
+				if(!r.isSuccess())
+				{
+					throw new SecurityException("修改财务数据失败");
+				}
+
+				message.setMessageBody("您的请核未通过,请查看原因");
+				R save = messageClient.save(message);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
 			}
 
 		}
@@ -161,14 +188,36 @@ public class AuditProecessServiceImpl extends ServiceImpl<AuditProecessMapper, A
 			{
 				//todo 调用feign直接通过
 				auditProecess.setAuditStatus("A");
-				financeClient.passCheck(auditProecess.getSrcBillId());
+				R r = financeClient.passCheck(auditProecess.getSrcBillId());
+				if(!r.isSuccess())
+				{
+					throw new SecurityException("修改财务数据失败");
+				}
+
+
+				message.setMessageBody("您的请核已通过,请继续操作");
+				R save = messageClient.save(message);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
 			}
 			//不通过
 			else if(operate==2)
 			{
 				//todo 调用feign取消
 				auditProecess.setAuditStatus("B");
-				financeClient.passCancel(auditProecess.getSrcBillId());
+				R r = financeClient.passCancel(auditProecess.getSrcBillId());
+				if(!r.isSuccess())
+				{
+					throw new SecurityException("修改财务数据失败");
+				}
+				message.setMessageBody("您的请核未通过,请查看原因");
+				R save = messageClient.save(message);
+				if(!save.isSuccess())
+				{
+					throw new SecurityException("发送消息失败");
+				}
 			}
 		}
 		else

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

@@ -171,7 +171,7 @@ public class GoodsDescController extends BladeController {
 	public R<?> modify(@RequestBody GoodsDesc goodsDesc)
 	{
 		goodsDescService.modify(goodsDesc);
-		return R.success("操作成功");
+		return R.data(goodsDesc);
 	}
 
 	@DeleteMapping("delete")

+ 94 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/scheduled/OrderCreditDateCheckTimer.java

@@ -0,0 +1,94 @@
+package org.springblade.purchase.sales.scheduled;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springblade.client.entity.Message;
+import org.springblade.client.feign.IMessageClient;
+import org.springblade.core.tool.api.R;
+import org.springblade.purchase.sales.entity.Order;
+import org.springblade.purchase.sales.service.IOrderService;
+import org.springblade.purchase.sales.tools.DateUtils;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 定时任务-采购订单-信用到期时间提前2天提醒
+ * */
+@Component
+@Configuration
+@EnableScheduling
+@Slf4j
+@AllArgsConstructor
+public class OrderCreditDateCheckTimer
+{
+    private final IOrderService orderService;
+
+    private final IMessageClient messageClient;
+
+    //每日零点开始检查
+	@Scheduled(cron="0 0 0 * * ?")
+	public void creditDateCheck() throws ParseException {
+		log.info("=================信用到期时间定时任务开启================");
+		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+		Date date=new Date();
+		String todayStr = simpleDateFormat.format(date);
+		//过滤只要年月日的日期
+		Calendar todayCalendar = Calendar.getInstance();
+		todayCalendar.setTime(simpleDateFormat.parse(todayStr));
+		//查找所有订单
+		LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
+		orderLambdaQueryWrapper
+			.eq(Order::getIsDeleted,0)
+			.isNotNull(Order::getCreditDate);
+		List<Order> list = orderService.list(orderLambdaQueryWrapper);
+		if(CollectionUtils.isNotEmpty(list))
+		{
+			log.info("=================信用到期开始检查================");
+			//开始循环检查
+			list.forEach(e->{
+				Calendar targetCalendar = Calendar.getInstance();
+				String creditDateStr = simpleDateFormat.format(e.getCreditDate());
+				try
+				{
+					targetCalendar.setTime(simpleDateFormat.parse(creditDateStr));
+					//开始比较
+					int day = DateUtils.dateDiff('d', targetCalendar, todayCalendar);
+					//只关注还有2天到期的, 之前的不在处理
+					if(day ==2 )
+					{
+
+						Message message=new Message();
+						message.setCreateTime(new Date());
+						message.setToUserId(e.getCreateUser());
+						message.setToUserName(e.getCreateUserName());
+						message.setMessageType(2);
+						message.setMessageBody("订单号为:"+e.getOrderNo()+"的单据,信用证还有2天时间到期, 请及时处理");
+						R save = messageClient.save(message);
+						if(save.isSuccess())
+						{
+							log.info("订单号为:"+e.getOrderNo()+"=========>已发送通知");
+						}
+					}
+
+				}
+				catch (ParseException parseException)
+				{
+					log.info("===============解析时间错误==============");
+				}
+
+			});
+		}
+	}
+}

+ 11 - 7
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/service/impl/OrderServiceImpl.java

@@ -100,15 +100,19 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
 	@Transactional
 	public R saveOrderMessage(Order order) {
 		//校验单号重复
-		LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
-		orderLambdaQueryWrapper
-			.eq(Order::getOrderNo,order.getOrderNo())
-			.eq(Order::getTenantId, AuthUtil.getTenantId());
-		Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
-		if(count!=null&&count>0)
+		if(order.getId()==null)
 		{
-			throw new SecurityException("合同号:"+order.getOrderNo()+"已存在,禁止重复添加");
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.eq(Order::getOrderNo,order.getOrderNo())
+				.eq(Order::getTenantId, AuthUtil.getTenantId());
+			Integer count = baseMapper.selectCount(orderLambdaQueryWrapper);
+			if(count!=null&&count>0)
+			{
+				throw new SecurityException("合同号:"+order.getOrderNo()+"已存在,禁止重复添加");
+			}
 		}
+
 		Date date = new Date();//订单时间
 		//保存订单主表信息
 		if (order.getId() == null){

+ 91 - 0
blade-service/blade-purchase-sales/src/main/java/org/springblade/purchase/sales/tools/DateUtils.java

@@ -0,0 +1,91 @@
+package org.springblade.purchase.sales.tools;
+
+import java.sql.Timestamp;
+import java.util.Calendar;
+import java.util.Date;
+
+public class DateUtils
+{
+
+	// 以毫秒表示的时间
+	private static final long DAY_IN_MILLIS = 24 * 3600 * 1000;
+	private static final long HOUR_IN_MILLIS = 3600 * 1000;
+	private static final long MINUTE_IN_MILLIS = 60 * 1000;
+	private static final long SECOND_IN_MILLIS = 1000;
+
+	/**
+	 * 计算两个时间之间的差值,根据标志的不同而不同
+	 *
+	 * @param flag   计算标志,表示按照年/月/日/时/分/秒等计算
+	 * @param calSrc 减数
+	 * @param calDes 被减数
+	 * @return 两个日期之间的差值
+	 */
+	public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) {
+
+		long millisDiff = getMillis(calSrc) - getMillis(calDes);
+
+		if (flag == 'y') {
+			return (calSrc.get(Calendar.YEAR) - calDes.get(Calendar.YEAR));
+		}
+
+		if (flag == 'd') {
+			return (int) (millisDiff / DAY_IN_MILLIS);
+		}
+
+		if (flag == 'h') {
+			return (int) (millisDiff / HOUR_IN_MILLIS);
+		}
+
+		if (flag == 'm') {
+			return (int) (millisDiff / MINUTE_IN_MILLIS);
+		}
+
+		if (flag == 's') {
+			return (int) (millisDiff / SECOND_IN_MILLIS);
+		}
+
+		return 0;
+	}
+
+	/**
+	 * 系统时间的毫秒数
+	 *
+	 * @return 系统时间的毫秒数
+	 */
+	public static long getMillis() {
+		return System.currentTimeMillis();
+	}
+
+
+	/**
+	 * 指定日历的毫秒数
+	 *
+	 * @param cal 指定日历
+	 * @return 指定日历的毫秒数
+	 */
+	public static long getMillis(Calendar cal) {
+		// --------------------return cal.getTimeInMillis();
+		return cal.getTime().getTime();
+	}
+
+	/**
+	 * 指定日期的毫秒数
+	 *
+	 * @param date 指定日期
+	 * @return 指定日期的毫秒数
+	 */
+	public static long getMillis(Date date) {
+		return date.getTime();
+	}
+
+	/**
+	 * 指定时间戳的毫秒数
+	 *
+	 * @param ts 指定时间戳
+	 * @return 指定时间戳的毫秒数
+	 */
+	public static long getMillis(Timestamp ts) {
+		return ts.getTime();
+	}
+}

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

@@ -452,6 +452,8 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 	public void check(Settlement settlement)
 	{
 		Settlement selectOne = baseMapper.selectById(settlement.getId());
+		List<Items> items = itemsMapper.selectList(new LambdaQueryWrapper<Items>().eq(Items::getPid, settlement.getId()));
+
 		//判断是否有审批流,如果审批流已开启就进入审批流,否则直接走申请通过
 		  AuditPathsActs pathsActs = iCheckClient.getActsByActId(1, "check_status");
 		  //没开启审批流直接走 通过流程
@@ -468,6 +470,10 @@ public class SettlementServiceImpl extends ServiceImpl<SettlementMapper, Settlem
 			  List<AuditPathsLevels> auditPathsLevels = iCheckClient.listLevelsByActId(1, "check_status");
 
 			  AuditProecessDTO auditProecessDTO=new AuditProecessDTO();
+			  //追加跳转路由url
+			  auditProecessDTO.setUrl("to_finance_page");
+			  //增加审批类型
+			  auditProecessDTO.setProcessType("付费审批");
 			  auditProecessDTO.setPathsLevelsList(auditPathsLevels);
 			  auditProecessDTO.setActId(1);
 			  auditProecessDTO.setSrcBillId(selectOne.getId());

+ 10 - 8
blade-service/trade-purchase/src/main/java/com/trade/purchase/order/component/impl/DefaultOrderSaveImpl.java

@@ -80,16 +80,18 @@ public class DefaultOrderSaveImpl implements IOrderSave {
 	 */
 	private Order saveOrder(OrderSubmitDto order) {
         //校验单号重复
-		LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
-		orderLambdaQueryWrapper
-			.eq(Order::getOrderNo,order.getOrderNo())
-			.eq(Order::getTenantId,AuthUtil.getTenantId());
-		Integer count = orderService.selectCount(orderLambdaQueryWrapper);
-		if(count!=null&&count>0)
+		if(order.getId()==null)
 		{
-			throw new SecurityException("合同号:"+order.getOrderNo()+"已存在,禁止重复添加");
+			LambdaQueryWrapper<Order> orderLambdaQueryWrapper=new LambdaQueryWrapper<>();
+			orderLambdaQueryWrapper
+				.eq(Order::getOrderNo,order.getOrderNo())
+				.eq(Order::getTenantId,AuthUtil.getTenantId());
+			Integer count = orderService.selectCount(orderLambdaQueryWrapper);
+			if(count!=null&&count>0)
+			{
+				throw new SecurityException("合同号:"+order.getOrderNo()+"已存在,禁止重复添加");
+			}
 		}
-
 		order.setBillType(order.getBillType());
 		order.setTradeType(order.getTradeType());
 		if (Func.isBlank(order.getSysNo())) {